View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0010352 | ardour | bugs | public | 2026-05-20 14:43 | 2026-05-20 14:43 |
| Reporter | delt | Assigned To | |||
| Priority | normal | Severity | crash | Reproducibility | random |
| Status | new | Resolution | open | ||
| Platform | x86_64 | OS | Void Linux | OS Version | kernel 6.18.31_1 |
| Product Version | 9.5 | ||||
| Summary | 0010352: Guitarix (LV2) plugins, multiple instances: closing UI sometimes causes crash with X11 glyph error | ||||
| Description | When using several instances of the same Guitarix plugin, closing the UI of one of them causes a X11 crash / invalid glyph error. Odds of crash happening seems to increase with number of controls the plugin has, and number of instances open. From suil_x11_wrapper_idle (data=0x5555b148eb70) at ../libs/tk/suil/x11_in_gtk2.c:457 > https://github.com/Ardour/ardour/blob/master/libs/tk/suil/x11_in_gtk2.c#L457 static gboolean suil_x11_wrapper_idle(void* data) { SuilX11Wrapper* const wrap = SUIL_X11_WRAPPER(data); wrap->idle_iface->idle(wrap->instance->handle); return TRUE; // Continue calling } However the LV2 spec says: /** Destroy the UI. The host must not try to access the widget after calling this function. */ void (*cleanup)(LV2UI_Handle ui); My first guess is that with the relatively slow interface of Guitarix plugins, they expose a race condition which causes this callback to continue firing after the UI is being taken down. | ||||
| Steps To Reproduce | 1. start a new project in Ardour 2. double click the master strip in the mixer window 3. add 4 or 5 instances of the SAME Guitarix plugin (more controls -> more odds of crashing) 4. double click the instances of the plugin if their UI isn't visible 5. futz around with the controls, just randomly changing stuff 6. close the UI of one of the plugins (repeat 5 and 6 until it crashes, may take several tries) | ||||
| Additional Information | Backtrace with both Ardour and Guitarix debug-built: Thread 1 "ArdourGUI" hit Breakpoint 1, gdk_x_error (display=0x55558042e3c0, error=0x7fffffffd2f0) at ../libs/tk/ydk/x11/gdkmain-x11.c:458 458 { (gdb) bt #0 gdk_x_error (display=0x55558042e3c0, error=0x7fffffffd2f0) at ../libs/tk/ydk/x11/gdkmain-x11.c:458 0000001 0x00007ffff28e5f3c in _XError () from /usr/lib/libX11.so.6 #2 0x00007ffff28e2bbf in ?? () from /usr/lib/libX11.so.6 #3 0x00007ffff28e2c6d in ?? () from /usr/lib/libX11.so.6 0000004 0x00007ffff28e36b2 in _XEventsQueued () from /usr/lib/libX11.so.6 0000005 0x00007ffff28d4517 in XPending () from /usr/lib/libX11.so.6 #6 0x00007fffb001bc69 in os_run_embedded (main=0x55557eff0738) at ../src/LV2/xputty/xwidget-linux.cpp:518 #7 0x00007fffb0016acd in ui_idle (handle=<optimized out>) at ../src/LV2/xputty/lv2_plugin/lv2_plugin.cc:528 0000008 0x00007fffd91fd826 in suil_x11_wrapper_idle (data=0x55557d196c20) at ../libs/tk/suil/x11_in_gtk2.c:457 0000009 0x00007ffff4108eaa in ?? () from /usr/lib/libglib-2.0.so.0 0000010 0x00007ffff4104a10 in ?? () from /usr/lib/libglib-2.0.so.0 0000011 0x00007ffff4108077 in ?? () from /usr/lib/libglib-2.0.so.0 0000012 0x00007ffff4108a8f in g_main_loop_run () from /usr/lib/libglib-2.0.so.0 0000013 0x00007ffff3d85768 in IA__gtk_main () at ../libs/tk/ytk/gtkmain.c:1213 0000014 0x00007ffff44fd41b in Gtk::Main::run_impl (this=0x555557ff5880) at ../libs/tk/ytkmm/main.cc:537 #15 0x00007ffff44fd1e3 in Gtk::Main::run () at ../libs/tk/ytkmm/main.cc:480 0000016 0x00007ffff4d80a5e in Gtkmm2ext::UI::run (this=0x555558009bf0, old_receiver=...) at ../libs/gtkmm2ext/gtk_ui.cc:319 #17 0x00005555565694f7 in main (argc=1, argv=0x7fffffffdb78) at ../gtk2_ardour/main.cc:471 (gdb) | ||||
| Tags | No tags attached. | ||||
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2026-05-20 14:43 | delt | New Issue |