There are crashes with LSP 1.2.23 happening in Ardour 8.12 and Ardour 9.0pre0.
Insert LSP-VST3 Plugin in an audio Track, try to remove the plugin → Crash
Same with Ardour 9 happening in audio Tracks, or Region FX.
Downgraded to LSP 1.2.22 and the issues are gone!
https://forum.harrisonconsoles.com/thread-12659-post-72164.html#pid72164
I had the same problems with VST3. VST2 and lv2 are working fine on Ardour 8.12 (Ubuntu mate 22.04)
Reproduced the problem on Ardour-8.6.365.
@x42
I see that IPlugView::setFrame is called with NULL frame argument.
This forces LSP Plugins to re-setup IEventHandler and ITimerHandler for the IRunLoop interface.
After that, the destructor for IPlugView is called without calling the IPlugView::removed method whith removes IEventHandler and ITimerHandler from IRunLoop.
After that, Ardour crashes here:
(gdb) bt
#0 0x00007ffff70a4547 in AVST3Runloop::timeout(void*) () from /opt/Ardour-8.6.365/lib/libardour.so.3
#1 0x00007ffff04574b9 in ?? () from /opt/Ardour-8.6.365/lib/libglib-2.0.so.0
#2 0x00007ffff045694a in g_main_context_dispatch () from /opt/Ardour-8.6.365/lib/libglib-2.0.so.0
#3 0x00007ffff0456ce8 in ?? () from /opt/Ardour-8.6.365/lib/libglib-2.0.so.0
#4 0x00007ffff0457002 in g_main_loop_run () from /opt/Ardour-8.6.365/lib/libglib-2.0.so.0
#5 0x00007ffff2d737d7 in gtk_main () from /opt/Ardour-8.6.365/lib/libytk.so.2
#6 0x00007ffff4664d65 in Gtkmm2ext::UI::run(Receiver&) () from /opt/Ardour-8.6.365/lib/libgtkmm2ext.so.0
#7 0x00005555558ac6fe in ?? ()
#8 0x00007ffff403e24d in __libc_start_main () from /lib64/libc.so.6
#9 0x00005555558b39ba in ?? ()
I see from my side that I need to more carefully remove IRunLoop handlers. But the behvaiour of Ardour is strange, too.
The runloop meanwhile moved to the backend and the null argument was also meanwhile fixed. That change happened in 8.6-459-gc77d2d42b9 (over a year ago).
The user however reported the issue to be present in recent Ardour 8.12.
–
PS. these may be pertinent:
The last change is only in Ardour 9 / git.
@x42 verified on the latest Ardour build.
The problem still persists:
(gdb) bt
#0 0x00007ffff79b08c7 in AVST3Runloop::timeout(void*) () from /opt/Ardour-9.0.pre0.1806/lib/libardour.so.3
#1 0x00007ffff5dd951a in ?? () from /opt/Ardour-9.0.pre0.1806/lib/libglib-2.0.so.0
#2 0x00007ffff5dd894f in g_main_context_dispatch () from /opt/Ardour-9.0.pre0.1806/lib/libglib-2.0.so.0
#3 0x00007ffff5dd8cf8 in ?? () from /opt/Ardour-9.0.pre0.1806/lib/libglib-2.0.so.0
#4 0x00007ffff5dd9023 in g_main_loop_run () from /opt/Ardour-9.0.pre0.1806/lib/libglib-2.0.so.0
#5 0x00007ffff620339a in gtk_main () from /opt/Ardour-9.0.pre0.1806/lib/libytk.so.2
#6 0x00007ffff6a4dfdb in Gtkmm2ext::UI::run(Receiver&) () from /opt/Ardour-9.0.pre0.1806/lib/libgtkmm2ext.so.0
#7 0x0000555555ba3016 in ?? ()
#8 0x00007ffff4fa224d in __libc_start_main () from /lib64/libc.so.6
#9 0x0000555555ba8e9a in ?? ()
From the log of LSP Plugins:
[TRC][lsp-plugins/modules/lsp-plugin-fw/include/lsp-plug.in/plug-fw/wrap/vst3/impl/ui_wrapper.h: 605] removed: this=0x55555ca54400
[TRC][lsp-plugins/modules/lsp-plugin-fw/include/lsp-plug.in/plug-fw/wrap/vst3/impl/ui_wrapper.h: 739] setFrame: this=0x55555ca54400, frame=(nil)
[TRC][lsp-plugins/modules/lsp-plugin-fw/include/lsp-plug.in/plug-fw/wrap/vst3/impl/ui_wrapper.h: 762] setFrame: RUN LOOP object=0x7ffff7f1e9c0
[TRC][lsp-plugins/modules/lsp-plugin-fw/include/lsp-plug.in/plug-fw/wrap/vst3/impl/ui_wrapper.h: 72] ~UIWrapper: this=0x55555ca54400
The patch for LSP plugins is here:
So Ardour calls into the plugin from AVST3Runloop::timeout after the plugin has been removed? Unless the plugin itself first un-registers itself from the runloop?
What are the invalid API calls by the DAW that you refer to?
The problem here is that LSP plugins perform de-registration on IPlugView::removed() call.
But after that we receive IPlugVIew::setFrame() call where we set up IEventHandler and ITimerHandler back.
After that, the destructor for IPlugView is called and Ardour crashes trying to call IEventHanler or ITimerHandler because they are already bound to non-existing objects.
indeed close_view calls
_view->removed ();
_view->setFrame (0);
_view->release ();
where _view is-a IPlugView*
I do recall that _view->setFrame (0); was needed for some plugins, but it’s been 6 years and I can’t remember which. I also cannot find documentation if this sequence is the correct. Since you mentioned “invalid API call” is there some spec that I missed?
That code in question been like this since 2019, and no other plugins had issues with that so far… (knock on wood), So I’d be reluctant to change it unless required.
PS. JUCE also does this sequence:
I’m not sure. I just have what was written in original Steinberg’s SDK poor documentation. But I doubt that sequence removed + setFrame with nullptr as argument is a correct sequence.
Anyway, now I check the pointer passed to the setFrame and do not set up handlers if it is NULL.
Steinberg does it reverse:
…but since JUCE does it the other way around, and given JUCE’s popularity, I suppose plugins now have to handle both ![]()
Just had another crash with a vst3 (Ardour 8.12 and Ardour 9 pre0-1809), on inserting the Plugin in an Audio track or RegionFX.
Plugin is MultiBandCompressor from IEM.(https://plugins.iem.at/)
So it’s not only related to LSP.
And again: No issues in Reaper and Bitwig. (so it seems to be an Ardour issue)
Backtrace:
Lufi - adminForge file uploader
According to the stack trace, it looks like very similar problem affected by the RunLoop.
the LV2 works fine in Ardour (but apparently crashes Reaper ![]()
And another one from IEM, same Crash with EnergyVisualizer VST3.
Edit: Just noticed the readme.txt:
“Please note, that we are testing the plug-ins only on Debian and cannot guarantee operation on other distributions.”
Arch Package is outdated since 6 months…
Now I have crashes with different LSP-LV2 Plugins (e.g. Compressor Mono, DynamicsProcessor Mono, Autogain Mono) in latest Ardour 9.0.pre0.1814 on inserting the Plugin in RegionFX.
Tested with LSP 1.2.23, 1.2.22, 1.2.21 on Debian 13.1 Cinnamon, Debian Testing Cinnamon, CachyOS
Video:
https://upload.adminforge.de/r/QULHawrBcw#/knv8/P9I+B8CFCBFdMs8u82XyeHC7nOps9D15Pxxg8=
Note that Ardour 9 is in pre alpha, so any crashes there could be due to rapid development.
Reproduced the problem. But looks not related to LSP plugins.
Thread 1 "ArdourGUI" received signal SIGSEGV, Segmentation fault.
0x00007ffff72c9aa9 in ?? () from /opt/Ardour-9.0.pre0.1806/lib/libardour.so.3
Missing separate debuginfos, use: zypper install glibc-debuginfo-2.31-150300.89.2.x86_64 glibc-locale-base-debuginfo-2.31-150300.89.2.x86_64 ladspa-AMB-debuginfo-0.6.1-bp155.2.10.x86_64 ladspa-FIL-debuginfo-0.3.0-bp155.2.10.x86_64 ladspa-MCP-debuginfo-0.4.0-bp155.2.10.x86_64 ladspa-REV-debuginfo-0.3.1-bp155.2.10.x86_64 ladspa-VCO-debuginfo-0.3.0-bp155.2.10.x86_64 ladspa-blepvco-debuginfo-0.1.0-bp155.2.10.x86_64 ladspa-blop-debuginfo-0.2.8-bp155.2.10.x86_64 ladspa-debuginfo-1.13-2.20.x86_64 ladspa-matched-debuginfo-1-bp155.2.10.x86_64 ladspa-preamp-debuginfo-2-bp155.2.10.x86_64 ladspa-pvoc-debuginfo-0.1.12-bp155.2.10.x86_64 ladspa-sooperlooper-debuginfo-0.93-bp155.2.10.x86_64 ladspa-swh-plugins-debuginfo-0.4.17-bp155.2.10.x86_64 ladspa-tap-plugins-debuginfo-1.0.1-bp155.2.10.x86_64 ladspa-vcf-debuginfo-0.0.5-bp155.2.10.x86_64 ladspa-vlevel-debuginfo-0.5-bp155.2.10.x86_64 libX11-6-debuginfo-1.6.5-150000.3.33.1.x86_64 libXau6-debuginfo-1.0.8-1.26.x86_64 libXcursor1-debuginfo-1.1.15-1.18.x86_64 libXext6-debuginfo-1.3.3-1.30.x86_64 libXfixes3-debuginfo-6.0.0-150400.1.4.x86_64 libXi-devel-debuginfo-1.7.9-3.2.1.x86_64 libXinerama1-debuginfo-1.1.3-1.22.x86_64 libXrandr2-debuginfo-1.5.1-2.17.x86_64 libXrender1-debuginfo-0.9.10-1.30.x86_64 libasound2-debuginfo-1.2.8-150500.1.1.x86_64 libcap2-debuginfo-2.63-150400.3.3.1.x86_64 libgcc_s1-debuginfo-14.2.0+git10526-150000.1.6.1.x86_64 libgcrypt20-debuginfo-1.9.4-150500.10.19.x86_64 libgpg-error0-debuginfo-1.42-150400.1.101.x86_64 libjack0-debuginfo-1.9.12-150000.3.3.1.x86_64 liblz4-1-debuginfo-1.9.3-150400.1.7.x86_64 libpulse0-debuginfo-15.0-150400.4.4.1.x86_64 libstdc++6-debuginfo-14.2.0+git10526-150000.1.6.1.x86_64 libsystemd0-debuginfo-249.17-150400.8.46.1.x86_64 libxcb-render0-debuginfo-1.13-150000.3.11.1.x86_64 libxcb-shm0-debuginfo-1.13-150000.3.11.1.x86_64 libxcb1-debuginfo-1.13-150000.3.11.1.x86_64 libzstd1-debuginfo-1.5.0-150400.3.3.1.x86_64
(gdb) bt
#0 0x00007ffff72c9aa9 in ?? () from /opt/Ardour-9.0.pre0.1806/lib/libardour.so.3
#1 0x00007ffff7377721 in ARDOUR::AudioRegion::_add_plugin(std::shared_ptr<ARDOUR::RegionFxPlugin>, std::shared_ptr<ARDOUR::RegionFxPlugin>, bool) () from /opt/Ardour-9.0.pre0.1806/lib/libardour.so.3
#2 0x00007ffff7729f40 in ARDOUR::Region::add_plugin(std::shared_ptr<ARDOUR::RegionFxPlugin>, std::shared_ptr<ARDOUR::RegionFxPlugin>) () from /opt/Ardour-9.0.pre0.1806/lib/libardour.so.3
#3 0x0000555556437fe3 in ?? ()
#4 0x00005555562c09a8 in ?? ()
#5 0x00007ffff5d2bfa8 in Glib::SignalProxyNormal::slot0_void_callback(_GObject*, void*) () from /opt/Ardour-9.0.pre0.1806/lib/libglibmm-2.4.so.1
#6 0x00007ffff5bf67d2 in g_closure_invoke () from /opt/Ardour-9.0.pre0.1806/lib/libgobject-2.0.so.0
#7 0x00007ffff5c0824a in ?? () from /opt/Ardour-9.0.pre0.1806/lib/libgobject-2.0.so.0
#8 0x00007ffff5c124ce in g_signal_emit_valist () from /opt/Ardour-9.0.pre0.1806/lib/libgobject-2.0.so.0
#9 0x00007ffff5c12b22 in g_signal_emit () from /opt/Ardour-9.0.pre0.1806/lib/libgobject-2.0.so.0
#10 0x00007ffff63658d4 in gtk_widget_activate () from /opt/Ardour-9.0.pre0.1806/lib/libytk.so.2
#11 0x00007ffff621eadc in gtk_menu_shell_activate_item () from /opt/Ardour-9.0.pre0.1806/lib/libytk.so.2
#12 0x00007ffff621ef39 in ?? () from /opt/Ardour-9.0.pre0.1806/lib/libytk.so.2
#13 0x00007ffff6205dcb in _gtk_marshal_BOOLEAN__BOXED () from /opt/Ardour-9.0.pre0.1806/lib/libytk.so.2
#14 0x00007ffff5bf67d2 in g_closure_invoke () from /opt/Ardour-9.0.pre0.1806/lib/libgobject-2.0.so.0
#15 0x00007ffff5c07e29 in ?? () from /opt/Ardour-9.0.pre0.1806/lib/libgobject-2.0.so.0
#16 0x00007ffff5c11bb5 in g_signal_emit_valist () from /opt/Ardour-9.0.pre0.1806/lib/libgobject-2.0.so.0
#17 0x00007ffff5c12b22 in g_signal_emit () from /opt/Ardour-9.0.pre0.1806/lib/libgobject-2.0.so.0
#18 0x00007ffff6367cc4 in ?? () from /opt/Ardour-9.0.pre0.1806/lib/libytk.so.2
#19 0x00007ffff620422d in gtk_propagate_event () from /opt/Ardour-9.0.pre0.1806/lib/libytk.so.2
#20 0x00007ffff62047db in gtk_main_do_event () from /opt/Ardour-9.0.pre0.1806/lib/libytk.so.2
#21 0x00007ffff604512c in ?? () from /opt/Ardour-9.0.pre0.1806/lib/libydk.so.2
#22 0x00007ffff5dd8a73 in g_main_context_dispatch () from /opt/Ardour-9.0.pre0.1806/lib/libglib-2.0.so.0
#23 0x00007ffff5dd8cf8 in ?? () from /opt/Ardour-9.0.pre0.1806/lib/libglib-2.0.so.0
#24 0x00007ffff5dd9023 in g_main_loop_run () from /opt/Ardour-9.0.pre0.1806/lib/libglib-2.0.so.0
#25 0x00007ffff620339a in gtk_main () from /opt/Ardour-9.0.pre0.1806/lib/libytk.so.2
#26 0x00007ffff6a4dfdb in Gtkmm2ext::UI::run(Receiver&) () from /opt/Ardour-9.0.pre0.1806/lib/libgtkmm2ext.so.0
#27 0x0000555555ba3016 in ?? ()
#28 0x00007ffff4fa224d in __libc_start_main () from /lib64/libc.so.6
#29 0x0000555555ba8e9a in ?? ()
Alas, no.
There have not been any significant changes to VST3 plugin hosting since Ardour 8.8.
A debug version with line number would be handy here, or a step by step recipe how to produce this crash.