brummer10 / guitarix

guitarix virtual versatile amplification for Jack/Linux
234 stars 24 forks source link

Segmentation fault as LV2 plugin under lmms #137

Closed psilhavy closed 6 months ago

psilhavy commented 6 months ago

guitarx V0.44.1 lmms current master

LV2 plugin "GxAmplifireStereo-X" gx_amp_stereo.so


Thread 28 "lmms" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ff677fff6c0 (LWP 32476)]
0x00007ff6e44a2b04 in _mid_memalign.isra.0 () from /lib64/libc.so.6
(gdb) bt
#0  0x00007ff6e44a2b04 in _mid_memalign.isra.0 () at /lib64/libc.so.6
#1  0x00007ff6e5e270e5 in fftwf_malloc_plain () at /usr/lib64/libfftw3f.so.3
#2  0x00007ff6e5e2a7e9 in fftwf_mkproblem () at /usr/lib64/libfftw3f.so.3
#3  0x00007ff6e5e31c67 in fftwf_mkproblem_dft () at /usr/lib64/libfftw3f.so.3
#4  0x00007ff6e5e31d70 in fftwf_mkproblem_dft_d () at /usr/lib64/libfftw3f.so.3
#5  0x00007ff6e5e6e6e8 in  () at /usr/lib64/libfftw3f.so.3
#6  0x00007ff6e5e29632 in  () at /usr/lib64/libfftw3f.so.3
#7  0x00007ff6e5eeedb9 in  () at /usr/lib64/libfftw3f.so.3
#8  0x00007ff6e5eeefd8 in fftwf_mkapiplan () at /usr/lib64/libfftw3f.so.3
#9  0x00007ff6e5ef2bf6 in fftwf_plan_many_dft_r2c ()
    at /usr/lib64/libfftw3f.so.3
#10 0x00007ff6e5ef2165 in fftwf_plan_dft_r2c () at /usr/lib64/libfftw3f.so.3
#11 0x00007ff6e5ef20d3 in fftwf_plan_dft_r2c_1d () at /usr/lib64/libfftw3f.so.3
#12 0x00007ff6b5ff09c2 in Convlevel::configure(int, unsigned int, unsigned int, unsigned int, unsigned int) () at /usr/local/lib64/libzita-convolver.so.4
#13 0x00007ff6b5ff30a1 in Convproc::configure(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, float) ()
    at /usr/local/lib64/libzita-convolver.so.4
#14 0x00007ff6d9b533d6 in  ()
    at /usr/local/lib64/lv2/gx_amp_stereo.lv2/gx_amp_stereo.so
#15 0x00007ff6d9b39e3d in  ()
    at /usr/local/lib64/lv2/gx_amp_stereo.lv2/gx_amp_stereo.so
#16 0x00007ff6d9b394d9 in  ()
    at /usr/local/lib64/lv2/gx_amp_stereo.lv2/gx_amp_stereo.so
#17 0x000000000062996d in lmms::Lv2Worker::workerFunc() (this=0xc219830)
    at /usr/src/lmms-master-2/src/core/lv2/Lv2Worker.cpp:167
#18 0x00007ff6e48e4453 in  () at /usr/lib64/libstdc++.so.6
#19 0x00007ff6e4492cc2 in start_thread () at /lib64/libc.so.6
#20 0x00007ff6e451e228 in clone3 () at /lib64/libc.so.6
brummer10 commented 6 months ago

Maybe your buffer size is not power of 2? Could you try the last guitarix version from master, there should be some fixes implemented?

psilhavy commented 6 months ago

Which buffer ? How to check it (gdb/lldb) ? Only visible buffer is audio output which is set to 256.

On current master b1c686212332d1ea40683262bf95ad2b486b2bb6 backtrace

Thread 12 "lmms::AudioEngi" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7f9e13fff6c0 (LWP 28604)]
0x00007f9e35ca2b04 in _mid_memalign.isra.0 () from /lib64/libc.so.6
(gdb) bt
#0  0x00007f9e35ca2b04 in _mid_memalign.isra.0 () at /lib64/libc.so.6
#1  0x00007f9e374270e5 in fftwf_malloc_plain () at /usr/lib64/libfftw3f.so.3
#2  0x00007f9e3742aec3 in fftwf_mktensor () at /usr/lib64/libfftw3f.so.3
#3  0x00007f9e3742ba49 in  () at /usr/lib64/libfftw3f.so.3
#4  0x00007f9e3742bb10 in fftwf_tensor_compress_contiguous ()
    at /usr/lib64/libfftw3f.so.3
#5  0x00007f9e3742bdbb in fftwf_tensor_inplace_locations ()
    at /usr/lib64/libfftw3f.so.3
#6  0x00007f9e37431cd4 in fftwf_mkproblem_dft () at /usr/lib64/libfftw3f.so.3
#7  0x00007f9e37431d70 in fftwf_mkproblem_dft_d () at /usr/lib64/libfftw3f.so.3
#8  0x00007f9e3746e6e8 in  () at /usr/lib64/libfftw3f.so.3
#9  0x00007f9e37429269 in  () at /usr/lib64/libfftw3f.so.3
#10 0x00007f9e374294f7 in  () at /usr/lib64/libfftw3f.so.3
#11 0x00007f9e37429aa0 in fftwf_mkplan_d () at /usr/lib64/libfftw3f.so.3
#12 0x00007f9e3746f6b0 in  () at /usr/lib64/libfftw3f.so.3
#13 0x00007f9e3746e3e0 in  () at /usr/lib64/libfftw3f.so.3
#14 0x00007f9e37429269 in  () at /usr/lib64/libfftw3f.so.3
#15 0x00007f9e374294f7 in  () at /usr/lib64/libfftw3f.so.3
#16 0x00007f9e374eee23 in  () at /usr/lib64/libfftw3f.so.3
#17 0x00007f9e374eefd8 in fftwf_mkapiplan () at /usr/lib64/libfftw3f.so.3
#18 0x00007f9e374f2bf6 in fftwf_plan_many_dft_r2c ()
    at /usr/lib64/libfftw3f.so.3
#19 0x00007f9e374f2165 in fftwf_plan_dft_r2c () at /usr/lib64/libfftw3f.so.3
--Type <RET> for more, q to quit, c to continue without paging--
#20 0x00007f9e374f20d3 in fftwf_plan_dft_r2c_1d () at /usr/lib64/libfftw3f.so.3
#21 0x00007f9e181aa9c2 in Convlevel::configure(int, unsigned int, unsigned int, unsigned int, unsigned int) () at /usr/local/lib64/libzita-convolver.so.4
#22 0x00007f9e181ad0a1 in Convproc::configure(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, float) ()
    at /usr/local/lib64/libzita-convolver.so.4
#23 0x00007f9df311f3d6 in  ()
    at /usr/local/lib64/lv2/gx_amp_stereo.lv2/gx_amp_stereo.so
#24 0x00007f9df3105e3d in  ()
    at /usr/local/lib64/lv2/gx_amp_stereo.lv2/gx_amp_stereo.so
#25 0x00007f9df31054d9 in  ()
    at /usr/local/lib64/lv2/gx_amp_stereo.lv2/gx_amp_stereo.so
#26 0x000000000062905e in lmms::Lv2Worker::scheduleWork(unsigned int, void const*) (this=0x299cd90, size=<optimized out>, data=0xb08dba8)
    at /usr/src/lmms-master-2/src/core/lv2/Lv2Worker.cpp:198
#27 0x00007f9df3106304 in  ()
    at /usr/local/lib64/lv2/gx_amp_stereo.lv2/gx_amp_stereo.so
#28 0x00000000006190f5 in lilv_instance_run
    (sample_count=256, instance=<optimized out>)
    at /usr/include/lilv-0/lilv/lilv.h:1935
#29 lmms::Lv2Proc::run(short) (this=0x299cc50, frames=frames@entry=256)
    at /usr/src/lmms-master-2/src/core/lv2/Lv2Proc.cpp:379
#30 0x00000000006143d6 in lmms::Lv2ControlBase::run(short)
--Type <RET> for more, q to quit, c to continue without paging--
    (this=this@entry=0x7f9e32bd26b0, frames=frames@entry=256)
    at /usr/src/lmms-master-2/src/core/lv2/Lv2ControlBase.cpp:176
#31 0x00007f9e101fbbbb in lmms::Lv2Effect::processAudioBuffer(std::array<float, 2ul>*, short) (this=0x7f9e32bd2080, buf=0x8f32fd0, frames=<optimized out>)
    at /usr/src/lmms-master-2/plugins/Lv2Effect/Lv2Effect.cpp:79
#32 0x000000000059be77 in lmms::EffectChain::processAudioBuffer(std::array<float, 2ul>*, short, bool)
    (this=this@entry=0x2c29c10, _buf=0x8f32fd0, _frames=_frames@entry=256, hasInputNoise=true) at /usr/src/lmms-master-2/src/core/EffectChain.cpp:201
#33 0x00000000005a23ec in lmms::MixerChannel::doProcessing() (this=0x2c29c00)
    at /usr/src/lmms-master-2/src/core/Mixer.cpp:172
#34 0x0000000000566bfa in lmms::ThreadableJob::process() (this=0x2c29c00)
    at /usr/src/lmms-master-2/include/ThreadableJob.h:77
#35 lmms::AudioEngineWorkerThread::JobQueue::run()
    (this=this@entry=0x823660 <lmms::AudioEngineWorkerThread::globalJobQueue>)
    at /usr/src/lmms-master-2/src/core/AudioEngineWorkerThread.cpp:88
#36 0x0000000000566ec6 in lmms::AudioEngineWorkerThread::run() (this=0x254c4f0)
    at /usr/src/lmms-master-2/src/core/AudioEngineWorkerThread.cpp:178
#37 0x00007f9e364d3989 in  () at /usr/lib64/libQt5Core.so.5
#38 0x00007f9e35c92cc2 in start_thread () at /lib64/libc.so.6
#39 0x00007f9e35d1e228 in clone3 () at /lib64/libc.so.6
brummer10 commented 6 months ago

Yea, I mean the audio buffer size. 256 is suitable. I would suggest to try guitarix from master branch and build it with the --includeconvoler flag. As I said, some issues with the convolver been fixed in latest master.

psilhavy commented 6 months ago

./waf configure --includeconvolver --no-avahi --lv2dir=/usr/local/lib64/lv2 --libdir=/usr/local/lib64

../src/LV2/DSP/gx_common.h:68:5: error: ‘uint32_t’ does not name a type  68 |     uint32_t mxcsr_mask;
after added "#include <cstdint>"

to src/LV2/DSP/gx_common.h build passed

Thread 7 "lmms::AudioEngi" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7f0ca7c476c0 (LWP 2496)]
0x00007f0cad62e36d in fftwf_ct_applicable () from /usr/lib64/libfftw3f.so.3
(gdb) bt
#0  0x00007f0cad62e36d in fftwf_ct_applicable () at /usr/lib64/libfftw3f.so.3
#1  0x00007f0cad62e45b in  () at /usr/lib64/libfftw3f.so.3
#2  0x00007f0cad629269 in  () at /usr/lib64/libfftw3f.so.3
#3  0x00007f0cad6294f7 in  () at /usr/lib64/libfftw3f.so.3
#4  0x00007f0cad629aa0 in fftwf_mkplan_d () at /usr/lib64/libfftw3f.so.3
#5  0x00007f0cad66e7d0 in  () at /usr/lib64/libfftw3f.so.3
#6  0x00007f0cad629269 in  () at /usr/lib64/libfftw3f.so.3
#7  0x00007f0cad6294f7 in  () at /usr/lib64/libfftw3f.so.3
#8  0x00007f0cad629aa0 in fftwf_mkplan_d () at /usr/lib64/libfftw3f.so.3
#9  0x00007f0cad66f6b0 in  () at /usr/lib64/libfftw3f.so.3
#10 0x00007f0cad66e54f in  () at /usr/lib64/libfftw3f.so.3
#11 0x00007f0cad629269 in  () at /usr/lib64/libfftw3f.so.3
#12 0x00007f0cad6294f7 in  () at /usr/lib64/libfftw3f.so.3
#13 0x00007f0cad6eeeb8 in  () at /usr/lib64/libfftw3f.so.3
#14 0x00007f0cad6eefd8 in fftwf_mkapiplan () at /usr/lib64/libfftw3f.so.3
#15 0x00007f0cad6f2a79 in fftwf_plan_many_dft_c2r ()
    at /usr/lib64/libfftw3f.so.3
#16 0x00007f0cad6f20a5 in fftwf_plan_dft_c2r () at /usr/lib64/libfftw3f.so.3
#17 0x00007f0cad6f2013 in fftwf_plan_dft_c2r_1d () at /usr/lib64/libfftw3f.so.3
#18 0x00007f0c685dde2a in  ()
    at /usr/local/lib64/lv2/gx_amp_stereo.lv2/gx_amp_stereo.so
#19 0x00007f0c685de8f5 in  ()
    at /usr/local/lib64/lv2/gx_amp_stereo.lv2/gx_amp_stereo.so
--Type <RET> for more, q to quit, c to continue without paging--
#20 0x00007f0c685dd622 in  ()
    at /usr/local/lib64/lv2/gx_amp_stereo.lv2/gx_amp_stereo.so
#21 0x00007f0c685c3fad in  ()
    at /usr/local/lib64/lv2/gx_amp_stereo.lv2/gx_amp_stereo.so
#22 0x00007f0c685c3639 in  ()
    at /usr/local/lib64/lv2/gx_amp_stereo.lv2/gx_amp_stereo.so
#23 0x000000000062905e in lmms::Lv2Worker::scheduleWork(unsigned int, void const*) (this=0xc1ed520, size=<optimized out>, data=0xc1b98a8)
    at /usr/src/lmms-master-2/src/core/lv2/Lv2Worker.cpp:198
#24 0x00007f0c685c4474 in  ()
    at /usr/local/lib64/lv2/gx_amp_stereo.lv2/gx_amp_stereo.so
#25 0x00000000006190f5 in lilv_instance_run
    (sample_count=256, instance=<optimized out>)
    at /usr/include/lilv-0/lilv/lilv.h:1935
#26 lmms::Lv2Proc::run(short) (this=0xc1ed3e0, frames=frames@entry=256)
    at /usr/src/lmms-master-2/src/core/lv2/Lv2Proc.cpp:379
#27 0x00000000006143d6 in lmms::Lv2ControlBase::run(short)
    (this=this@entry=0x7f0ca8c686b0, frames=frames@entry=256)
    at /usr/src/lmms-master-2/src/core/lv2/Lv2ControlBase.cpp:176
#28 0x00007f0c6a4aebbb in lmms::Lv2Effect::processAudioBuffer(std::array<float, 2ul>*, short) (this=0x7f0ca8c68080, buf=0xc146230, frames=<optimized out>)
    at /usr/src/lmms-master-2/plugins/Lv2Effect/Lv2Effect.cpp:79
#29 0x000000000059be77 in lmms::EffectChain::processAudioBuffer(std::array<float--Type <RET> for more, q to quit, c to continue without paging--
, 2ul>*, short, bool)
    (this=this@entry=0x322dc10, _buf=0xc146230, _frames=_frames@entry=256, hasInputNoise=true) at /usr/src/lmms-master-2/src/core/EffectChain.cpp:201
#30 0x00000000005a23ec in lmms::MixerChannel::doProcessing() (this=0x322dc00)
    at /usr/src/lmms-master-2/src/core/Mixer.cpp:172
#31 0x0000000000566bfa in lmms::ThreadableJob::process() (this=0x322dc00)
    at /usr/src/lmms-master-2/include/ThreadableJob.h:77
#32 lmms::AudioEngineWorkerThread::JobQueue::run()
    (this=this@entry=0x823660 <lmms::AudioEngineWorkerThread::globalJobQueue>)
    at /usr/src/lmms-master-2/src/core/AudioEngineWorkerThread.cpp:88
#33 0x0000000000566ec6 in lmms::AudioEngineWorkerThread::run() (this=0x2be7ab0)
    at /usr/src/lmms-master-2/src/core/AudioEngineWorkerThread.cpp:178
#34 0x00007f0cac4d3989 in  () at /usr/lib64/libQt5Core.so.5
#35 0x00007f0cabc92cc2 in start_thread () at /lib64/libc.so.6
#36 0x00007f0cabd1e228 in clone3 () at /lib64/libc.so.6
brummer10 commented 6 months ago

after added "#include <cstdint>" to src/LV2/DSP/gx_common.h build passed

This seems not to be the latest master version from github as this is fixed since Jan. 31. 2023 see here: https://github.com/brummer10/guitarix/blob/master/trunk/src/LV2/DSP/gx_common.h#L25

Try this to get the latest:

git clone --recursive https://github.com/brummer10/guitarix.git
cd guitarix/trunk
./waf configure --includeconvolver --no-avahi --lv2dir=/usr/local/lib64/lv2 --libdir=/usr/local/lib64
sudo ./waf install

you may deinstall guitarix from your distribution before install guitarix from git to avoid symbol clashing!!

psilhavy commented 6 months ago

Works fine! Thank you for your cooperation and patience.

BTW maybe the message officially mirror of https://sourceforge.net/p/guitarix/git/ci/master/tree/ on your github is misleading for other people too.