In case of Ardour TAL calls LV2PluginUI::write_from_ui(). In the linked backtrace this happens concurrently with Ardour calling LV2PluginUI::output_update() in the GUI thread. The latter clears a std::map<> while the former writes into the same std::map<>. This leads to memory corruption, segfault.
TAL-Vocoder is calling
LV2UI_Write_Function
from a non-GUI thread.https://paste.debian.net/hidden/18382061/
In case of Ardour TAL calls
LV2PluginUI::write_from_ui()
. In the linked backtrace this happens concurrently with Ardour callingLV2PluginUI::output_update()
in the GUI thread. The latter clears astd::map<>
while the former writes into the samestd::map<>
. This leads to memory corruption, segfault.From LV2 specs http://lv2plug.in/ns/extensions/ui
would indicate that a plugin GUI must not call the
LV2UI_Write_Function
from another thread than the main UI or the idle-callback.