Software
OS: Arch
Ardour version: Ardour6.2.0 (built using 6.2 and GCC version 10.1.0)
Helm version: Helm 0.9.0
Sitala version: sitala beta 2
Behavior
I can create a session with multiple tracking using various plugins as expected.
I can add a Helm track (VST or LV2).
I can add a Sitala track.
If I create a session with both Helm and Sitala tracks, Ardour crashes when I attempt to open the Helm plugin UI.
This continues between reboots of Ardour, Jack, and my computer. It continues if I delete the existing Helm track and try to add another one (again, LV2 or VST).
Error
Running Ardour from the cli gives me this error:
We’ve seen issues like this when plugins were dynamically linked and exposed symbols.
Since all plugins share the same memory space they must be self-contained and not rely or provide external resources that may conflict with other plugins.
In short plugins must be statically linked and not expose any symbols.
The former can be check with ldd helm.so; ldd sitala.so – that should only list libc*, libX* and similar mandatory system libs.
More importantly check the latter with objdump -t helm.so; objdump -t sitala.so – The output must be empty: “no symbols”. Otherwise the plugin symbols may conflict.
That’s bad news. Ideally they should be statically linked and not depend on any system-wide libs at all (safe for 3, 4 mandatory libs, like libc, that have versioned symbols, and libX11 that needs to match the X server).
Ardour6 --gdb
(gdb) run
# make it crash
(gdb) thread apply all bt
When plugins are not statically linked (nor hide symbols), a plugin may a function with the same name from a foreign lib (or even from another plugin). e.g. Helm may call a publicly exposed function from Sitala. Or Sitala may call a function from a library that is pulled in by Helm (or Ardour).