Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Lv2 Worker #6484

Merged
merged 8 commits into from
Sep 24, 2023
Merged

Implement Lv2 Worker #6484

merged 8 commits into from
Sep 24, 2023

Conversation

JohannesLorenz
Copy link
Contributor

@JohannesLorenz JohannesLorenz commented Aug 10, 2022

Open for code review, build errors fixed.

This enables a lot of new interesting synths:

amsynth 
drumkv1 
Black Pearl Drumkit 
Black Pearl Drumkit Multi 
Red Zeppelin Drumkit 
Red Zeppelin Drumkit Multi 
setBfree DSP Tonewheel Organ 
LV2 Convolution Mono 
LV2 Convolution Mono=>Stereo 
LV2 Convolution Stereo 
Midi Event Map 
x42 - IR Convolver Mono 
x42 - IR Convolver Mono => Stereo 
x42 - IR Convolver Stereo 
x42 - Preset Convolver Mono 
x42 - Preset Convolver Mono => Stereo 
x42 - Preset Convolver Stereo 
GxAmplifier-X 
GxAmplifier-Stereo-X 
GxCabinet 
Gxdetune 
Exampler 
Mephisto Audio 1x1 
Mephisto Audio 2x2 
Moony C1 x C1 
Moony C2 x C2 
Moony C4 x C4 
padthv1 
samplv1 
sfizz 
sfizz 
liquidsfz 
synthv1 
Dragonfly Hall Reverb 
Wolf Shaper 
Ninjas 2 
Dragonfly Plate Reverb 
Dragonfly Room Reverb 
ZaMultiComp 
ZamHeadX2 
ZamVerb

Closes #6460 .

@LmmsBot
Copy link

LmmsBot commented Aug 10, 2022

🤖 Hey, I'm @LmmsBot from github.com/lmms/bot and I made downloads for this pull request, click me to make them magically appear! 🎩

Windows

Linux

🤖
{"platform_name_to_artifacts": {"Windows": [{"artifact": {"title": {"title": "32-bit", "platform_name": "Windows"}, "link": {"link": "https://output.circle-artifacts.com/output/job/ef0317b0-81db-404a-94f9-6c933f51e7e6/artifacts/0/lmms-1.3.0-alpha.1.226+gfeebe2f00-mingw-win32.exe"}}, "build_link": "https://circleci.com/gh/LMMS/lmms/17972?utm_campaign=vcs-integration-link&utm_medium=referral&utm_source=github-build-link"}, {"artifact": {"title": {"title": "64-bit", "platform_name": "Windows"}, "link": {"link": "https://output.circle-artifacts.com/output/job/02c20f6b-1c81-4ec1-aa2e-af67eb4abde1/artifacts/0/lmms-1.3.0-alpha.1.226+gfeebe2f00-mingw-win64.exe"}}, "build_link": "https://circleci.com/gh/LMMS/lmms/17968?utm_campaign=vcs-integration-link&utm_medium=referral&utm_source=github-build-link"}], "Linux": [{"artifact": {"title": {"title": "(AppImage)", "platform_name": "Linux"}, "link": {"link": "https://output.circle-artifacts.com/output/job/c7bdff44-6020-4424-979a-a0408ff5cbfc/artifacts/0/lmms-1.3.0-alpha.1.226+gfeebe2f00-linux-x86_64.AppImage"}}, "build_link": "https://circleci.com/gh/LMMS/lmms/17971?utm_campaign=vcs-integration-link&utm_medium=referral&utm_source=github-build-link"}]}, "commit_sha": "ddbc9ffc9f357e0b387056274da4b388cc35292f"}

@zonkmachine
Copy link
Member

zonkmachine commented Aug 14, 2022

So far mostly working well. I get an easily reproducible crash with guitarix plugins GxCabinet and GxAmplifier-X.
GxAmplifier-Stereo -X has also acted up but it's not as obvious and reproducible.

Method to reproduce:
load GxCabinet
press play
turn knob Cab Model... crash!

bt full

Thread 42 "lmms" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fff1affd640 (LWP 32785)]
__pthread_kill_implementation (no_tid=0, signo=6, threadid=140733646362176) at ./nptl/pthread_kill.c:44
44	./nptl/pthread_kill.c: No such file or directory.
(gdb) bt full
#0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=140733646362176) at ./nptl/pthread_kill.c:44
        tid = <optimized out>
        ret = 0
        pd = 0x7fff1affd640

                    old_mask = {__val = {13493696961133113727, 13509500211699174145, 13512580399037183187, 13511761288644300553, 13510763769604825563, 13500095173919460032, 13487053870794403414, 13483641987426942079, 13491533908229453330, 13494314023382807329, 13464535894130224947, 13332876768329887496, 4196211348700518608, 4227464515760925052, 4261347985212734972, 4280251454843642132}}
        ret = <optimized out>
#1  __pthread_kill_internal (signo=6, threadid=140733646362176) at ./nptl/pthread_kill.c:78
#2  __GI___pthread_kill (threadid=140733646362176, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
#3  0x00007ffff5e5c476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
        ret = <optimized out>
#4  0x00007ffff5e427f3 in __GI_abort () at ./stdlib/abort.c:79
        save_stage = 1

                  act = {__sigaction_handler = {sa_handler = 0xbaa2d1e0ba7d7fe9, sa_sigaction = 0xbaa2d1e0ba7d7fe9}, sa_mask = {__val = {13500438732641715970, 13525133098091034921, 13517787428411312144, 13477773722074991901, 13437433009806505266, 13464734532064318085, 13473834120366885108, 0, 224, 0, 224, 63259075420, 208, 63254743103, 208, 13487029213384090153}}, sa_flags = -1154431387, sa_restorer = 0x3}

                    sigs = {__val = {32, 13473252985523162976, 13440490579846692192, 13441748219279223821, 13478750346088803975, 13490465457805543172, 13473485669672557121, 13422672182167928162, 13430421857939905950, 13450367582990935455, 13431293057703427977, 13414688263159004388, 13450592226956647809, 13478197454950848734, 13476593001200507472, 13446580615840742602}}
#5  0x00007ffff5ea36f6 in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7ffff5ff5b8c "%s\n") at ../sysdeps/posix/libc_fatal.c:155
        ap = {{gp_offset = 24, fp_offset = 0, overflow_arg_area = 0x7fff1affc4b0, reg_save_area = 0x7fff1affc440}}
        fd = <optimized out>
        list = <optimized out>
        nlist = <optimized out>
        cp = <optimized out>
#6  0x00007ffff5ebad7c in malloc_printerr (str=str@entry=0x7ffff5ff8768 "double free or corruption (fasttop)") at ./malloc/malloc.c:5664
#7  0x00007ffff5ebca4a in _int_free (av=0x7fff14000030, p=0x7fff14002a50, have_lock=0) at ./malloc/malloc.c:4539
        idx = 4
        old = <optimized out>
        old2 = <optimized out>
        size = <optimized out>
        fb = 0x7fff14000060
        nextchunk = <optimized out>
        nextsize = <optimized out>
        nextinuse = <optimized out>
        prevsize = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
        bck = <optimized out>
        fwd = <optimized out>
        __PRETTY_FUNCTION__ = "_int_free"
#8  0x00007ffff5ebf4d3 in __GI___libc_free (mem=<optimized out>) at ./malloc/malloc.c:3391
        ar_ptr = <optimized out>
        p = <optimized out>
        err = 0
#9  0x00007ffff6fd96a8 in  () at /lib/x86_64-linux-gnu/libfftw3f.so.3
#10 0x00007ffff6fda558 in  () at /lib/x86_64-linux-gnu/libfftw3f.so.3
#11 0x00007ffff6fdaad4 in fftwf_mkplan_d () at /lib/x86_64-linux-gnu/libfftw3f.so.3
#12 0x00007ffff7030240 in  () at /lib/x86_64-linux-gnu/libfftw3f.so.3
#13 0x00007ffff702f45a in  () at /lib/x86_64-linux-gnu/libfftw3f.so.3
#14 0x00007ffff6fda6ae in  () at /lib/x86_64-linux-gnu/libfftw3f.so.3
#15 0x00007ffff70ca1ed in fftwf_mkapiplan () at /lib/x86_64-linux-gnu/libfftw3f.so.3
#16 0x00007ffff70d1778 in fftwf_plan_many_dft_c2r () at /lib/x86_64-linux-gnu/libfftw3f.so.3
#17 0x00007ffff70d0c99 in fftwf_plan_dft_c2r () at /lib/x86_64-linux-gnu/libfftw3f.so.3
#18 0x00007ffff70d0ba7 in fftwf_plan_dft_c2r_1d () at /lib/x86_64-linux-gnu/libfftw3f.so.3
#19 0x00007fff8be08b5d in Convlevel::configure(int, unsigned int, unsigned int, unsigned int, unsigned int) () at /lib/x86_64-linux-gnu/libzita-convolver.so.4
#20 0x00007fff8be0b2dc in Convproc::configure(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, float) ()
    at /lib/x86_64-linux-gnu/libzita-convolver.so.4
#21 0x00007fffe82532ee in  () at /usr/lib/lv2/gx_cabinet.lv2/gx_cabinet.so
#22 0x00007fffe8253055 in  () at /usr/lib/lv2/gx_cabinet.lv2/gx_cabinet.so
#23 0x00007fffe825273d in  () at /usr/lib/lv2/gx_cabinet.lv2/gx_cabinet.so
#24 0x00005555558b144d in lmms::Lv2Worker::workerFunc() (this=0x555556519190) at /home/zonkmachine/builds/lmms/src/core/lv2/Lv2Worker.cpp:144

                  buf = std::vector of length 110592, capacity 28311552 = {0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000'...}
        size = 110592
        __PRETTY_FUNCTION__ = "void* lmms::Lv2Worker::workerFunc()"
#25 0x00005555558b37d6 in std::__invoke_impl<void*, void* (lmms::Lv2Worker::*)(), lmms::Lv2Worker*>(std::__invoke_memfun_deref, void* (lmms::Lv2Worker::*&&)(), lmms::Lv2Worker*--Type <RET> for more, q to quit, c to continue without paging--
&&) (__f=@0x55555d6a0920: (void *(lmms::Lv2Worker::*)(class lmms::Lv2Worker * const)) 0x5555558b12e2 <lmms::Lv2Worker::workerFunc()>, __t=@0x55555d6a0918: 0x555556519190)
    at /usr/include/c++/11/bits/invoke.h:74
#26 0x00005555558b372a in std::__invoke<void* (lmms::Lv2Worker::*)(), lmms::Lv2Worker*>(void* (lmms::Lv2Worker::*&&)(), lmms::Lv2Worker*&&)
    (__fn=@0x55555d6a0920: (void *(lmms::Lv2Worker::*)(class lmms::Lv2Worker * const)) 0x5555558b12e2 <lmms::Lv2Worker::workerFunc()>) at /usr/include/c++/11/bits/invoke.h:96
#27 0x00005555558b368b in std::thread::_Invoker<std::tuple<void* (lmms::Lv2Worker::*)(), lmms::Lv2Worker*> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>)
    (this=0x55555d6a0918) at /usr/include/c++/11/bits/std_thread.h:253
#28 0x00005555558b3642 in std::thread::_Invoker<std::tuple<void* (lmms::Lv2Worker::*)(), lmms::Lv2Worker*> >::operator()() (this=0x55555d6a0918)
    at /usr/include/c++/11/bits/std_thread.h:260
#29 0x00005555558b3622 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void* (lmms::Lv2Worker::*)(), lmms::Lv2Worker*> > >::_M_run() (this=0x55555d6a0910)
    at /usr/include/c++/11/bits/std_thread.h:211
#30 0x00007ffff62252c3 in  () at /lib/x86_64-linux-gnu/libstdc++.so.6
#31 0x00007ffff5eaeb43 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
        ret = <optimized out>
        pd = <optimized out>

                      unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140737488340112, -6658768421911494657, 140733646362176, 0, 140737319200848, 140737488340464, 6658986126740586495, 6658755339764269055}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
#32 0x00007ffff5f40a00 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

@zonkmachine
Copy link
Member

zonkmachine commented Aug 14, 2022

Tested: works

amsynth
Black Pearl Drumkit
Red Zeppelin Drumkit
Dragonfly Hall Reverb
Dragonfly Plate Reverb
Dragonfly Room Reverb
ZaMultiComp
ZamHeadX2
ZamVerb
setBfree DSP Tonewheel Organ - acceptable default sound but no control over the parameters.

Won't show up in lmms

with no debug message on loading. Will crash Zrythm but seem to work just fine in Ardour.
padthv1
samplv1
synthv1
drumkv1

No functionality without gui

LV2 Convolution Mono
LV2 Convolution Mono=>Stereo
LV2 Convolution Stereo
x42 - IR Convolver Mono
x42 - IR Convolver Mono => Stereo
x42 - IR Convolver Stereo
x42 - Preset Convolver Mono
x42 - Preset Convolver Mono => Stereo
x42 - Preset Convolver Stereo
Wolf Shaper

Not tested. Most likely depends on a gui

sfizz (not tested, pretty sure it needs the gui)
Mephisto Audio 1x1
Mephisto Audio 2x2
Ninjas 2

Won't load: no audio output channel

Midi Event Map
Moony C1 x C1
Moony C2 x C2
Moony C4 x C4
From the Moony documentation: "The Moony plugins can handle LV2 control and atom event ports, only.
They do not handle LV2 audio ports. "

Won't load: incompatible number of channels

Black Pearl Drumkit Multi
Red Zeppelin Drumkit Multi

Crashes

GxCabinet
GxAmplifier-X
GxAmplifier-Stereo-X
Gxdetune

Unknown plugin

Exampler

@JohannesLorenz
Copy link
Contributor Author

Thanks a lot for testing @zonkmachine !

I can't confirm because I have neither of these 3 effects (though I do have many Gx... effects). From the backtrace it looks like it's freeing already freed memory, but if the plugin itself is freeing something, it's probably not LMMS' fault. It would be interesting to have a valgrind trace though, as well of the error itself and what's preceding it. The ultimate proof whether it's an LMMS issue might be loading it in jalv/ardout/audacity/... and see if it crashes there.

About the list: It looks like you've included it already in the separate PR, is that correct?

@zonkmachine
Copy link
Member

I have neither of these 3 effects (though I do have many Gx... effects).

In ubuntu the package is guitarix-lv2.

The ultimate proof whether it's an LMMS issue might be loading it in jalv/ardout/audacity/... and see if it crashes there.

Works just fine in ardour and audacity. The control is a drop down menu.

@zonkmachine
Copy link
Member

About the list: It looks like you've included it already in the separate PR, is that correct?

The Guitarix plugins that crash? Not yet, I'm not done testing them.

@JohannesLorenz
Copy link
Contributor Author

Thanks for the reports and for helping with getting GxCabinet compiled. I'll debug this in the next days, to see if the error(s) come from LMMS or from Gx.

@JohannesLorenz
Copy link
Contributor Author

Due to the bug mentioned above, I'll convert this PR into a draft, for now.

@JohannesLorenz JohannesLorenz marked this pull request as draft August 25, 2022 18:29
@zonkmachine
Copy link
Member

zonkmachine commented Aug 27, 2022

I started lmms for another branch than lv2-worker that I had been testing previously and it looks like lmms tries to load GxCabinet anyway, even though I now lack worker support. Interestingly I also got more data from this crash than lv2-worker and I don't know why that is.

bt full

[New Thread 0x7fff4a7fc640 (LWP 128055)]
Missing feature work:schedule.
using block size: 256
mlock 37407 bytes
using block size: 256
mlock 37407 bytes

Thread 37 "AudioEngine::fi" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fff4a7fc640 (LWP 128055)]
0x00007fffe8230b2b in GxCabinet::run_dsp_mono (n_samples=256, this=0x55555cb58320) at ../src/LV2/gx_cabinet.lv2/gxcabinet.cpp:330
330	      schedule->schedule_work(schedule->handle, sizeof(bool), &doit);
(gdb) bt full
#0  0x00007fffe8230b2b in GxCabinet::run_dsp_mono(unsigned int) (n_samples=256, this=0x55555cb58320) at ../src/LV2/gx_cabinet.lv2/gxcabinet.cpp:330

                  buf = {0, 0, 2.75152524e-06, 2.19756785e-05, 7.39677271e-05, 0.000174674293, 0.000339525344, 0.000583271962, 0.000919828832, 0.00136212632, 0.00192196982, 0.00260991161, 0.00343513209, 0.00440533319, 0.00552665209, 0.00680357916, 0.00823890045, 0.00983364694, 0.0115870731, 0.0134966299, 0.0155579979, 0.0177650657, 0.0201100055, 0.0225833189, 0.025173882, 0.0278690644, 0.0306548104, 0.0335157588, 0.0364353657, 0.0393960439, 0.0423793197, 0.0453659706, 0.0483362488, 0.0512699299, 0.0541466549, 0.0569459908, 0.0596476272, 0.0622316264, 0.0646785274, 0.0669695809, 0.069086872, 0.0710135326, 0.0727338716, 0.0742335543, 0.0756053776, 0.0769507438, 0.0782691464, 0.0795601681, 0.0808233544, 0.0820582584, 0.0832644701, 0.0844415724, 0.0855891481, 0.0867068246, 0.0877941996, 0.0888509229, 0.0898765922, 0.0908709019, 0.0918334872, 0.0927640349, 0.0936621949, 0.0945276842, 0.095360212, 0.096159488, 0.0969252363, 0.0976571813, 0.098355107, 0.0990187526, 0.0996479094, 0.100242347, 0.100801885, 0.101326309, 0.10181547, 0.102269173, 0.102687292, 0.103069678, 0.103416212, 0.103726745, 0.104001231, 0.104239531, 0.104441591, 0.104607344, 0.104736745, 0.104829729, 0.104886301, 0.104906425, 0.104890116, 0.104837388, 0.104748249, 0.104622722, 0.104460888, 0.104262799, 0.104028508, 0.103758149, 0.103451774, 0.103109539, 0.102731518, 0.102317892, 0.101868778, 0.101384372, 0.100864805, 0.100310311, 0.0997210518, 0.0990972593, 0.0984391198, 0.0977469236, 0.0970208645, 0.0962612331, 0.0954682827, 0.0946423039, 0.0937835798, 0.0928924233, 0.0919691324, 0.0910140574, 0.0900275037, 0.0890098438, 0.0879614353, 0.0868826583, 0.085773848, 0.0846354216, 0.083467789, 0.082271345, 0.0810465291, 0.0797937214, 0.078513436, 0.0772060677, 0.0758721083, 0.0745119676, 0.0731262043, 0.0717152357, 0.0702796131, 0.0688197613, 0.0673362687, 0.0658296272, 0.0643003583, 0.0627489686, 0.0611760691, 0.0595821552, 0.0579678155, 0.0563335605, 0.0546800308, 0.0530077592, 0.0513173565, 0.0496093705, 0.0478844494, 0.0461431667, 0.0443861336, 0.0426139459, 0.0408272557, 0.0390266702, 0.0372128151, 0.0353863053, 0.0335478112, 0.0316979662, 0.0298373979, 0.0279667415, 0.0260866955, 0.0241978839, 0.0223009679, 0.0203965865, 0.0184854437, 0.0165681895, 0.0146454833, 0.0127179716, 0.010786375, 0.00885133818, 0.0069135353, 0.00497361459, 0.00303230062, 0.00109024264, -0.000851885066, -0.00279343245, -0.00473367516, -0.00667196512, -0.00860762969, -0.0105400207, -0.0124684162, -0.0143921757, -0.0163106564, -0.0182231367, -0.0201289859, -0.0220275372, -0.023918163, -0.0258001555, -0.0276728831, -0.0295357034, -0.0313879922, -0.0332290605, -0.0350582935, -0.036875058, -0.0386787467, -0.0404686928, -0.0422443002, -0.0440049358, -0.0457500443, -0.0474789552, -0.0491911061, -0.0508858897, -0.0525627583, -0.054221075...}
#1  GxCabinet::run(void*, unsigned int) (instance=0x55555cb58320, n_samples=256) at ../src/LV2/gx_cabinet.lv2/gxcabinet.cpp:477
#2  0x00005555558914ab in lilv_instance_run(LilvInstance*, uint32_t) (instance=0x55555c989d80, sample_count=256) at /usr/include/lilv-0/lilv/lilv.h:1948
#3  0x0000555555892864 in lmms::Lv2Proc::run(short) (this=0x55555c83f200, frames=256) at /home/zonkmachine/builds/lmms/src/core/lv2/Lv2Proc.cpp:334
#4  0x000055555588966a in lmms::Lv2ControlBase::run(short) (this=0x7ffff27c1650, frames=256) at /home/zonkmachine/builds/lmms/src/core/lv2/Lv2ControlBase.cpp:151
        c = std::unique_ptr<lmms::Lv2Proc> = {get() = 0x55555c83f200}

                    __for_range = std::vector of length 2, capacity 2 = {std::unique_ptr<lmms::Lv2Proc> = {get() = 0x55555c83f200}, std::unique_ptr<lmms::Lv2Proc> = {get() = 0x55555cb63800}}
        __for_begin = std::unique_ptr<lmms::Lv2Proc> = {get() = 0x55555c83f200}
        __for_end = std::unique_ptr<lmms::Lv2Proc> = {get() = 0x0}
#5  0x00007fffacafee9c in lmms::Lv2Effect::processAudioBuffer(std::array<float, 2ul>*, short) (this=0x7ffff27c1080, buf=0x55555682f820, frames=256)
    at /home/zonkmachine/builds/lmms/plugins/Lv2Effect/Lv2Effect.cpp:79
        outSum = 4.6355766130935217e-310
        corrupt = 85
        d = 0
        w = 0

@JohannesLorenz
Copy link
Contributor Author

@zonkmachine What exactly were the steps to reproduce this? I still get

Lv2 plugin "GxCabinet" (URI: http://guitarix.sourceforge.net/plugins/gx_cabinet#CABINET ) can not be loaded:
  -  required feature not supported : http://lv2plug.in/ns/ext/worker#schedule

using master.

@zonkmachine
Copy link
Member

@zonkmachine What exactly were the steps to reproduce this?

I was on this branch, testing away under gdb. Then switched to the the arp randomness branch and fired it up, again under gdb. I have the option to automatically load last project checked so that is what happened. I always close down gdb when switching branches. Can't replicate... ghost in the machine!?

@zonkmachine
Copy link
Member

If this truly is not supposed to be able to do I'm open to the idea that this is a false memory and that I was still on the old branch and it loaded and crashed and I then interpreted things wildly wrong. That could have happened...

@zonkmachine
Copy link
Member

Rendering one note with a test program having a GxAmplifier-X gave some output in valgrind. Full log at the bottom.

==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x1D60ADD3: run_dsp_mono (gxamp.cpp:503)
==48681==    by 0x1D60ADD3: GxPluginMono::run(void*, unsigned int) (gxamp.cpp:699)
==48681==    by 0x4428EE: lilv_instance_run (lilv.h:1948)
==48681==    by 0x443D53: lmms::Lv2Proc::run(short) (Lv2Proc.cpp:336)
==48681==    by 0x43A96B: lmms::Lv2ControlBase::run(short) (Lv2ControlBase.cpp:151)
==48681==    by 0x1CF0BE3B: lmms::Lv2Effect::processAudioBuffer(std::array<float, 2ul>*, short) (Lv2Effect.cpp:79)
==48681==    by 0x3AA18F: lmms::EffectChain::processAudioBuffer(std::array<float, 2ul>*, short, bool) (EffectChain.cpp:201)
==48681==    by 0x432D05: lmms::AudioPort::processEffects() (AudioPort.cpp:99)
==48681==    by 0x43365F: lmms::AudioPort::doProcessing() (AudioPort.cpp:224)
==48681==    by 0x360748: lmms::ThreadableJob::process() (ThreadableJob.h:77)
==48681==    by 0x35FFF5: lmms::AudioEngineWorkerThread::JobQueue::run() (AudioEngineWorkerThread.cpp:88)
==48681==    by 0x3602F6: lmms::AudioEngineWorkerThread::startAndWaitForJobs() (AudioEngineWorkerThread.cpp:161)
==48681==    by 0x358265: lmms::AudioEngine::renderNextBuffer() (AudioEngine.cpp:425)

valgrind --smc-check=all --error-limit=no --leak-check=no

Click to expand
$ valgrind --smc-check=all --error-limit=no --leak-check=no ./lmms --render ~/Documents/lmms/projects/issues/workergxcrash-03.mmp -o testfile.wav
==48681== Memcheck, a memory error detector
==48681== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==48681== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info
==48681== Command: ./lmms --render /home/zonkmachine/Documents/lmms/projects/issues/workergxcrash-03.mmp -o testfile.wav
==48681== 
*** WEAK-JACK: initializing
*** WEAK-JACK: OK. (0)
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486AA89: ???
==48681==    by 0x9BACE27: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486AA89: ???
==48681==    by 0x9BB5BA7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486AA89: ???
==48681==    by 0x9BB6827: ???
==48681== 
Notice: could not set realtime priority.
VST sync support disabled in your configuration
error: failed to open file /home/zonkmachine/.lv2/README/manifest.ttl (Not a directory)
lilv_world_load_file(): error: Error loading file `file:///home/zonkmachine/.lv2/README/manifest.ttl'
lilv_world_load_bundle(): error: Error reading file:///home/zonkmachine/.lv2/README/manifest.ttl
error: failed to open file /home/zonkmachine/.lv2/Wolpertinger.so/manifest.ttl (Not a directory)
lilv_world_load_file(): error: Error loading file `file:///home/zonkmachine/.lv2/Wolpertinger.so/manifest.ttl'
lilv_world_load_bundle(): error: Error reading file:///home/zonkmachine/.lv2/Wolpertinger.so/manifest.ttl
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_clubdrive.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_clubdrive.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_sd2lead.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_sd2lead.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_CreamMachine.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_CreamMachine.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_voodoo.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_voodoo.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_vstb.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_vstb.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_boobtube.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_boobtube.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_epic.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_epic.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_plexi.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_plexi.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_maestro_fz1b.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_maestro_fz1b.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_ultracab.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_ultracab.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_SunFace.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_SunFace.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_sfp.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_sfp.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_hyperion.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_hyperion.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_TubeDistortion.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_TubeDistortion.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_saturate.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_saturate.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_sd1sim.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_sd1sim.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_tonemachine.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_tonemachine.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_shakatube.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_shakatube.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_bottlerocket.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_bottlerocket.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_AxisFace.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_AxisFace.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_blueamp.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_blueamp.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_supersonic.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_supersonic.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_voxbass.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_voxbass.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_guvnor.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_guvnor.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_valvecaster.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_valvecaster.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_ampegsvt.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_ampegsvt.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_sloopyblue.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_sloopyblue.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/rezonateur.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/rezonateur.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_KnightFuzz.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_KnightFuzz.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_timray.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_timray.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_eternity.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_eternity.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_maestro_fz1s.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_maestro_fz1s.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_MicroAmp.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_MicroAmp.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_hotbox.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_hotbox.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_vmk2d.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_vmk2d.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_DOP250.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_DOP250.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/rezonateur-stereo.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/rezonateur-stereo.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_bajatubedriver.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_bajatubedriver.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_slowgear.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_slowgear.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_uvox.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_uvox.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_Heathkit.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_Heathkit.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_luna.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_luna.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_quack.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_quack.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_liquiddrive.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_liquiddrive.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///home/zonkmachine/.lv2/gx_vfm.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib/lv2/gx_vfm.lv2/ (ignored)
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///usr/lib/lv2/gx_jcm800pre_st.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/local/lib/lv2/gx_jcm800pre_st.lv2/ (ignored)
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///usr/lib/lv2/gx_mbcompressor.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/local/lib/lv2/gx_mbcompressor.lv2/ (ignored)
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///usr/lib/lv2/gx_hfb.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/local/lib/lv2/gx_hfb.lv2/ (ignored)
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///usr/lib/lv2/gx_mbecho.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/local/lib/lv2/gx_mbecho.lv2/ (ignored)
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///usr/lib/lv2/gx_mole.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/local/lib/lv2/gx_mole.lv2/ (ignored)
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///usr/lib/lv2/gx_mbdistortion.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/local/lib/lv2/gx_mbdistortion.lv2/ (ignored)
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///usr/lib/lv2/gx_fuzz.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/local/lib/lv2/gx_fuzz.lv2/ (ignored)
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_add_plugin(): warning: Duplicate plugin 
lilv_world_add_plugin(): warning: ... found in file:///usr/lib/lv2/gx_livelooper.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/local/lib/lv2/gx_livelooper.lv2/ (ignored)
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
lilv_world_load_bundle(): warning: Replacing version 40.0 of  from 
lilv_world_load_bundle(): note: New version 43.0 found in 
Lv2 plugin SUMMARY: 574 of 716  loaded in 81592 msecs.
For details about not loaded plugins, please set
  environment variable "LMMS_LV2_DEBUG" to nonempty.
Lv2 Plugins blacklisted: 10 of 716 
  If you want to ignore the blacklist (dangerous!), please set
  environment variable "LMMS_IGNORE_BLACKLIST" to nonempty.
Loading project...
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x145BAA17: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x16B985C7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x16B64C87: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0xB3CB637: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0xB7D1C77: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x102DF987: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x12EAC1D7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x16B62A27: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x16B67357: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0xB822887: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486AC05: ???
==48681==    by 0xB822887: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0xB7D7057: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486AC05: ???
==48681==    by 0xB7D7057: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0xB7D98C7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486AC05: ???
==48681==    by 0xB7D98C7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x16C38587: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486AC05: ???
==48681==    by 0x16C38587: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x16C52487: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486AC05: ???
==48681==    by 0x16C52487: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x1026DE47: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486AC05: ???
==48681==    by 0x1026DE47: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0xB44F727: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x12A842C7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x16BFD917: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x16B71817: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x16B73087: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486AC05: ???
==48681==    by 0x16B73087: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x16B795B7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x16B7A4F7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486AC05: ???
==48681==    by 0x16B7A4F7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x16B98697: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x16BD98E7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x16BDF887: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486AC05: ???
==48681==    by 0x16BDF887: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x16C05D77: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486AC05: ???
==48681==    by 0x16C05D77: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x16C1BB97: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486AC05: ???
==48681==    by 0x16C1BB97: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x16C52587: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486AC05: ???
==48681==    by 0x16C52587: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x16C10EC7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x11AA3B57: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0xB7F3917: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x11A8F367: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x16B6D177: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x10238CC7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x14372477: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x1555BDC7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x1465A5F7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x1465A8E7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x18E42647: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x1160BCB7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x145AEDC7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x119D9597: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x119EC957: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x11A800D7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x11A80FE7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x11A82307: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x15401C47: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x12ABC537: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x144164E7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x153FF947: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x153FFFE7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x154A4A37: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x169DF347: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x18E3C2D7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0xB2F4BC7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0xB31F347: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x18E3FEC7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x18E407E7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x18E41097: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x18E430A7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x18E43247: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x18E43BE7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x18E440D7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x18E44987: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x18E4E1D7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x18E4EC97: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x18E4F417: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x18E4F5B7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x18E4FE87: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x18E52DA7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x18E55097: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x18E553A7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x16AEAB87: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x115B2D47: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x18E57F27: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x18E5B1E7: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x18E5B807: ???
==48681== 
==48681== Conditional jump or move depends on uninitialised value(s)
==48681==    at 0x486ABFA: ???
==48681==    by 0x155FD727: ???
==48681== 
==48681== Invalid read of size 8
==48681==    at 0x40286C0: strncmp (strcmp.S:170)
==48681==    by 0x400668D: is_dst (dl-load.c:216)
==48681==    by 0x400810E: _dl_dst_count (dl-load.c:253)
==48681==    by 0x400810E: expand_dynamic_string_token (dl-load.c:395)
==48681==    by 0x40082B7: fillin_rpath.isra.0 (dl-load.c:483)
==48681==    by 0x4008602: decompose_rpath (dl-load.c:654)
==48681==    by 0x400ABF5: cache_rpath (dl-load.c:696)
==48681==    by 0x400ABF5: cache_rpath (dl-load.c:677)
==48681==    by 0x400ABF5: _dl_map_object (dl-load.c:2165)
==48681==    by 0x4003494: openaux (dl-deps.c:64)
==48681==    by 0x694AC27: _dl_catch_exception (dl-error-skeleton.c:208)
==48681==    by 0x4003C7B: _dl_map_object_deps (dl-deps.c:248)
==48681==    by 0x400EA0E: dl_open_worker_begin (dl-open.c:592)
==48681==    by 0x694AC27: _dl_catch_exception (dl-error-skeleton.c:208)
==48681==    by 0x400DF99: dl_open_worker (dl-open.c:782)
==48681==  Address 0x11cb9e81 is 1 bytes inside a block of size 8 alloc'd
==48681==    at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==48681==    by 0x40271FF: malloc (rtld-malloc.h:56)
==48681==    by 0x40271FF: strdup (strdup.c:42)
==48681==    by 0x4008594: decompose_rpath (dl-load.c:629)
==48681==    by 0x400ABF5: cache_rpath (dl-load.c:696)
==48681==    by 0x400ABF5: cache_rpath (dl-load.c:677)
==48681==    by 0x400ABF5: _dl_map_object (dl-load.c:2165)
==48681==    by 0x4003494: openaux (dl-deps.c:64)
==48681==    by 0x694AC27: _dl_catch_exception (dl-error-skeleton.c:208)
==48681==    by 0x4003C7B: _dl_map_object_deps (dl-deps.c:248)
==48681==    by 0x400EA0E: dl_open_worker_begin (dl-open.c:592)
==48681==    by 0x694AC27: _dl_catch_exception (dl-error-skeleton.c:208)
==48681==    by 0x400DF99: dl_open_worker (dl-open.c:782)
==48681==    by 0x694AC27: _dl_catch_exception (dl-error-skeleton.c:208)
==48681==    by 0x400E34D: _dl_open (dl-open.c:883)
==48681== 
==48681== Invalid read of size 8
==48681==    at 0x40286C8: strncmp (strcmp.S:172)
==48681==    by 0x400668D: is_dst (dl-load.c:216)
==48681==    by 0x400810E: _dl_dst_count (dl-load.c:253)
==48681==    by 0x400810E: expand_dynamic_string_token (dl-load.c:395)
==48681==    by 0x40082B7: fillin_rpath.isra.0 (dl-load.c:483)
==48681==    by 0x4008602: decompose_rpath (dl-load.c:654)
==48681==    by 0x400ABF5: cache_rpath (dl-load.c:696)
==48681==    by 0x400ABF5: cache_rpath (dl-load.c:677)
==48681==    by 0x400ABF5: _dl_map_object (dl-load.c:2165)
==48681==    by 0x4003494: openaux (dl-deps.c:64)
==48681==    by 0x694AC27: _dl_catch_exception (dl-error-skeleton.c:208)
==48681==    by 0x4003C7B: _dl_map_object_deps (dl-deps.c:248)
==48681==    by 0x400EA0E: dl_open_worker_begin (dl-open.c:592)
==48681==    by 0x694AC27: _dl_catch_exception (dl-error-skeleton.c:208)
==48681==    by 0x400DF99: dl_open_worker (dl-open.c:782)
==48681==  Address 0x11cb9e89 is 1 bytes after a block of size 8 alloc'd
==48681==    at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==48681==    by 0x40271FF: malloc (rtld-malloc.h:56)
==48681==    by 0x40271FF: strdup (strdup.c:42)
==48681==    by 0x4008594: decompose_rpath (dl-load.c:629)
==48681==    by 0x400ABF5: cache_rpath (dl-load.c:696)
==48681==    by 0x400ABF5: cache_rpath (dl-load.c:677)
==48681==    by 0x400ABF5: _dl_map_object (dl-load.c:2165)
==48681==    by 0x4003494: openaux (dl-deps.c:64)
==48681==    by 0x694AC27: _dl_catch_exception (dl-error-skeleton.c:208)
==48681==    by 0x4003C7B: _dl_map_object_deps (dl-deps.c:248)
==48681==    by 0x400EA0E: dl_open_worker_begin (dl-open.c:592)
==48681==    by 0x694AC27: _dl_catch_exception (dl-error-skeleton.c:208)
==48681==    by 0x400DF99: dl_open_worker (dl-open.c:782)
==48681==    by 0x694AC27: _dl_catch_exception (dl-error-skeleton.c:208)
==48681==    by 0x400E34D: _dl_open (dl-open.c:883)
==48681== 
==48681== Invalid read of size 8
==48681==    at 0x40286C0: strncmp (strcmp.S:170)
==48681==    by 0x400668D: is_dst (dl-load.c:216)
==48681==    by 0x4007F79: _dl_dst_substitute (dl-load.c:295)
==48681==    by 0x40082B7: fillin_rpath.isra.0 (dl-load.c:483)
==48681==    by 0x4008602: decompose_rpath (dl-load.c:654)
==48681==    by 0x400ABF5: cache_rpath (dl-load.c:696)
==48681==    by 0x400ABF5: cache_rpath (dl-load.c:677)
==48681==    by 0x400ABF5: _dl_map_object (dl-load.c:2165)
==48681==    by 0x4003494: openaux (dl-deps.c:64)
==48681==    by 0x694AC27: _dl_catch_exception (dl-error-skeleton.c:208)
==48681==    by 0x4003C7B: _dl_map_object_deps (dl-deps.c:248)
==48681==    by 0x400EA0E: dl_open_worker_begin (dl-open.c:592)
==48681==    by 0x694AC27: _dl_catch_exception (dl-error-skeleton.c:208)
==48681==    by 0x400DF99: dl_open_worker (dl-open.c:782)
==48681==  Address 0x11cb9e81 is 1 bytes inside a block of size 8 alloc'd
==48681==    at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==48681==    by 0x40271FF: malloc (rtld-malloc.h:56)
==48681==    by 0x40271FF: strdup (strdup.c:42)
==48681==    by 0x4008594: decompose_rpath (dl-load.c:629)
==48681==    by 0x400ABF5: cache_rpath (dl-load.c:696)
==48681==    by 0x400ABF5: cache_rpath (dl-load.c:677)
==48681==    by 0x400ABF5: _dl_map_object (dl-load.c:2165)
==48681==    by 0x4003494: openaux (dl-deps.c:64)
==48681==    by 0x694AC27: _dl_catch_exception (dl-error-skeleton.c:208)
==48681==    by 0x4003C7B: _dl_map_object_deps (dl-deps.c:248)
==48681==    by 0x400EA0E: dl_open_worker_begin (dl-open.c:592)
==48681==    by 0x694AC27: _dl_catch_exception (dl-error-skeleton.c:208)
==48681==    by 0x400DF99: dl_open_worker (dl-open.c:782)
==48681==    by 0x694AC27: _dl_catch_exception (dl-error-skeleton.c:208)
==48681==    by 0x400E34D: _dl_open (dl-open.c:883)
==48681== 
==48681== Invalid read of size 8
==48681==    at 0x40286C8: strncmp (strcmp.S:172)
==48681==    by 0x400668D: is_dst (dl-load.c:216)
==48681==    by 0x4007F79: _dl_dst_substitute (dl-load.c:295)
==48681==    by 0x40082B7: fillin_rpath.isra.0 (dl-load.c:483)
==48681==    by 0x4008602: decompose_rpath (dl-load.c:654)
==48681==    by 0x400ABF5: cache_rpath (dl-load.c:696)
==48681==    by 0x400ABF5: cache_rpath (dl-load.c:677)
==48681==    by 0x400ABF5: _dl_map_object (dl-load.c:2165)
==48681==    by 0x4003494: openaux (dl-deps.c:64)
==48681==    by 0x694AC27: _dl_catch_exception (dl-error-skeleton.c:208)
==48681==    by 0x4003C7B: _dl_map_object_deps (dl-deps.c:248)
==48681==    by 0x400EA0E: dl_open_worker_begin (dl-open.c:592)
==48681==    by 0x694AC27: _dl_catch_exception (dl-error-skeleton.c:208)
==48681==    by 0x400DF99: dl_open_worker (dl-open.c:782)
==48681==  Address 0x11cb9e89 is 1 bytes after a block of size 8 alloc'd
==48681==    at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==48681==    by 0x40271FF: malloc (rtld-malloc.h:56)
==48681==    by 0x40271FF: strdup (strdup.c:42)
==48681==    by 0x4008594: decompose_rpath (dl-load.c:629)
==48681==    by 0x400ABF5: cache_rpath (dl-load.c:696)
==48681==    by 0x400ABF5: cache_rpath (dl-load.c:677)
==48681==    by 0x400ABF5: _dl_map_object (dl-load.c:2165)
==48681==    by 0x4003494: openaux (dl-deps.c:64)
==48681==    by 0x694AC27: _dl_catch_exception (dl-error-skeleton.c:208)
==48681==    by 0x4003C7B: _dl_map_object_deps (dl-deps.c:248)
==48681==    by 0x400EA0E: dl_open_worker_begin (dl-open.c:592)
==48681==    by 0x694AC27: _dl_catch_exception (dl-error-skeleton.c:208)
==48681==    by 0x400DF99: dl_open_worker (dl-open.c:782)
==48681==    by 0x694AC27: _dl_catch_exception (dl-error-skeleton.c:208)
==48681==    by 0x400E34D: _dl_open (dl-open.c:883)
==48681== 
using block size: 256
mlock 696463 bytes

==48681== Mismatched free() / delete / delete []
==48681== at 0x484B8AF: operator delete(void*) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==48681== by 0x1D62220B: GxSimpleConvolver::configure(int, float*, unsigned int) (in /usr/local/lib/lv2/gx_amp.lv2/gx_amp.so)
==48681== by 0x1D60B9DC: init_dsp_mono (gxamp.cpp:435)
==48681== by 0x1D60B9DC: GxPluginMono::instantiate(LV2_Descriptor const*, double, char const*, LV2_Feature const* const*) (gxamp.cpp:680)
==48681== by 0x542E342: lilv_plugin_instantiate (instance.c:76)
==48681== by 0x4441E6: lmms::Lv2Proc::initPlugin() (Lv2Proc.cpp:406)
==48681== by 0x44329E: lmms::Lv2Proc::Lv2Proc(LilvPluginImpl const*, lmms::Model*) (Lv2Proc.cpp:169)
==48681== by 0x43B21C: std::_MakeUniqlmms::Lv2Proc::__single_object std::make_unique<lmms::Lv2Proc, LilvPluginImpl const*&, lmms::Model*&>(LilvPluginImpl const*&, lmms::Model*&) (unique_ptr.h:962)
==48681== by 0x43A22E: lmms::Lv2ControlBase::Lv2ControlBase(lmms::Model*, QString const&) (Lv2ControlBase.cpp:60)
==48681== by 0x1CF0E38B: lmms::Lv2FxControls::Lv2FxControls(lmms::Lv2Effect*, QString const&) (Lv2FxControls.cpp:39)
==48681== by 0x1CF0BC75: lmms::Lv2Effect::Lv2Effect(lmms::Model*, lmms::Plugin::Descriptor::SubPluginFeatures::Key const*) (Lv2Effect.cpp:62)
==48681== by 0x1CF0C12D: lmms_plugin_main (Lv2Effect.cpp:112)
==48681== by 0x3ED73E: lmms::Plugin::instantiate(QString const&, lmms::Model*, void*) (Plugin.cpp:239)
==48681== Address 0x12648c00 is 0 bytes inside a block of size 3,676 alloc'd
==48681== at 0x484A2F3: operator new[](unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==48681== by 0x1D6234B3: gx_resample::BufferResampler::process(int, int, float*, int, int*) (in /usr/local/lib/lv2/gx_amp.lv2/gx_amp.so)
==48681== by 0x1D622230: GxSimpleConvolver::configure(int, float*, unsigned int) (in /usr/local/lib/lv2/gx_amp.lv2/gx_amp.so)
==48681== by 0x1D60B9DC: init_dsp_mono (gxamp.cpp:435)
==48681== by 0x1D60B9DC: GxPluginMono::instantiate(LV2_Descriptor const*, double, char const*, LV2_Feature const* const*) (gxamp.cpp:680)
==48681== by 0x542E342: lilv_plugin_instantiate (instance.c:76)
==48681== by 0x4441E6: lmms::Lv2Proc::initPlugin() (Lv2Proc.cpp:406)
==48681== by 0x44329E: lmms::Lv2Proc::Lv2Proc(LilvPluginImpl const*, lmms::Model*) (Lv2Proc.cpp:169)
==48681== by 0x43B21C: std::_MakeUniqlmms::Lv2Proc::__single_object std::make_unique<lmms::Lv2Proc, LilvPluginImpl const*&, lmms::Model*&>(LilvPluginImpl const*&, lmms::Model*&) (unique_ptr.h:962)
==48681== by 0x43A22E: lmms::Lv2ControlBase::Lv2ControlBase(lmms::Model*, QString const&) (Lv2ControlBase.cpp:60)
==48681== by 0x1CF0E38B: lmms::Lv2FxControls::Lv2FxControls(lmms::Lv2Effect*, QString const&) (Lv2FxControls.cpp:39)
==48681== by 0x1CF0BC75: lmms::Lv2Effect::Lv2Effect(lmms::Model*, lmms::Plugin::Descriptor::SubPluginFeatures::Key const*) (Lv2Effect.cpp:62)
==48681== by 0x1CF0C12D: lmms_plugin_main (Lv2Effect.cpp:112)
==48681==
==48681== Mismatched free() / delete / delete []
==48681== at 0x484B8AF: operator delete(void*) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==48681== by 0x1D62220B: GxSimpleConvolver::configure(int, float*, unsigned int) (in /usr/local/lib/lv2/gx_amp.lv2/gx_amp.so)
==48681== by 0x1D60BA45: init_dsp_mono (gxamp.cpp:442)
==48681== by 0x1D60BA45: GxPluginMono::instantiate(LV2_Descriptor const*, double, char const*, LV2_Feature const* const*) (gxamp.cpp:680)
==48681== by 0x542E342: lilv_plugin_instantiate (instance.c:76)
==48681== by 0x4441E6: lmms::Lv2Proc::initPlugin() (Lv2Proc.cpp:406)
==48681== by 0x44329E: lmms::Lv2Proc::Lv2Proc(LilvPluginImpl const*, lmms::Model*) (Lv2Proc.cpp:169)
==48681== by 0x43B21C: std::_MakeUniqlmms::Lv2Proc::__single_object std::make_unique<lmms::Lv2Proc, LilvPluginImpl const*&, lmms::Model*&>(LilvPluginImpl const*&, lmms::Model*&) (unique_ptr.h:962)
==48681== by 0x43A22E: lmms::Lv2ControlBase::Lv2ControlBase(lmms::Model*, QString const&) (Lv2ControlBase.cpp:60)
==48681== by 0x1CF0E38B: lmms::Lv2FxControls::Lv2FxControls(lmms::Lv2Effect*, QString const&) (Lv2FxControls.cpp:39)
==48681== by 0x1CF0BC75: lmms::Lv2Effect::Lv2Effect(lmms::Model*, lmms::Plugin::Descriptor::SubPluginFeatures::Key const*) (Lv2Effect.cpp:62)
==48681== by 0x1CF0C12D: lmms_plugin_main (Lv2Effect.cpp:112)
==48681== by 0x3ED73E: lmms::Plugin::instantiate(QString const&, lmms::Model*, void*) (Plugin.cpp:239)
==48681== Address 0x11dbb460 is 0 bytes inside a block of size 708 alloc'd
==48681== at 0x484A2F3: operator new[](unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==48681== by 0x1D6234B3: gx_resample::BufferResampler::process(int, int, float*, int, int*) (in /usr/local/lib/lv2/gx_amp.lv2/gx_amp.so)
==48681== by 0x1D622230: GxSimpleConvolver::configure(int, float*, unsigned int) (in /usr/local/lib/lv2/gx_amp.lv2/gx_amp.so)
==48681== by 0x1D60BA45: init_dsp_mono (gxamp.cpp:442)
==48681== by 0x1D60BA45: GxPluginMono::instantiate(LV2_Descriptor const*, double, char const*, LV2_Feature const* const*) (gxamp.cpp:680)
==48681== by 0x542E342: lilv_plugin_instantiate (instance.c:76)
==48681== by 0x4441E6: lmms::Lv2Proc::initPlugin() (Lv2Proc.cpp:406)
==48681== by 0x44329E: lmms::Lv2Proc::Lv2Proc(LilvPluginImpl const*, lmms::Model*) (Lv2Proc.cpp:169)
==48681== by 0x43B21C: std::_MakeUniqlmms::Lv2Proc::__single_object std::make_unique<lmms::Lv2Proc, LilvPluginImpl const*&, lmms::Model*&>(LilvPluginImpl const*&, lmms::Model*&) (unique_ptr.h:962)
==48681== by 0x43A22E: lmms::Lv2ControlBase::Lv2ControlBase(lmms::Model*, QString const&) (Lv2ControlBase.cpp:60)
==48681== by 0x1CF0E38B: lmms::Lv2FxControls::Lv2FxControls(lmms::Lv2Effect*, QString const&) (Lv2FxControls.cpp:39)
==48681== by 0x1CF0BC75: lmms::Lv2Effect::Lv2Effect(lmms::Model*, lmms::Plugin::Descriptor::SubPluginFeatures::Key const*) (Lv2Effect.cpp:62)
==48681== by 0x1CF0C12D: lmms_plugin_main (Lv2Effect.cpp:112)
==48681==
using block size: 256
mlock 696463 bytes
Done
|- | 0% | ==48681== Thread 9 lmms::ProjectRen:
==48681== Conditional jump or move depends on uninitialised value(s)
==48681== at 0x1D60ADD3: run_dsp_mono (gxamp.cpp:503)
==48681== by 0x1D60ADD3: GxPluginMono::run(void*, unsigned int) (gxamp.cpp:699)
==48681== by 0x4428EE: lilv_instance_run (lilv.h:1948)
==48681== by 0x443D53: lmms::Lv2Proc::run(short) (Lv2Proc.cpp:336)
==48681== by 0x43A96B: lmms::Lv2ControlBase::run(short) (Lv2ControlBase.cpp:151)
==48681== by 0x1CF0BE3B: lmms::Lv2Effect::processAudioBuffer(std::array<float, 2ul>, short) (Lv2Effect.cpp:79)
==48681== by 0x3AA18F: lmms::EffectChain::processAudioBuffer(std::array<float, 2ul>
, short, bool) (EffectChain.cpp:201)
==48681== by 0x432D05: lmms::AudioPort::processEffects() (AudioPort.cpp:99)
==48681== by 0x43365F: lmms::AudioPort::doProcessing() (AudioPort.cpp:224)
==48681== by 0x360748: lmms::ThreadableJob::process() (ThreadableJob.h:77)
==48681== by 0x35FFF5: lmms::AudioEngineWorkerThread::JobQueue::run() (AudioEngineWorkerThread.cpp:88)
==48681== by 0x3602F6: lmms::AudioEngineWorkerThread::startAndWaitForJobs() (AudioEngineWorkerThread.cpp:161)
==48681== by 0x358265: lmms::AudioEngine::renderNextBuffer() (AudioEngine.cpp:425)
==48681==
==48681==
==48681== More than 100 errors detected. Subsequent errors
==48681== will still be recorded, but in less detail than before.
==48681== Mismatched free() / delete / delete []
==48681== at 0x484B8AF: operator delete(void*) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==48681== by 0x1D622347: GxSimpleConvolver::update(int, float*, unsigned int) (in /usr/local/lib/lv2/gx_amp.lv2/gx_amp.so)
==48681== by 0x1D60BFA6: GxPluginMono::do_work_mono() (gxamp.cpp:372)
==48681== by 0x1D60BC6C: GxPluginMono::work(void*, LV2_Worker_Status ()(void, unsigned int, void const*), void*, unsigned int, void const*) (gxamp.cpp:588)
==48681== by 0x45E159: lmms::Lv2Worker::scheduleWork(unsigned int, void const*) (Lv2Worker.cpp:165)
==48681== by 0x45D9C9: lmms::staticScheduleWork(void*, unsigned int, void const*) (Lv2Worker.cpp:45)
==48681== by 0x1D60B0B7: run_dsp_mono (gxamp.cpp:537)
==48681== by 0x1D60B0B7: GxPluginMono::run(void*, unsigned int) (gxamp.cpp:699)
==48681== by 0x4428EE: lilv_instance_run (lilv.h:1948)
==48681== by 0x443D53: lmms::Lv2Proc::run(short) (Lv2Proc.cpp:336)
==48681== by 0x43A96B: lmms::Lv2ControlBase::run(short) (Lv2ControlBase.cpp:151)
==48681== by 0x1CF0BE3B: lmms::Lv2Effect::processAudioBuffer(std::array<float, 2ul>, short) (Lv2Effect.cpp:79)
==48681== by 0x3AA18F: lmms::EffectChain::processAudioBuffer(std::array<float, 2ul>
, short, bool) (EffectChain.cpp:201)
==48681== Address 0x16ff7950 is 0 bytes inside a block of size 3,296 alloc'd
==48681== at 0x484A2F3: operator new[](unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==48681== by 0x1D6234B3: gx_resample::BufferResampler::process(int, int, float*, int, int*) (in /usr/local/lib/lv2/gx_amp.lv2/gx_amp.so)
==48681== by 0x1D622388: GxSimpleConvolver::update(int, float*, unsigned int) (in /usr/local/lib/lv2/gx_amp.lv2/gx_amp.so)
==48681== by 0x1D60BFA6: GxPluginMono::do_work_mono() (gxamp.cpp:372)
==48681== by 0x1D60BC6C: GxPluginMono::work(void*, LV2_Worker_Status ()(void, unsigned int, void const*), void*, unsigned int, void const*) (gxamp.cpp:588)
==48681== by 0x45E159: lmms::Lv2Worker::scheduleWork(unsigned int, void const*) (Lv2Worker.cpp:165)
==48681== by 0x45D9C9: lmms::staticScheduleWork(void*, unsigned int, void const*) (Lv2Worker.cpp:45)
==48681== by 0x1D60B0B7: run_dsp_mono (gxamp.cpp:537)
==48681== by 0x1D60B0B7: GxPluginMono::run(void*, unsigned int) (gxamp.cpp:699)
==48681== by 0x4428EE: lilv_instance_run (lilv.h:1948)
==48681== by 0x443D53: lmms::Lv2Proc::run(short) (Lv2Proc.cpp:336)
==48681== by 0x43A96B: lmms::Lv2ControlBase::run(short) (Lv2ControlBase.cpp:151)
==48681== by 0x1CF0BE3B: lmms::Lv2Effect::processAudioBuffer(std::array<float, 2ul>*, short) (Lv2Effect.cpp:79)
==48681==
|--------------------------------------------------| 98% / PERFLOG | Project Render | 7.30user, 0.07system 7.17elapsed
munlock 696463 bytes
munlock 696463 bytes

lmms: /home/zonkmachine/builds/lmms/src/3rdparty/rpmalloc/rpmalloc/rpmalloc/rpmalloc.c:1328: _rpmalloc_span_finalize: Assertion `(span->list_size == span->used_count) && "Memory leak detected"' failed.
==48681==
==48681== Process terminating with default action of signal 6 (SIGABRT)
==48681== at 0x686CA7C: __pthread_kill_implementation (pthread_kill.c:44)
==48681== by 0x686CA7C: __pthread_kill_internal (pthread_kill.c:78)
==48681== by 0x686CA7C: pthread_kill@@GLIBC_2.34 (pthread_kill.c:89)
==48681== by 0x6818475: raise (raise.c:26)
==48681== by 0x67FE7F2: abort (abort.c:79)
==48681== by 0x67FE71A: __assert_fail_base.cold (assert.c:92)
==48681== by 0x680FE95: __assert_fail (assert.c:101)
==48681== by 0x5A92FB: _rpmalloc_span_finalize (rpmalloc.c:1328)
==48681== by 0x5AB1BD: _rpmalloc_heap_finalize (rpmalloc.c:2003)
==48681== by 0x5AA050: _rpmalloc_heap_global_finalize (rpmalloc.c:1566)
==48681== by 0x5AD9C5: rpmalloc_finalize (rpmalloc.c:2893)
==48681== by 0x3D74CA: lmms::MemoryManagerGlobalGuard::~MemoryManagerGlobalGuard() (MemoryManager.cpp:41)
==48681== by 0x681B494: __run_exit_handlers (exit.c:113)
==48681== by 0x681B60F: exit (exit.c:143)
==48681==
==48681== HEAP SUMMARY:
==48681== in use at exit: 1,387,041 bytes in 7,298 blocks
==48681== total heap usage: 4,101,811 allocs, 4,094,513 frees, 591,687,727 bytes allocated
==48681==
==48681== For a detailed leak analysis, rerun with: --leak-check=full
==48681==
==48681== Use --track-origins=yes to see where uninitialised values come from
==48681== For lists of detected and suppressed errors, rerun with: -s
==48681== ERROR SUMMARY: 109 errors from 101 contexts (suppressed: 0 from 0)
Aborted (core dumped)
$

@JohannesLorenz
Copy link
Contributor Author

Rendering one note with a test program having a GxAmplifier-X gave some output in valgrind

This one comes with multiple Gx effects. I think though that it's not our fault (do you get this valgrind issue with jalv?).

@zonkmachine
Copy link
Member

do you get this valgrind issue with jalv?)

Unfortunately my skills with Jack is nonexisting so jalv is off limits for me right now.

@JohannesLorenz
Copy link
Contributor Author

@zonkmachine I fixed various issues related to combo boxes now.

As for your GxAmplifier-X issue, I can't replicate because Arch Linux has bugs with valgrind - does it still occur for you?

The only remaining issue that I still can reproduce is this:

  • Draw 1 bar in the LMMS main window, with 4 x 1/4 note (constant playing)
  • Add GxCabinet
  • Play the bar in loop mode (repeatedly)
  • Change GxCabinet's "Cab mode" mutliple times

If you change the "Cab mode" quick enough, LMMS crashes for me. If you change with 5-10 seconds in between, it works. However, I think this is a Gx issue, not an LMMS issue - Can you replicate this with ardour/jalv?

@zonkmachine
Copy link
Member

@zonkmachine I fixed various issues related to combo boxes now.

👍

As for your GxAmplifier-X issue, I can't replicate because Arch Linux has bugs with valgrind - does it still occur for you?

Yes.

The only remaining issue that I still can reproduce is this:

* Draw 1 bar in the LMMS main window, with 4 x 1/4 note (constant playing)

* Add GxCabinet

* Play the bar in loop mode (repeatedly)

* Change GxCabinet's "Cab mode" mutliple times

If you change the "Cab mode" quick enough, LMMS crashes for me. If you change with 5-10 seconds in between, it works. However, I think this is a Gx issue, not an LMMS issue - Can you replicate this with ardour/jalv?

Yes, that's the crash I've been talking about I think. I've not been able to replicate this with ardour or zrythm. I don't do jalv.

I see other issues with the plugin though that doesn't make it crash. There's noise when I turn the Presence and Cabinet knobs. This is also there on Ardour.

If you're confident with the PR I think you should go ahead and merge it anyway. I have seen no issues on any of the other new plugins available with this one.

@JohannesLorenz
Copy link
Contributor Author

As for your GxAmplifier-X issue, I can't replicate because Arch Linux has bugs with valgrind - does it still occur for you?

Yes.

Can you please give me the steps to reproduce it?

@zonkmachine
Copy link
Member

Sure! Open this one, press play, open the window, and play with the Cab Model drop down menu.
gxamplifierx.mmp.zip

@JohannesLorenz
Copy link
Contributor Author

JohannesLorenz commented Sep 21, 2022

Could reproduce the issue, but it looks similar to the GxCabinet issue... I guess it's an internal plugin issue (not LMMS related).

I'd say let's undraft this and request a code-review.

@JohannesLorenz JohannesLorenz marked this pull request as ready for review September 21, 2022 19:35
@JohannesLorenz
Copy link
Contributor Author

JohannesLorenz commented Sep 21, 2022

Hints for code-review:

  • The commits do different things and the commit history is very clean. It's probably easier to review commit by commit
  • The Worker implementation is almost copied from the jalv code
  • Issues with the scripted checks are already fixed on master, so they can be ignored here

include/Lv2Worker.h Outdated Show resolved Hide resolved
// worker (if plugin has worker extension)
Lv2Manager* mgr = Engine::getLv2Manager();
if (lilv_plugin_has_extension_data(m_plugin, mgr->uri(LV2_WORKER__interface).get())) {
m_features[LV2_WORKER__schedule] = const_cast<LV2_Worker_Schedule*>(m_worker->feature());
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Question about const correctness: why Lv2Worker::feature only has const version?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently it's not needed mutable. If anyone reads the code they will see that the feature can't be changed using feature.

Copy link
Member

@DomClark DomClark Oct 30, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It can be changed using feature, though - the whole point of the feature is that it gives the plugin an interface to mutate the worker.

(This comment is meant to be in the reply thread of PhysSong's review, but GitHub shows it separately under mine as well, for some reason.)

include/Lv2Worker.h Outdated Show resolved Hide resolved
src/core/LmmsSemaphore.cpp Outdated Show resolved Hide resolved
src/core/lv2/Lv2Proc.cpp Outdated Show resolved Hide resolved
include/Lv2Worker.h Outdated Show resolved Hide resolved
include/Lv2Worker.h Outdated Show resolved Hide resolved
src/core/lv2/Lv2Proc.cpp Outdated Show resolved Hide resolved
@JohannesLorenz JohannesLorenz mentioned this pull request May 14, 2023
@JohannesLorenz
Copy link
Contributor Author

Status:

  • Waiting for Dom's rework check. All other discussions are solved or not PR-relevant. Anyone wants to take over?

@PhysSong
Copy link
Member

Waiting for Dom's rework check. All other discussions are solved or not PR-relevant. Anyone wants to take over?

I can, maybe. What do I have to do?

@JohannesLorenz
Copy link
Contributor Author

What do I have to do?

It's actually just checking if I solved Dom's comments correctly.

src/gui/Lv2ViewBase.cpp Outdated Show resolved Hide resolved
src/gui/Lv2ViewBase.cpp Outdated Show resolved Hide resolved
src/gui/Lv2ViewBase.cpp Outdated Show resolved Hide resolved
src/gui/Lv2ViewBase.cpp Outdated Show resolved Hide resolved
src/gui/modals/SetupDialog.cpp Outdated Show resolved Hide resolved
src/core/lv2/Lv2Features.cpp Show resolved Hide resolved
src/core/lv2/Lv2Proc.cpp Outdated Show resolved Hide resolved
src/core/lv2/Lv2Worker.cpp Outdated Show resolved Hide resolved
src/core/lv2/Lv2Worker.cpp Outdated Show resolved Hide resolved
src/core/lv2/Lv2Worker.cpp Outdated Show resolved Hide resolved
src/core/lv2/Lv2Proc.cpp Show resolved Hide resolved
src/core/lv2/Lv2Proc.cpp Show resolved Hide resolved
src/core/lv2/Lv2Proc.cpp Outdated Show resolved Hide resolved
src/core/lv2/Lv2Worker.cpp Outdated Show resolved Hide resolved
src/core/lv2/Lv2Worker.cpp Outdated Show resolved Hide resolved
@JohannesLorenz
Copy link
Contributor Author

@PhysSong @DomClark I added rework for all of your comments. It would be nice if you could check the rework. Thanks on advance.

Copy link
Member

@DomClark DomClark left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is good to go now. Once again, apologies for how long it's taken me to review this.

The one comment I'd leave is that I still don't like maintaining a blacklist in the code, the increasing number of blacklist categories, and that we warn the user about configurations that only affect a few plugins they may not even have. I'd like to find a better way to do this before we release 1.3, and I have some ideas, but I don't think this is the right place to have this discussion and I don't think it's something worth blocking this PR for.

@zonkmachine
Copy link
Member

zonkmachine commented Sep 17, 2023

I think this is good to go now. Once again, apologies for how long it's taken me to review this.

The one comment I'd leave is that I still don't like maintaining a blacklist in the code, the increasing number of blacklist categories, and that we warn the user about configurations that only affect a few plugins they may not even have. I'd like to find a better way to do this before we release 1.3, and I have some ideas, but I don't think this is the right place to have this discussion and I don't think it's something worth blocking this PR for.

I think me and @JohannesLorenz just got into the habit of doing this because of all the noise they were creating when testing the LV2 branch early on. I don't think it was ever meant to be permanent. However, I don't think it differs much from how an LV2 plugin is blocked from loading because we don't yet have the function it calls for. It's just that we have tested and seen that it lacks in functions to an extent that it becomes utterly useless. Like when it needs it's native gui and we don't yet provide it. Just block it for now and we'll get to it later.

@zonkmachine
Copy link
Member

@JohannesLorenz Job well done, as always. Resolve conflicts and merge?

@JohannesLorenz
Copy link
Contributor Author

Thanks everyone for the reviews. I will merge the PR in the next days.

Since it consists of multiple independent commits I will take a little bit of time to reorder them sanely.

This improves the way digits are calculated for display in
`Lv2ViewProc`:

- More than 2 digits are now recognized
- Minus signs are now recognized
- Tests have been added
This displays a warning dialog if the users requests unusual
buffersizes:

- buffersizes less than 32
- buffersizes which are not a (natural number) power of 2

This commit also replaces some `setGeometry` stuff by `QBoxLayout`.
lilv can return the scale points in randomized order, and so the linked
models (of stereo effects wit 2 `Lv2Proc`) may have different scale
points. This would mean that the same combo enumeration value would have
different float values in linked models. This problem is fixed by
sorting the scale values.

Also, it is more natural for users if scale points are enumerated in a
numerical order.
@JohannesLorenz JohannesLorenz merged commit 33d1bad into LMMS:master Sep 24, 2023
9 checks passed
szeli1 pushed a commit to szeli1/lmms that referenced this pull request Sep 24, 2023
void SetupDialog::updateBufferSizeWarning(int value)
{
QString text = "<ul>";
if((value & (value - 1)) != 0) // <=> value is not a power of 2 (for value > 0)
Copy link
Member

@zonkmachine zonkmachine Sep 26, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JohannesLorenz It looks like the LV2 plugins really see a maximum buffer size of 256 that you and jasp00 have been talking about. The mod-pitchshifter plugins seem to work fine on all buffer sizes from 256 and up. Not just the ones that are a power of two. The correct range is then decided by the following test.

if(((value & (value - 1)) != 0) && value < 256)

Do you want me to issue a PR for this with similar changes in the involved message strings and comments or do you want to look into the matter yourself?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Essentially, the behavior I'm described here is the right one (column marked capo), just the warning for not being power of two is wrong on buffer sizes over 256.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

Implement lv2:Worker
6 participants