Home My Page Projects MPTK: The Matching Pursuit ToolKit
Summary Activity Forums Tracker Lists Docs News SCM Files

Forum: help

Monitor Forum | Start New Thread Start New Thread
RE: mpdecomp segfault [ Reply ]
By: aurelien hazan on 2008-10-09 09:38
[forum:98635]
That's it. I was using the default dictionary dic_gabor_two_scales.xml, which has two blocks of length 128 and 16384. The signal had two channels and 1024 time steps.

When I extend signal length to 32768, it no longer segfaults, at least with gabor and mdct blocks.

Thanks for the hint.

RE: mpdecomp segfault [ Reply ]
By: Boris Mailhe on 2008-10-08 09:53
[forum:98614]
Hi,

There seems to be a problem with memory management if the atoms are longer than the signal.

Can you give us more information about the dimensions of your signals and dictionaries, so that we can check if it comes from there ?

Boris

mpdecomp segfault [ Reply ]
By: aurelien hazan on 2008-10-07 16:31
[forum:98589]
Hello,
I'm running openSUSE 10.3 (noyau 2.6.22), with fftw 3.1.2 and Matlab 7.5.0 installed. mpdecomp.mexglx was correctly compiled.

When I run it with single channel signals, it works nicely with the default dictionary.

However, when the signal is composed of two channels, only the anywave dictionary works correctly. When started with gabor, harmonic, chirp, etc... it segfaults with the following message:


Program received signal SIGSEGV, Segmentation fault.

0xb177b790 in MP_FFTW_Interface_c::exec_complex (this=0x882da00, in=0x89b7368, re=0x89560f8, im=0x8966108) at /home/.../MPTK-Source-0.5.6/src/libmptk/fft_interface.cpp:388
388 *(inPrepared+i) = (double)(*(window+i)) * (double)(*(in+i));



The stack trace looks like:
[0] libmptk.so:MP_FFTW_Interface_c::exec_complex(double*, double*, double*)~(0
x0882da00, 0x089b7368, 0x089560f8, 0x08966108) + 64 bytes
[1] GABOR_BLOCK.so:MP_Gabor_Block_Plugin_c::compute_energy(double*, double*, d
ouble*, double*, double*, double*)~(0x0882d950, 0x089b7368, 0x08976118, 0x089861
28) + 57 bytes
[2] GABOR_BLOCK.so:MP_Gabor_Block_Plugin_c::update_frame(unsigned long, double
*, unsigned long*)~(0x0882d950, 448, 0xb3802590, 0xb380259c) + 141 bytes
[3] libmptk.so:MP_Block_c::update_ip(MP_Support_t const*)~(0xb38025e0, 0x0882d
950, 0x088ccbe0, 0) + 343 bytes
[4] libmptk.so:MP_Dict_c::update()~(0x0882d8b0, 0, 0xb3802628, 0xb7687f57) + 1
14 bytes
[5] libmptk.so:MP_Dict_c::iterate_mp(MP_Book_c*, MP_Signal_c*)~(0x0882d8b0, 0x
085fdde8, 0, 0x01daa856) + 50 bytes


I wasn't able to find hints in the forums of in the bug tracker; any advice would be welcome.

Thanks!