I am using the Intel Compiler v11.1 on Snow Leopard. I am able to compiler my library as 32-bit using -m32. When changing to 64-bit (-m64) I get the following error:
Linking CXX shared library MEXAllocateAlignedMemory.mexmaci64
Assertion failed: (truncated uleb128 expression), function getULEB128, file /usr/local/include/libunwind/AddressSpace.hpp, line 152.
icpc: error #10106: Fatal error in ld, terminated by IOT instruction
The above code simply allocates aligned memory for other functions using the following:
temp_ptr = (void*)ippsMalloc_64f((int)(size));
Where is the error coming from?
Thank you for any help,
I don't think this is due to the IPP function, per se. Some searching on the web for SIGIOT reveals that you may have a bad pointer (perhaps the malloc didn't happen?). One source says this:
The IOT stands for "I/O Trap" but you should just think "bad pointer" and it is the same as segment violation (SEGV). If you really want, you can look in /usr/include/bits/signum.h . It is a little confusing in that a bad pointer can cause SIGIOT, SIGBUS, SIGSEGV but differences are for legacy reasons.
Unfortunately, it means that there is either a mismatch between the libraries resulting in memory corruption, or, more likely, something is not being initialized properly. It is hard to say what the problem might be. There may still be some other link option that you need, or something like that.
Memory allocation alignment problem? Stack problems? Check out this article, it might help: Determining Root Cause of SIGSEGV or SIGBUS errors