ricedsp/rwt — Issue #1: unable to correctly compile in linux
Author: hanjiepan
Created: 2011-11-05 13:11:59+00:00
State: open

I run into trouble when I try to compile the mex files in the toolbox with "compile.m". I have several warnings as follows:

mdwt_r.c:81: warning: cast to pointer from integer of different size
mdwt_r.c:82: warning: cast to pointer from integer of different size
mdwt_r.c:83: warning: cast to pointer from integer of different size
mdwt_r.c:84: warning: cast to pointer from integer of different size
mdwt_r.c:85: warning: cast to pointer from integer of different size

midwt_r.c:86: warning: cast to pointer from integer of different size
midwt_r.c:87: warning: cast to pointer from integer of different size
midwt_r.c:88: warning: cast to pointer from integer of different size
midwt_r.c:89: warning: cast to pointer from integer of different size
midwt_r.c:90: warning: cast to pointer from integer of different size

mrdwt_r.c:96: warning: cast to pointer from integer of different size
mrdwt_r.c:97: warning: cast to pointer from integer of different size
mrdwt_r.c:98: warning: cast to pointer from integer of different size
mrdwt_r.c:99: warning: cast to pointer from integer of different size
mrdwt_r.c:100: warning: cast to pointer from integer of different size
mrdwt_r.c:101: warning: cast to pointer from integer of different size
mrdwt_r.c:102: warning: cast to pointer from integer of different size
mrdwt_r.c:103: warning: cast to pointer from integer of different size

mirdwt_r.c:95: warning: cast to pointer from integer of different size
mirdwt_r.c:96: warning: cast to pointer from integer of different size
mirdwt_r.c:97: warning: cast to pointer from integer of different size
mirdwt_r.c:98: warning: cast to pointer from integer of different size
mirdwt_r.c:99: warning: cast to pointer from integer of different size
mirdwt_r.c:100: warning: cast to pointer from integer of different size
mirdwt_r.c:101: warning: cast to pointer from integer of different size
mirdwt_r.c:102: warning: cast to pointer from integer of different size
mirdwt_r.c:103: warning: cast to pointer from integer of different size

If I ignore them, then I can still call wavelet anslysis wrdwt. But as soon as I try to call "mirdwt", then matlab crashes with errors associated with the mex file:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
------------------------------------------------------------------------
Segmentation violation detected at Sat Nov 5 21:10:00 2011
------------------------------------------------------------------------

Configuration:
MATLAB Version: 7.6.0.324 (R2008a)
MATLAB License: 60557
Operating System: Linux 2.6.16.60-0.21-smp #1 SMP Tue May 6 12:41:02 UTC 2008 x86_64
GNU C Library: 2.4 stable
Window System: No active display
Current Visual: None
Processor ID: x86 Family 6 Model 15 Stepping 11, GenuineIntel
Virtual Machine: Java 1.6.0_01 with Sun Microsystems Inc. Java HotSpot(TM) 64-Bit Server VM mixed mode
Default Encoding: UTF-8

Fault Count: 1

Register State:
rax = 0000000000000000 rbx = 00002aaac61ab020
rcx = 0000000000b71930 rdx = c000f876ccdf6d00
rbp = 00000000407fa3a0 rsi = 0000000000b71110
rdi = 0000000000000000 rsp = 00000000407fa270
r8 = ffffffffc622c020 r9 = 0000000000000040
r10 = 0000000000b73be8 r11 = 0000000000bd26e0
r12 = 0000000000000004 r13 = 0000000000000000
r14 = 0000000000b739e0 r15 = 0000000000000001
rip = 00002aaac60aa25e flg = 0000000000010246

Stack Trace:
[0] mirdwt.mexa64:0x00002aaac60aa25e(0x2aaac6028020, 0x2aaac6e2c020, 0x407faef0 ", 2304)
[1] mirdwt.mexa64:mexFunction~(0x100000004, 0x2b28fa4dd6ad, 0x127f407fa490, 0x407fafd0) + 711 bytes
[2] libmex.so:mexRunMexFile(0, 0x407fafb0 ", 0x4407fabc0, 0x407faef0 ") + 75 bytes
[3] libmex.so:Mfh_mex::runMexFileWithSignalProtection(int, mxArray_tag**, int, mxArray_tag**)(0x407faa70, 0x407fa670, 0x407fafb0 ", 0x2aaac47de400) + 137 bytes
[4] libmex.so:Mfh_mex::dispatch_file(int, mxArray_tag**, int, mxArray_tag**)(0x407fafb0 ", 0x4407fba90, 0x2aaac47de400, 0x407fc230 ") + 262 bytes
[5] libmwm_dispatcher.so:Mfh_file::dispatch_fh(int, mxArray_tag**, int, mxArray_tag**)(0x407fac00, 0xffffffff00000001, 0x00b70ae0, 4) + 236 bytes
[6] libmwm_interpreter.so:ResolverFunctionDesc::CallFunction(int, mxArray_tag**, int, mxArray_tag**)(0x2aaa00000001, 0x407fac60, 0x2b28fb939930, 0x407fb160 ") + 786 bytes
[7] libmwm_interpreter.so:Resolver::CallMFunction(int, int, _m_operand*, m_operand_storage*, int, _m_operand*, m_operand_storage*, int*)(0x00b70920, 0, 0x407fbc60, 0) + 1672 bytes
[8] libmwm_interpreter.so:inResolveMFunctionCall(_m_function_desc*, int, int, _m_operand*, m_operand_storage*, int, _m_operand*, m_operand_storage*, int*, inMarshalType*, int, mpsTypeSequenceNlhs const*, mxArray_tag* (*)(int))(0x00b70920, 0, 0x407fbc60, 0x407fbdf8) + 517 bytes
[9] libmwm_interpreter.so:accelImpl::MFunctionCall(_accelOp**)(0x407fbc40 ", 0x407fbc60, 0x1700b67450, 0x2aaac45c4120 ") + 242 bytes
[10] libmwm_interpreter.so:accelImpl::Exec()(0x407fbdf8, 0x407fbdf0, 0x00b6d2e0, 0x007fbae0) + 238 bytes
[11] libmwm_interpreter.so:accelCode::Call(inMarshalType*, int*) const(1, 0x407fbdff, 0x2b29035c3e00 ", 0x407fbdd0 "àª¶") + 91 bytes
[12] libmwm_interpreter.so:inJit::ExecuteHotSegment(_inJitAccelInfo*, opcodes*, int*, long*)(3, 0x407fbe80, 0x407fbecc, 0x2aaac5b852a0) + 1664 bytes
[13] libmwm_interpreter.so:inExecuteMFunctionOrScript(Mfh_mp*, bool)(0, 0, 0x407fbf60, 0x407fc0b0) + 1108 bytes
[14] libmwm_interpreter.so:inRunMfile(int, mxArray_tag**, int, mxArray_tag**, Mfh_mp*, inWorkSpace_tag*)(0x407fc3b0 ", 0x3407fc250, 0x00b67450, 0x407fcef0 ") + 666 bytes
[15] libmwm_dispatcher.so:Mfh_file::dispatch_fh(int, mxArray_tag**, int, mxArray_tag**)(0x407fc2e0, 0x100000003, 0x407fc200, 0x2b28fa657b80 ") + 236 bytes
[16] libmwm_interpreter.so:inDispatchFromStack(int, char const*, int, int)(0x407fc6cc, 0x2b000000003, 0x2b290351aa6c "w_syn2D_rwt", 0x100000000) + 1062 bytes
[17] libmwm_interpreter.so:inDispatchCall(char const*, int, long, int, int*, int*)(0, 0x0091d0c0, 0x2aaa0000000e, 0x407fc6d0) + 165 bytes
[18] libmwm_interpreter.so:inInterp(inDebugCheck, int, int, opcodes, inPcodeNest_tag volatile*, long*)(0x407fcb78, 0x2aaac5bcdab0 ", 0x100000000, 0x100000000) + 4321 bytes
[19] libmwm_interpreter.so:protected_inInterp(inDebugCheck, int, int, opcodes, inPcodeNest_tag*, long*)(0x00b67750, 0x00a349f0, 0x00b67750, 0x2bde273ad41cc6) + 140 bytes
[20] libmwm_interpreter.so:inInterPcodeSJ(inDebugCheck, int, int, opcodes, inPcodeNest_tag*, long*)(0, 0x407fcb40, 0x407fcb8c, 0) + 265 bytes
[21] libmwm_interpreter.so:inExecuteMFunctionOrScript(Mfh_mp*, bool)(0, 1, 0x2aaac40a1170 ", 0x407fcd70) + 680 bytes
[22] libmwm_interpreter.so:inRunMfile(int, mxArray_tag**, int, mxArray_tag**, Mfh_mp*, inWorkSpace_tag*)(0, 0xfcc4e9a0, 0x00b67750, 0x407fde90) + 666 bytes
[23] libmwm_dispatcher.so:Mfh_file::dispatch_fh(int, mxArray_tag**, int, mxArray_tag**)(0x407fcf90, 0, 0x407fdc50, 0x407fdad0) + 236 bytes
[24] libmwm_interpreter.so:inEvalPcodeHeaderToWord(_memory_context*, int, mxArray_tag**, _pcodeheader*, Mfh_mp*, unsigned int)(0x407fcfb0, 0x407fd150, 0x407fdca0, 0) + 187 bytes
[25] libmwm_interpreter.so:in_local_call_script_function(_memory_context*, _pcodeheader*, int, mxArray_tag**, unsigned int, bool)(0x407fd9b0, 0x407fdb60, 0x407fda50, 0x00b67da0) + 103 bytes
[26] libmwm_interpreter.so:inEvalStringWithIsVarFcn(_memory_context*, char const*, EvalType, int, mxArray_tag**, inDebugCheck, _pcodeheader*, int*, bool (*)(void*, char const*), void*, bool, bool)(0, 0, 0x2b28fb44ff60, 0) + 1529 bytes
[27] libmwm_interpreter.so:inEvalCmdWithLocalReturn(char const*, int*, bool, bool, bool (*)(void*, char const*))(0x407fdd10, 0x00b61490 "tmp2=w_syn2D_rwt(tmp,F_scal,3);\", 0x407fde50, 0) + 149 bytes
[28] libmwbridge.so:evalCommandWithLongjmpSafety(char const*)(0, 0, 0, 0) + 94 bytes
[29] libmwbridge.so:mnParser(0x00580790, 0x00580920, 0x40800160, 7) + 291 bytes
[30] libmwmcr.so:mcrInstance::mnParser()(0x636f6c2f7273752f, 0x616c74616d2f6c61, 0x6c672f6e69622f62, 0x343661786e) + 82 bytes

This error was detected while a MEX-file was running. If the MEX-file
is not an official MathWorks function, please examine its source code
for errors. Please consult the External Interfaces Guide for information
on debugging MEX-files.

If it is an official MathWorks function, please
follow these steps to report this problem to The MathWorks so we
have the best chance of correcting it:

The next time MATLAB is launched under typical usage, a dialog box will
open to help you send the error log to The MathWorks. Alternatively, you
can send an e-mail to segv@mathworks.com with the following file attached:
/users/student/s1010096720/matlab_crash_dump.22263

If the problem is reproducible, please submit a Service Request via:
http://www.mathworks.com/support/contact_us/ts/help_request_1.html

A technical support engineer might contact you with further information.

Thank you for your help. MATLAB may attempt to recover, but even if recovery appears successful,
we recommend that you save your workspace and restart MATLAB as soon as possible.

Attempt to restart MATLAB? [y or n]

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

So I wonder is there any fix for this or do you have any precompiled files for 64-bit linux available?
btw, I am using gcc version 4.1.2 20070115 in a SUSE Linux Server.

Thanks a lot.