View Issue Details

IDProjectCategoryView StatusLast Update
0010033ardourbugspublic2025-11-13 02:53
Reporterdelt Assigned To 
PriorityhighSeveritycrashReproducibilitysometimes
Status newResolutionopen 
PlatformUbuntuOSLinuxOS Version(any)
Product Version8.12 
Summary0010033: Random crashes / X11 errors when closing LV2 plugin windows after they've been open for a while
DescriptionWhen attempting to close the UI of a (LV2?) plugin, Ardour throws a BadGlyph X11 error and then either segfaults or exits on trap/assert. This happens mostly with Guitarix plugins especially GxAmplifier (mono and stereo) but also with others - i've even had LSP parametric EQ crash Ardour like this a few times. Happens with Ardour 8.12 and git repo of Ardour 9 - both self compiled.

All of these exact same plugins / same versions are running rock solid in Carla, where this hasn't happened once as far as i can remember. I haven't thoroughly tested with VST plugins since i don't use those much, but i don't remember a specific instance where this happened to a VST2 or VST3.
Steps To Reproduce- load or create a project that uses, for example, a Guitarix LV2 plugin like gxAmplifier
- open the UI of such a plugin, leave it open for a few minutes - maybe less if you use/tweak the UI
- attempt to close the window
Additional InformationLinux Mint 22.1, xfce on X11, dual external screens on a Lenovo laptop.
TagsNo tags attached.

Activities

x42

2025-11-10 03:49

administrator   ~0029496

Last edited: 2025-11-10 03:50

Could this be due to you patches https://discourse.ardour.org/t/how-do-i-remove-all-plugin-cache-metadata/112519 and possible memory corruption?

Unlike many other LV2 hosts, Ardour does not sandbox isolate plugins, and loads the all in the same shared memory space and also runs the plugins with in-place processing.

Since you compile Ardour yourself please add ASAN (adress sanitizer), which could indicate issues like that, and do a debug build (no --optimize) to get a prpoer crash report.

./waf configure --strict --ptformat --cxx17 --use-lld --backtrace --libjack=weak  --address-sanitizer


Please also run Ardour from the source tree debugger which may shed some light: ./gtk2_ardour/ardbg
and get a backtrace of the crash if possible.. see https://ardour.org/debugging_ardour

x42

2025-11-10 03:54

administrator   ~0029497

Last edited: 2025-11-10 03:55

> i've even had LSP parametric EQ crash Ardour like this a few times.

They recently also changed port-layout adding ports, which caused issues.

An other possibility would be mesa 25.2.2 that can cause openGL based Plugin UIs in Ardour to crash:
https://discourse.ardour.org/t/lsp-plugins-1-2-23-released/112143/79
https://tracker.ardour.org/view.php?id=10003

delt

2025-11-10 12:48

reporter   ~0029499

> Could this be due to you patches https://discourse.ardour.org/t/how-do-i-remove-all-plugin-cache-metadata/112519 and possible memory corruption?

Very unlikely, since this also happens with the stock/upstream versions of gxAmp, and also with other guitarix plugins though not as often - even when running Ardour from a completely clean home directory.

> ./waf configure --strict --ptformat --cxx17 --use-lld --backtrace --libjack=weak --address-sanitizer

Recompiled with these flags, but i'm having trouble getting ardour to get past startup. asan isn't letting ardour run past certain errors, i can bypass those with ASAN_OPTIONS environment variable, but this assertion fails while scanning plugins at startup:

ardour-9.0.pre0.1982: ../libs/gtkmm2ext/bindings.cc:597: void Gtkmm2ext::Bindings::copy_from_parent(bool): Assertion `_parent' failed.

Thread 1 "ArdourGUI" received signal SIGABRT, Aborted.
__pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:44
warning: 44 ./nptl/pthread_kill.c: No such file or directory


I'll try again this afternoon, and report back as soon as i have a proper backtrace.

delt

2025-11-10 20:38

reporter   ~0029500

This bug tracker won't let me attach files for some reason.

This is the end of the output of running 'ardbg' script from Ardour 8.12.0 compiled with above flags (--strict --ptformat etc) until crash caused by closing plugin UI, then doing a backtrace:


(ardour-8.12.0:23813): Gdk-ERROR **: 15:31:07.504: The program 'ardour-8.12.0' received an X Window System error.
This probably reflects a bug in the program.
The error was 'RenderBadGlyph (invalid Glyph parameter)'.
  (Details: serial 10128 error_code 146 request_code 139 minor_code 22)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)

Thread 1 "ArdourGUI" received signal SIGTRAP, Trace/breakpoint trap.
0x00007ffff3f190ef in g_log_structured_array () from /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
(gdb) bt
#0 0x00007ffff3f190ef in g_log_structured_array () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000001 0x00007ffff3f193dc in g_log_default_handler () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2 0x0000555557b11222 in ardour_g_log
    (log_domain=0x7ffff4b76aa1 "Gdk", log_level=6, message=0x7fff50008c20 "The program 'ardour-8.12.0' received an X Window System error.\nThis probably reflects a bug in the program.\nThe error was 'RenderBadGlyph (invalid Glyph parameter)'.\n (Details: serial 10128 error_cod"..., user_data=0x0)
    at ../gtk2_ardour/main.cc:125
#3 0x00007ffff3f19680 in g_logv () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000004 0x00007ffff3f19963 in g_log () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000005 0x00007ffff4bf68f3 in gdk_x_error (display=0x555596dc3e50, error=0x7fffffffbb40)
    at ../libs/tk/ydk/x11/gdkmain-x11.c:486
#6 0x00007ffff35257fb in _XError () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
#7 0x00007ffff352590f in ??? () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
0000008 0x00007ffff35259cd in ??? () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
0000009 0x00007ffff3525a52 in _XEventsQueued () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
0000010 0x00007ffff3518951 in XPending () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
0000011 0x00007fffaff154bd in ??? () at /usr/lib/lv2/gx_amp.lv2/gx_amp_gui.so
0000012 0x00007fffaff10811 in ??? () at /usr/lib/lv2/gx_amp.lv2/gx_amp_gui.so
0000013 0x00007fffde0aee9a in suil_x11_wrapper_idle (data=0x555596e58330)
    at ../libs/tk/suil/x11_in_gtk2.c:457
0000014 0x00007ffff3f15532 in ??? () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
#15 0x00007ffff3f1449e in ??? () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000016 0x00007ffff3f73737 in ??? () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
#17 0x00007ffff3f14f87 in g_main_loop_run () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000018 0x00007ffff42bc12b in IA__gtk_main () at ../libs/tk/ytk/gtkmain.c:1213
0000019 0x00007ffff496ade9 in Gtk::Main::run_impl (this=0x555559001700) at ../libs/tk/ytkmm/main.cc:537
0000020 0x00007ffff496ab85 in Gtk::Main::run () at ../libs/tk/ytkmm/main.cc:480
0000021 0x00007ffff4f96e92 in Gtkmm2ext::UI::run (this=0x555558fe5be0, old_receiver=...)
    at ../libs/gtkmm2ext/gtk_ui.cc:305
0000022 0x0000555557b12814 in main (argc=1, argv=0x7fffffffc3f8) at ../gtk2_ardour/main.cc:471
(gdb)

x42

2025-11-10 20:44

administrator   ~0029501

OK, so you need to compile gx_amp with debug symbols.. and should be able to find the function and line number in /usr/lib/lv2/gx_amp.lv2/gx_amp_gui.so`

delt

2025-11-10 21:58

reporter   ~0029502

> OK, so you need to compile gx_amp with debug symbols.. and should be able to find the function and line number in /usr/lib/lv2/gx_amp.lv2/gx_amp_gui.so`

Just did, then made it crash again by closing gxAmp window, this time anything gx isn't even mentioned:

=================================================================
==13998==ERROR: AddressSanitizer: alloc-dealloc-mismatch (operator new [] vs operator delete) on 0x7fffdb7aa800
    #0 0x7ffff78ff0a8 in operator delete(void*) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:152
    0000001 0x7fffa0f01449 (/usr/lib/lv2/drumgizmo.lv2/drumgizmo.so+0x116449) (BuildId: cc0930d6cc32d289c2bcee1b3f94ef5692a6fc19)
    #2 0x7fffa0f01909 (/usr/lib/lv2/drumgizmo.lv2/drumgizmo.so+0x116909) (BuildId: cc0930d6cc32d289c2bcee1b3f94ef5692a6fc19)
    #3 0x7fffa0e5cfa7 (/usr/lib/lv2/drumgizmo.lv2/drumgizmo.so+0x71fa7) (BuildId: cc0930d6cc32d289c2bcee1b3f94ef5692a6fc19)
    0000004 0x7fffa0e5beaf (/usr/lib/lv2/drumgizmo.lv2/drumgizmo.so+0x70eaf) (BuildId: cc0930d6cc32d289c2bcee1b3f94ef5692a6fc19)
    0000005 0x7ffff6f00a11 in lilv_instance_run ../../../../include/lilv-0/lilv/lilv.h:1959
    #6 0x7ffff6f16317 in ARDOUR::LV2Plugin::run(unsigned int, bool) ../libs/ardour/lv2_plugin.cc:3405
    #7 0x7ffff6f13c72 in ARDOUR::LV2Plugin::connect_and_run(ARDOUR::BufferSet&, long, long, double, ARDOUR::ChanMapping const&, ARDOUR::ChanMapping const&, unsigned int, long) ../libs/ardour/lv2_plugin.cc:3063
    0000008 0x7ffff6b26288 in ARDOUR::PluginInsert::connect_and_run(ARDOUR::BufferSet&, long, long, double, unsigned int, long, bool) ../libs/ardour/plugin_insert.cc:1123
    0000009 0x7ffff6b27e81 in ARDOUR::PluginInsert::run(ARDOUR::BufferSet&, long, long, double, unsigned int, bool) ../libs/ardour/plugin_insert.cc:1355
    0000010 0x7ffff6c44cf6 in ARDOUR::Route::process_output_buffers(ARDOUR::BufferSet&, long, long, unsigned int, bool, bool) ../libs/ardour/route.cc:587
    0000011 0x7ffff6c45f44 in ARDOUR::Route::run_route(long, long, unsigned int, bool, bool) ../libs/ardour/route.cc:778
    0000012 0x7ffff6c5c965 in ARDOUR::Route::no_roll_unlocked(unsigned int, long, long, bool) ../libs/ardour/route.cc:4144
    0000013 0x7ffff6a67986 in ARDOUR::MidiTrack::no_roll_unlocked(unsigned int, long, long, bool) ../libs/ardour/midi_track.cc:398
    0000014 0x7ffff6c5c7fd in ARDOUR::Route::no_roll(unsigned int, long, long, bool) ../libs/ardour/route.cc:4114
    #15 0x7ffff68f0e89 in ARDOUR::Graph::process_one_route(ARDOUR::Route*) ../libs/ardour/graph.cc:546
    0000016 0x7ffff6c45d65 in ARDOUR::Route::process() ../libs/ardour/route.cc:749
    #17 0x7ffff68fcc9c in ARDOUR::GraphNode::run(ARDOUR::GraphChain const*) ../libs/ardour/graphnode.cc:73
    0000018 0x7ffff68eeddf in ARDOUR::Graph::run_one() ../libs/ardour/graph.cc:344
    0000019 0x7ffff68ef27e in ARDOUR::Graph::helper_thread() ../libs/ardour/graph.cc:372
    0000020 0x7ffff68fbf34 in boost::_mfi::mf0<void, ARDOUR::Graph>::operator()(ARDOUR::Graph*) const /usr/include/boost/bind/mem_fn_template.hpp:49
    0000021 0x7ffff68fb6a0 in void boost::_bi::list1<boost::_bi::value<ARDOUR::Graph*> >::operator()<boost::_mfi::mf0<void, ARDOUR::Graph>, boost::_bi::list0>(boost::_bi::type<void>, boost::_mfi::mf0<void, ARDOUR::Graph>&, boost::_bi::list0&, int) /usr/include/boost/bind/bind.hpp:239
    0000022 0x7ffff68fa3f9 in boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::Graph>, boost::_bi::list1<boost::_bi::value<ARDOUR::Graph*> > >::operator()() /usr/include/boost/bind/bind.hpp:1274
    0000023 0x7ffff68f8a6e in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::Graph>, boost::_bi::list1<boost::_bi::value<ARDOUR::Graph*> > >, void>::invoke(boost::detail::function::function_buffer&) /usr/include/boost/function/function_template.hpp:158
    #24 0x5555573b4b62 in boost::function0<void>::operator()() const /usr/include/boost/function/function_template.hpp:771
    0000025 0x7fffe49bce78 in ARDOUR::JACKAudioBackend::_start_process_thread(void*) ../libs/backends/jack/jack_audiobackend.cc:896
    0000026 0x7ffff785ea41 in asan_thread_start ../../../../src/libsanitizer/asan/asan_interceptors.cpp:234
    0000027 0x7ffff289caa3 in start_thread nptl/pthread_create.c:447
    0000028 0x7ffff2929c6b in clone3 ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78

0x7fffdb7aa800 is located 0 bytes inside of 131072-byte region [0x7fffdb7aa800,0x7fffdb7ca800)
allocated by thread T0 here:
    #0 0x7ffff78fe6c8 in operator new[](unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:98
    0000001 0x7fffa0f01439 (/usr/lib/lv2/drumgizmo.lv2/drumgizmo.so+0x116439) (BuildId: cc0930d6cc32d289c2bcee1b3f94ef5692a6fc19)

SUMMARY: AddressSanitizer: alloc-dealloc-mismatch ../../../../src/libsanitizer/asan/asan_new_delete.cpp:152 in operator delete(void*)
==13998==HINT: if you don't care about these errors you may set ASAN_OPTIONS=alloc_dealloc_mismatch=0
=================================================================
==13998==ERROR: AddressSanitizer: alloc-dealloc-mismatch (operator new [] vs operator delete) on 0x7fffd4e53800
    #0 0x7ffff78ff0a8 in operator delete(void*) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:152
    0000001 0x7fffa0f01449 (/usr/lib/lv2/drumgizmo.lv2/drumgizmo.so+0x116449) (BuildId: cc0930d6cc32d289c2bcee1b3f94ef5692a6fc19)
    #2 0x7fffa0f01909 (/usr/lib/lv2/drumgizmo.lv2/drumgizmo.so+0x116909) (BuildId: cc0930d6cc32d289c2bcee1b3f94ef5692a6fc19)
    #3 0x7fffa0e5cfa7 (/usr/lib/lv2/drumgizmo.lv2/drumgizmo.so+0x71fa7) (BuildId: cc0930d6cc32d289c2bcee1b3f94ef5692a6fc19)
    0000004 0x7fffa0e5beaf (/usr/lib/lv2/drumgizmo.lv2/drumgizmo.so+0x70eaf) (BuildId: cc0930d6cc32d289c2bcee1b3f94ef5692a6fc19)
    0000005 0x7ffff6f00a11 in lilv_instance_run ../../../../include/lilv-0/lilv/lilv.h:1959
    #6 0x7ffff6f16317 in ARDOUR::LV2Plugin::run(unsigned int, bool) ../libs/ardour/lv2_plugin.cc:3405
    #7 0x7ffff6f13c72 in ARDOUR::LV2Plugin::connect_and_run(ARDOUR::BufferSet&, long, long, double, ARDOUR::ChanMapping const&, ARDOUR::ChanMapping const&, unsigned int, long) ../libs/ardour/lv2_plugin.cc:3063
    0000008 0x7ffff6b26288 in ARDOUR::PluginInsert::connect_and_run(ARDOUR::BufferSet&, long, long, double, unsigned int, long, bool) ../libs/ardour/plugin_insert.cc:1123
    0000009 0x7ffff6b27e81 in ARDOUR::PluginInsert::run(ARDOUR::BufferSet&, long, long, double, unsigned int, bool) ../libs/ardour/plugin_insert.cc:1355
    0000010 0x7ffff6c44cf6 in ARDOUR::Route::process_output_buffers(ARDOUR::BufferSet&, long, long, unsigned int, bool, bool) ../libs/ardour/route.cc:587
    0000011 0x7ffff6c45f44 in ARDOUR::Route::run_route(long, long, unsigned int, bool, bool) ../libs/ardour/route.cc:778
    0000012 0x7ffff6c5c965 in ARDOUR::Route::no_roll_unlocked(unsigned int, long, long, bool) ../libs/ardour/route.cc:4144
    0000013 0x7ffff6a67986 in ARDOUR::MidiTrack::no_roll_unlocked(unsigned int, long, long, bool) ../libs/ardour/midi_track.cc:398
    0000014 0x7ffff6c5c7fd in ARDOUR::Route::no_roll(unsigned int, long, long, bool) ../libs/ardour/route.cc:4114
    #15 0x7ffff68f0e89 in ARDOUR::Graph::process_one_route(ARDOUR::Route*) ../libs/ardour/graph.cc:546
    0000016 0x7ffff6c45d65 in ARDOUR::Route::process() ../libs/ardour/route.cc:749
    #17 0x7ffff68fcc9c in ARDOUR::GraphNode::run(ARDOUR::GraphChain const*) ../libs/ardour/graphnode.cc:73
    0000018 0x7ffff68eeddf in ARDOUR::Graph::run_one() ../libs/ardour/graph.cc:344
    0000019 0x7ffff68ef27e in ARDOUR::Graph::helper_thread() ../libs/ardour/graph.cc:372
    0000020 0x7ffff68fbf34 in boost::_mfi::mf0<void, ARDOUR::Graph>::operator()(ARDOUR::Graph*) const /usr/include/boost/bind/mem_fn_template.hpp:49
    0000021 0x7ffff68fb6a0 in void boost::_bi::list1<boost::_bi::value<ARDOUR::Graph*> >::operator()<boost::_mfi::mf0<void, ARDOUR::Graph>, boost::_bi::list0>(boost::_bi::type<void>, boost::_mfi::mf0<void, ARDOUR::Graph>&, boost::_bi::list0&, int) /usr/include/boost/bind/bind.hpp:239
    0000022 0x7ffff68fa3f9 in boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::Graph>, boost::_bi::list1<boost::_bi::value<ARDOUR::Graph*> > >::operator()() /usr/include/boost/bind/bind.hpp:1274
    0000023 0x7ffff68f8a6e in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::Graph>, boost::_bi::list1<boost::_bi::value<ARDOUR::Graph*> > >, void>::invoke(boost::detail::function::function_buffer&) /usr/include/boost/function/function_template.hpp:158
    #24 0x5555573b4b62 in boost::function0<void>::operator()() const /usr/include/boost/function/function_template.hpp:771
    0000025 0x7fffe49bce78 in ARDOUR::JACKAudioBackend::_start_process_thread(void*) ../libs/backends/jack/jack_audiobackend.cc:896
    0000026 0x7ffff785ea41 in asan_thread_start ../../../../src/libsanitizer/asan/asan_interceptors.cpp:234
    0000027 0x7ffff289caa3 in start_thread nptl/pthread_create.c:447
    0000028 0x7ffff2929c6b in clone3 ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78

0x7fffd4e53800 is located 0 bytes inside of 131072-byte region [0x7fffd4e53800,0x7fffd4e73800)
allocated by thread T0 here:
    #0 0x7ffff78fe6c8 in operator new[](unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:98
    0000001 0x7fffa0f01439 (/usr/lib/lv2/drumgizmo.lv2/drumgizmo.so+0x116439) (BuildId: cc0930d6cc32d289c2bcee1b3f94ef5692a6fc19)

SUMMARY: AddressSanitizer: alloc-dealloc-mismatch ../../../../src/libsanitizer/asan/asan_new_delete.cpp:152 in operator delete(void*)
==13998==HINT: if you don't care about these errors you may set ASAN_OPTIONS=alloc_dealloc_mismatch=0
Established under name 'Ardour-13998'
locate to 0 took 379936 usecs for 80 tracks = 4749 per track
locate to 9273971 took 308481 usecs for 40 tracks = 7712 per track
[Thread 0x7fffd66f26c0 (LWP 14184) exited]
[New Thread 0x7fffd66f26c0 (LWP 14376)]
[New Thread 0x7fff0d2366c0 (LWP 14377)]
[New Thread 0x7fff0c43c6c0 (LWP 14378)]
[New Thread 0x7fff0850b6c0 (LWP 14379)]
[New Thread 0x7fff072016c0 (LWP 14380)]
[New Thread 0x7fff05af66c0 (LWP 14381)]
[New Thread 0x7fff03ef16c0 (LWP 14382)]
[New Thread 0x7ffef8bff6c0 (LWP 14383)]
[New Thread 0x7fffa7a2ccc0 (LWP 15671)]
[Thread 0x7fffa7a2ccc0 (LWP 15671) exited]
re-registration of JACK port named system:midi_playback_2
re-registration of JACK port named system:midi_capture_3
[New Thread 0x7fffa7a2ccc0 (LWP 15675)]
[Thread 0x7fffa7a2ccc0 (LWP 15675) exited]

(ardour-8.12.0:13998): Gdk-ERROR **: 16:54:03.307: The program 'ardour-8.12.0' received an X Window System error.
This probably reflects a bug in the program.
The error was 'RenderBadGlyph (invalid Glyph parameter)'.
  (Details: serial 10214 error_code 146 request_code 139 minor_code 22)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)

Thread 1 "ArdourGUI" received signal SIGTRAP, Trace/breakpoint trap.
0x00007ffff3d190ef in g_log_structured_array () from /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
(gdb)

delt

2025-11-10 22:46

reporter   ~0029503

oh duh i forgot to produce a backtrace.. but even though i compiled guitarix with debug enabled, i'm still getting (???) from gdb:

0x00007ffff3f190ef in g_log_structured_array () from /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
(gdb) bt
#0 0x00007ffff3f190ef in g_log_structured_array () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000001 0x00007ffff3f193dc in g_log_default_handler () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2 0x0000555557b11222 in ardour_g_log
    (log_domain=0x7ffff4b76aa1 "Gdk", log_level=6, message=0x555558779290 "The program 'ardour-8.12.0' received an X Window System error.\nThis probably reflects a bug in the program.\nThe error was 'RenderBadGlyph (invalid Glyph parameter)'.\n (Details: serial 11102 error_cod"..., user_data=0x0)
    at ../gtk2_ardour/main.cc:125
#3 0x00007ffff3f19680 in g_logv () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000004 0x00007ffff3f19963 in g_log () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000005 0x00007ffff4bf68f3 in gdk_x_error (display=0x555576db6220, error=0x7fffffffbb10)
    at ../libs/tk/ydk/x11/gdkmain-x11.c:486
#6 0x00007ffff35257fb in _XError () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
#7 0x00007ffff352590f in ??? () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
0000008 0x00007ffff35259cd in ??? () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
0000009 0x00007ffff3525a52 in _XEventsQueued () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
0000010 0x00007ffff3518951 in XPending () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
0000011 0x00007ffface0dd2d in ??? () at /usr/lib/lv2/gx_amp.lv2/gx_amp_gui.so
0000012 0x00007ffface08951 in ??? () at /usr/lib/lv2/gx_amp.lv2/gx_amp_gui.so
0000013 0x00007fffde559e9a in suil_x11_wrapper_idle (data=0x55557675e430)
    at ../libs/tk/suil/x11_in_gtk2.c:457
0000014 0x00007ffff3f15532 in ??? () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
#15 0x00007ffff3f1449e in ??? () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000016 0x00007ffff3f73737 in ??? () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
#17 0x00007ffff3f14f87 in g_main_loop_run () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000018 0x00007ffff42bc12b in IA__gtk_main () at ../libs/tk/ytk/gtkmain.c:1213
0000019 0x00007ffff496ade9 in Gtk::Main::run_impl (this=0x555558ff8a00) at ../libs/tk/ytkmm/main.cc:537
0000020 0x00007ffff496ab85 in Gtk::Main::run () at ../libs/tk/ytkmm/main.cc:480
0000021 0x00007ffff4f96e92 in Gtkmm2ext::UI::run (this=0x555558fe7c50, old_receiver=...)
    at ../libs/gtkmm2ext/gtk_ui.cc:305
0000022 0x0000555557b12814 in main (argc=1, argv=0x7fffffffc3d8) at ../gtk2_ardour/main.cc:471
(gdb)

x42

2025-11-10 22:58

administrator   ~0029504

looks like gx was stripped of debug symbols

0x00007ffface0dd2d in ??? () at /usr/lib/lv2/gx_amp.lv2/gx_amp_gui.so

x42

2025-11-10 23:04

administrator   ~0029505

You could search guitarix for places where it calls `XPending`, and guess why it crashes there..

I suspect the same issue might also happen in Carla and if Carla, or other hosts, and if they ignore XErrors, it'll be more or less fine if this happens during destruction of a sandboxed plugin GUI.
In any case gx_amp works fine here, but I have a somewhat older gx (from debian).

The drumgizmo issue is not fatal, unrelated, and just a memory leak..

delt

2025-11-12 00:33

reporter   ~0029507

Another one with gx_amp, this time the plugin doesn't get mentioned in the backtrace:

[New Thread 0x7ffe84ff96c0 (LWP 60658)]
[New Thread 0x7ffe63fff6c0 (LWP 60659)]
[New Thread 0x7ffe637fe6c0 (LWP 60660)]
[New Thread 0x7ffe62ffd6c0 (LWP 60661)]
using block size: 256
mlock 694591 bytes
[New Thread 0x7ffe627fc6c0 (LWP 60662)]
[Detaching after vfork from child process 60663]
[New Thread 0x7ffe61ffb6c0 (LWP 60664)]
[New Thread 0x7ffe617fa6c0 (LWP 60665)]
[New Thread 0x7ffe60ff96c0 (LWP 60666)]
[New Thread 0x7ffe47fff6c0 (LWP 60667)]
[New Thread 0x7ffe477fe6c0 (LWP 60672)]
[New Thread 0x7ffe46ffd6c0 (LWP 60673)]
[New Thread 0x7ffe467fc6c0 (LWP 60674)]
locate to 0 took 280155 usecs for 80 tracks = 3502 per track
Established under name 'Ardour-60371'
locate to 5858905 took 557608 usecs for 40 tracks = 13940 per track
[New Thread 0x7ffe45ffb6c0 (LWP 60700)]
[New Thread 0x7ffe457fa6c0 (LWP 60701)]
[New Thread 0x7ffe44ff96c0 (LWP 60702)]
[New Thread 0x7ffde3fff6c0 (LWP 60703)]
[New Thread 0x7ffddb5ff6c0 (LWP 60704)]
[New Thread 0x7ffde37fe6c0 (LWP 60705)]
[New Thread 0x7ffde2ffd6c0 (LWP 60706)]
[New Thread 0x7ffde27fc6c0 (LWP 60707)]
[Thread 0x7fff8ffff6c0 (LWP 60525) exited]

(ardour-8.12.0:60371): Gdk-ERROR **: 19:30:40.018: The program 'ardour-8.12.0' received an X Window System error.
This probably reflects a bug in the program.
The error was 'RenderBadGlyph (invalid Glyph parameter)'.
  (Details: serial 23100 error_code 146 request_code 139 minor_code 22)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)

Thread 1 "ArdourGUI" received signal SIGTRAP, Trace/breakpoint trap.
0x00007ffff3f190ef in g_log_structured_array () from /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
(gdb) bt full
#0 0x00007ffff3f190ef in g_log_structured_array () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000001 0x00007ffff3f193dc in g_log_default_handler () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2 0x0000555557b11222 in ardour_g_log
    (log_domain=0x7ffff4b76aa1 "Gdk", log_level=6, message=0x555598090470 "The program 'ardour-8.12.0' received an X Window System error.\nThis probably reflects a bug in the program.\nThe error was 'RenderBadGlyph (invalid Glyph parameter)'.\n (Details: serial 23100 error_cod"..., user_data=0x0)
    at ../gtk2_ardour/main.cc:125
#3 0x00007ffff3f19680 in g_logv () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000004 0x00007ffff3f19963 in g_log () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000005 0x00007ffff4bf68f3 in gdk_x_error (display=0x5555969ea960, error=0x7fffffffbaf0)
    at ../libs/tk/ydk/x11/gdkmain-x11.c:486
        buf = "RenderBadGlyph (invalid Glyph parameter)", '\000' <repeats 23 times>
        msg = 0x55559820cd30 "The program 'ardour-8.12.0' received an X Window System error.\nThis probably reflects a bug in the program.\nThe error was 'RenderBadGlyph (invalid Glyph parameter)'.\n (Details: serial 23100 error_cod"...
#6 0x00007ffff35257fb in _XError () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
#7 0x00007ffff352590f in ??? () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
0000008 0x00007ffff35259cd in ??? () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
0000009 0x00007ffff3525a52 in _XEventsQueued () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
0000010 0x00007ffff3518951 in XPending () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
0000011 0x00007fffb3712d2d in os_run_embedded (main=0x555596a78628)
    at ../src/LV2/xputty/xwidget-linux.cpp:518
        xev = {type = 0, xany = {type = 0, serial = 0, send_event = -17184, display = 0xffffffffffffffff, window = 93825043616128}, xkey = {type = 0, serial = 0, send_event = -17184, display = 0xffffffffffffffff, window = 93825043616128, root = 140737488338336, subwindow = 140737488338176, time = 3, x = -17152, y = 32767, x_root = 1464327655, y_root = 21845, state = 0, keycode = 0, same_screen = 0}, xbutton = {type = 0, serial = 0, send_event = -17184, display = 0xffffffffffffffff, window = 93825043616128, root = 140737488338336, subwindow = 140737488338176, time = 3, x = -17152, y = 32767, x_root = 1464327655, y_root = 21845, state = 0, button = 0, same_screen = 0}, xmotion = {type = 0, serial = 0, send_event = -17184, display = 0xffffffffffffffff, window = 93825043616128, root = 140737488338336, subwindow = 140737488338176, time = 3, x = -17152, y = 32767, x_root = 1464327655, y_root = 21845, state = 0, is_hint = 0 '\000', same_screen = 0}, xcrossing = {type = 0, serial = 0, send_event = -17184, display = 0xffffffffffffffff, window = 93825043616128, root = 140737488338336, subwindow = 140737488338176, time = 3, x = -17152, y = 32767, x_root = 1464327655, y_root = 21845, mode = 0, detail = 0, same_screen = 0, focus = 0, state = 0}, xfocus = {type = 0, serial = 0, send_event = -17184, display = 0xffffffffffffffff, window = 93825043616128, mode = -16992, detail = 32767}, xexpose = {type = 0, serial = 0, send_event = -17184, display = 0xffffffffffffffff, window = 93825043616128, x = -16992, y = 32767, width = -17152, height = 32767, count = 3}, xgraphicsexpose = {type = 0, serial = 0, send_event = -17184, display = 0xffffffffffffffff, drawable = 93825043616128, x = -16992, y = 32767, width = -17152, height = 32767, count = 3, major_code = 0, minor_code = -17152}, xnoexpose = {type = 0, serial = 0, send_event = -17184, display = 0xffffffffffffffff, drawable = 93825043616128, major_code = -16992, minor_code = 32767}, xvisibility = {type = 0, serial = 0, send_event = -17184, display = 0xffffffffffffffff, window = 93825043616128, state = -16992}, xcreatewindow = {type = 0, serial = 0, send_event = -17184, display = 0xffffffffffffffff, parent = 93825043616128, window = 140737488338336, x = -17152, y = 32767, width = 3, height = 0, border_width = -17152, override_redirect = 32767}, xdestroywindow = {type = 0, serial = 0, send_event = -17184, display = 0xffffffffffffffff, event = 93825043616128, window = 140737488338336}, xunmap = {type = 0, serial = 0, send_event = -17184, display = 0xffffffffffffffff, event = 93825043616128, window = 140737488338336, from_configure = -17152}, xmap = {type = 0, serial = 0, send_event = -17184, display = 0xffffffffffffffff, event = 93825043616128, window = 140737488338336, override_redirect = -17152}, xmaprequest = {type = 0, serial = 0, send_event = -17184, display = 0xffffffffffffffff, parent = 93825043616128, window = 140737488338336}, xreparent = {type = 0, serial = 0, send_event = -17184, display = 0xffffffffffffffff, event = 93825043616128, window = 140737488338336, parent = 140737488338176, x = 3, y = 0, override_redirect = -17152}, xconfigure = {type = 0, serial = 0, send_event = -17184, display = 0xffffffffffffffff, event = 93825043616128, window = 140737488338336, x = -17152, y = 32767, width = 3, height = 0, border_width = -17152, above = 93825024908775, override_redirect = 0}, xgravity = {type = 0, serial = 0, send_event = -17184, display = 0xffffffffffffffff, event = 93825043616128, window = 140737488338336, x = -17152, y = 32767}, xresizerequest = {type = 0, serial = 0, send_event = -17184, display = 0xffffffffffffffff, window = 93825043616128, width = -16992, height = 32767}, xconfigurerequest = {type = 0, serial = 0, send_event = -17184, display = 0xffffffffffffffff, parent = 93825043616128, window = 140737488338336, x = -17152, y = 32767, width = 3, height = 0, border_width = -17152, above = 93825024908775, detail = 0, value_mask = 0}, xcirculate = {type = 0, serial = 0, send_event = -17184, display = 0xffffffffffffffff, event = 93825043616--Type <RET> for more, q to quit, c to continue without paging--q
Quit
(gdb) bt
#0 0x00007ffff3f190ef in g_log_structured_array () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000001 0x00007ffff3f193dc in g_log_default_handler () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2 0x0000555557b11222 in ardour_g_log
    (log_domain=0x7ffff4b76aa1 "Gdk", log_level=6, message=0x555598090470 "The program 'ardour-8.12.0' received an X Window System error.\nThis probably reflects a bug in the program.\nThe error was 'RenderBadGlyph (invalid Glyph parameter)'.\n (Details: serial 23100 error_cod"..., user_data=0x0)
    at ../gtk2_ardour/main.cc:125
#3 0x00007ffff3f19680 in g_logv () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000004 0x00007ffff3f19963 in g_log () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000005 0x00007ffff4bf68f3 in gdk_x_error (display=0x5555969ea960, error=0x7fffffffbaf0)
    at ../libs/tk/ydk/x11/gdkmain-x11.c:486
#6 0x00007ffff35257fb in _XError () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
#7 0x00007ffff352590f in ??? () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
0000008 0x00007ffff35259cd in ??? () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
0000009 0x00007ffff3525a52 in _XEventsQueued () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
0000010 0x00007ffff3518951 in XPending () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
0000011 0x00007fffb3712d2d in os_run_embedded (main=0x555596a78628)
    at ../src/LV2/xputty/xwidget-linux.cpp:518
0000012 0x00007fffb370d951 in ui_idle (handle=<optimized out>)
    at ../src/LV2/xputty/lv2_plugin/lv2_plugin.cc:528
0000013 0x00007fffde0afe9a in suil_x11_wrapper_idle (data=0x5555969ef6e0)
    at ../libs/tk/suil/x11_in_gtk2.c:457
0000014 0x00007ffff3f15532 in ??? () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
#15 0x00007ffff3f1449e in ??? () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000016 0x00007ffff3f73737 in ??? () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
#17 0x00007ffff3f14f87 in g_main_loop_run () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000018 0x00007ffff42bc12b in IA__gtk_main () at ../libs/tk/ytk/gtkmain.c:1213
0000019 0x00007ffff496ade9 in Gtk::Main::run_impl (this=0x555559004a60) at ../libs/tk/ytkmm/main.cc:537
0000020 0x00007ffff496ab85 in Gtk::Main::run () at ../libs/tk/ytkmm/main.cc:480
0000021 0x00007ffff4f96e92 in Gtkmm2ext::UI::run (this=0x555558fe8f40, old_receiver=...)
    at ../libs/gtkmm2ext/gtk_ui.cc:305
0000022 0x0000555557b12814 in main (argc=1, argv=0x7fffffffc3b8) at ../gtk2_ardour/main.cc:471
(gdb)

As soon as i have anoter one with different plugins, i'll paste it here.

delt

2025-11-12 00:44

reporter   ~0029508

This one from closing the UI of GxCabinet (of which i never changed a single line of code)

[New Thread 0x7ffe5a7fc6c0 (LWP 62567)]
[Detaching after vfork from child process 62568]
[New Thread 0x7ffe59ffb6c0 (LWP 62569)]
[New Thread 0x7ffe597fa6c0 (LWP 62570)]
[New Thread 0x7ffe58ff96c0 (LWP 62571)]
[New Thread 0x7ffe37fff6c0 (LWP 62572)]
[New Thread 0x7ffe377fe6c0 (LWP 62577)]
[New Thread 0x7ffe36ffd6c0 (LWP 62578)]
[New Thread 0x7ffe367fc6c0 (LWP 62579)]
locate to 0 took 260794 usecs for 80 tracks = 3260 per track
Established under name 'Ardour-62315'
locate to 6314700 took 410227 usecs for 40 tracks = 10256 per track
[New Thread 0x7ffe35ffb6c0 (LWP 62605)]
[New Thread 0x7ffe357fa6c0 (LWP 62606)]
[New Thread 0x7ffe34ff96c0 (LWP 62607)]
[New Thread 0x7ffdebfff6c0 (LWP 62608)]
[New Thread 0x7ffdeb7fe6c0 (LWP 62609)]
[New Thread 0x7ffdeaffd6c0 (LWP 62610)]
[New Thread 0x7ffdea7fc6c0 (LWP 62611)]
[New Thread 0x7ffde9ffb6c0 (LWP 62612)]
[Thread 0x7fffad7fa6c0 (LWP 62463) exited]
using block size: 8192
using block size: 8192
using block size: 8192
using block size: 8192
[New Thread 0x7fffad7fa6c0 (LWP 63203)]
using block size: 256
mlock 36687 bytes
[New Thread 0x7ffde97fa6c0 (LWP 63207)]
using block size: 256
mlock 36687 bytes

(ardour-8.12.0:62315): Gdk-ERROR **: 19:43:38.095: The program 'ardour-8.12.0' received an X Window System error.
This probably reflects a bug in the program.
The error was 'RenderBadGlyph (invalid Glyph parameter)'.
  (Details: serial 12338 error_code 146 request_code 139 minor_code 22)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)

Thread 1 "ArdourGUI" received signal SIGTRAP, Trace/breakpoint trap.
0x00007ffff3f190ef in g_log_structured_array () from /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
(gdb) bt
#0 0x00007ffff3f190ef in g_log_structured_array () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000001 0x00007ffff3f193dc in g_log_default_handler () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2 0x0000555557b11222 in ardour_g_log
    (log_domain=0x7ffff4b76aa1 "Gdk", log_level=6, message=0x5555a6ac0370 "The program 'ardour-8.12.0' received an X Window System error.\nThis probably reflects a bug in the program.\nThe error was 'RenderBadGlyph (invalid Glyph parameter)'.\n (Details: serial 12338 error_cod"..., user_data=0x0)
    at ../gtk2_ardour/main.cc:125
#3 0x00007ffff3f19680 in g_logv () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000004 0x00007ffff3f19963 in g_log () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000005 0x00007ffff4bf68f3 in gdk_x_error (display=0x5555984e5390, error=0x7fffffffbaf0)
    at ../libs/tk/ydk/x11/gdkmain-x11.c:486
#6 0x00007ffff35257fb in _XError () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
#7 0x00007ffff352590f in ??? () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
0000008 0x00007ffff35259cd in ??? () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
0000009 0x00007ffff3525a52 in _XEventsQueued () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
0000010 0x00007ffff3518951 in XPending () at /usr/local/lib/x86_64-linux-gnu/libX11.so.6
0000011 0x00007fffac50171d in os_run_embedded (main=0x5555a3361de8)
    at ../src/LV2/xputty/xwidget-linux.cpp:518
0000012 0x00007fffac4fc911 in ui_idle (handle=<optimized out>)
    at ../src/LV2/xputty/lv2_plugin/lv2_plugin.cc:528
0000013 0x00007fffde0afe9a in suil_x11_wrapper_idle (data=0x55559818aa20)
    at ../libs/tk/suil/x11_in_gtk2.c:457
0000014 0x00007ffff3f15532 in ??? () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
#15 0x00007ffff3f1449e in ??? () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000016 0x00007ffff3f73737 in ??? () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
#17 0x00007ffff3f14f87 in g_main_loop_run () at /usr/local/lib/x86_64-linux-gnu/libglib-2.0.so.0
0000018 0x00007ffff42bc12b in IA__gtk_main () at ../libs/tk/ytk/gtkmain.c:1213
0000019 0x00007ffff496ade9 in Gtk::Main::run_impl (this=0x5555590024c0) at ../libs/tk/ytkmm/main.cc:537
0000020 0x00007ffff496ab85 in Gtk::Main::run () at ../libs/tk/ytkmm/main.cc:480
0000021 0x00007ffff4f96e92 in Gtkmm2ext::UI::run (this=0x55555901c800, old_receiver=...)
    at ../libs/gtkmm2ext/gtk_ui.cc:305
0000022 0x0000555557b12814 in main (argc=1, argv=0x7fffffffc3b8) at ../gtk2_ardour/main.cc:471
(gdb)

x42

2025-11-12 00:45

administrator   ~0029509

> Another one with gx_amp, this time the plugin doesn't get mentioned in the backtrace

except it is:

src/LV2/xputty/xwidget-linux.cpp line 518 -- That is guitarix UI

and it would have shown the gx_amp.so if you had not quit the pager at the long line.. :)

delt

2025-11-12 00:52

reporter   ~0029510

pager on "bt full"? i interrupted that and did a regular backtrace, there was no pager this time.

The following crash gx_amp wasn't even loaded. Also no pager, also no gx_amp mentioned anywhere.

x42

2025-11-12 02:38

administrator   ~0029511

> src/LV2/xputty/xwidget-linux.cpp

so it crashes https://github.com/brummer10/guitarix/blob/master/trunk/src/LV2/xputty/xwidget-linux.cpp#L518

If I had to guess it's a race condition in the plugin.. possibly unsetting main->dpy before handling all events.

in gdb check

frame 11
p main
p main-dpy

x42

2025-11-12 03:55

administrator   ~0029512

Last edited: 2025-11-12 03:56

It's also very odd that you have /usr/local/lib/x86_64-linux-gnu/libX11.so.6
/usr/local while plugins are in /usr/lib/


In any case .. plugin crashes Ardour, news at 11 :)

it seems something is very odd with your system. particularly since many others don't run into this issue.

delt

2025-11-12 04:15

reporter   ~0029513

> so it crashes https://github.com/brummer10/guitarix/blob/master/trunk/src/LV2/xputty/xwidget-linux.cpp#L518

yep, i'm looking at that code right now, that's the line that calls XPending ()

seems it is indeed guitarix plugins crashing ardour, and lsp-plugins causing the crash was probably just a weird glitch.

Also my /usr/local simply contains symlinks to ../bin ../etc ../include ../lib* and so on.. vestige from before they merged those directories from / to /usr and i was sick of having 3 or more versions of stuff lying around and conflicting each other. so on this machine /usr/local/lib/x86_64-linux-gnu/libX11.so.6 is the same file as /usr/lib/x86_64-linux-gnu/libX11.so.6

delt

2025-11-12 04:24

reporter   ~0029514

Also, proof that guitarix LV2 plugins are causing the X11 glyph error: still occurs if i load them in an instance of Carla-rack vst loaded in Ardour.

delt

2025-11-12 04:50

reporter   ~0029515

Another weird one, maybe it's backtracing the wrong thread?

[New Thread 0x7fffb77fe6c0 (LWP 132096)]
[New Thread 0x7ffded7fa6c0 (LWP 132097)]
[New Thread 0x7ffdecff96c0 (LWP 132106)]
[New Thread 0x7ffdc35ff6c0 (LWP 132108)]
[Thread 0x7ffdc35ff6c0 (LWP 132108) exited]
[Thread 0x7ffdecff96c0 (LWP 132106) exited]
[Thread 0x7ffded7fa6c0 (LWP 132097) exited]
[Thread 0x7fffb77fe6c0 (LWP 132096) exited]
The program 'ardour-8.12.0' received an X Window System error.
This probably reflects a bug in the program.
The error was 'RenderBadGlyph (invalid Glyph parameter)'.
  (Details: serial 21388 error_code 146 request_code 139 minor_code 22)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)

Thread 68 "RT-21-(nil)" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffb44f26c0 (LWP 131524)]
0x00007ffff5868a53 in ?? () from /usr/local/lib/x86_64-linux-gnu/liblilv-0.so.0
(gdb) bt
#0 0x00007ffff5868a53 in ??? () at /usr/local/lib/x86_64-linux-gnu/liblilv-0.so.0
0000001 0x00007ffff586d374 in lilv_plugin_get_num_ports ()
    at /usr/local/lib/x86_64-linux-gnu/liblilv-0.so.0
#2 0x00007ffff7806660 in ARDOUR::LV2Plugin::connect_and_run(ARDOUR::BufferSet&, long, long, double, ARDOUR::ChanMapping const&, ARDOUR::ChanMapping const&, unsigned int, long) ()
    at /usr/src/ardour/Ardour-8.12.0/build/libs/ardour/libardour.so.3
#3 0x00007ffff74db0ef in ARDOUR::PluginInsert::connect_and_run(ARDOUR::BufferSet&, long, long, double, unsigned int, long, bool) () at /usr/src/ardour/Ardour-8.12.0/build/libs/ardour/libardour.so.3
0000004 0x00007ffff74dcbaa in ARDOUR::PluginInsert::automate_and_run(ARDOUR::BufferSet&, long, long, double, unsigned int) () at /usr/src/ardour/Ardour-8.12.0/build/libs/ardour/libardour.so.3
0000005 0x00007ffff74dd479 in ARDOUR::PluginInsert::run(ARDOUR::BufferSet&, long, long, double, unsigned int, bool) () at /usr/src/ardour/Ardour-8.12.0/build/libs/ardour/libardour.so.3
#6 0x00007ffff75b920a in ARDOUR::Route::process_output_buffers(ARDOUR::BufferSet&, long, long, unsigned int, bool, bool) () at /usr/src/ardour/Ardour-8.12.0/build/libs/ardour/libardour.so.3
#7 0x00007ffff75bdd08 in ARDOUR::Route::run_route(long, long, unsigned int, bool, bool) ()
    at /usr/src/ardour/Ardour-8.12.0/build/libs/ardour/libardour.so.3
0000008 0x00007ffff75be1ef in ARDOUR::Route::roll(unsigned int, long, long, bool&) ()
    at /usr/src/ardour/Ardour-8.12.0/build/libs/ardour/libardour.so.3
0000009 0x00007ffff72e3776 in ARDOUR::Graph::process_one_route(ARDOUR::Route*) ()
    at /usr/src/ardour/Ardour-8.12.0/build/libs/ardour/libardour.so.3
0000010 0x00007ffff72ecb76 in ARDOUR::GraphNode::run(ARDOUR::GraphChain const*) ()
    at /usr/src/ardour/Ardour-8.12.0/build/libs/ardour/libardour.so.3
0000011 0x00007ffff72e5188 in ARDOUR::Graph::helper_thread() ()
    at /usr/src/ardour/Ardour-8.12.0/build/libs/ardour/libardour.so.3
0000012 0x00007fffec6a83c6 in ARDOUR::JACKAudioBackend::_start_process_thread(void*) ()
    at /usr/src/ardour/Ardour-8.12.0/build/libs/backends/jack/libjack_audiobackend.so
0000013 0x00007ffff4c9caa4 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:447
0000014 0x00007ffff4d29c6c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
(gdb)

delt

2025-11-13 02:53

reporter   ~0029518

Spent a few hours on this today. Seems the crash is indeed caused by a race condition in the plugins, ie. guitarix's LV2 code / xputty releasing X11 resources too quickly, and then Ardour keeps firing callbacks afterwards. Adding guards in src/LV2/xputty/lv2_plugin/lv2_plugin.cc (which gets #include'd into all the plugins) and commenting out the call to main_quit () in the cleanup function avoids the crash completely, but this (logically) causes a memory leak each time you close the plugin's UI.

Looking for a way to fix this cleanly without touching Ardour's code...

Issue History

Date Modified Username Field Change
2025-11-10 03:26 delt New Issue
2025-11-10 03:49 x42 Note Added: 0029496
2025-11-10 03:49 x42 Note Edited: 0029496
2025-11-10 03:50 x42 Note Edited: 0029496
2025-11-10 03:54 x42 Note Added: 0029497
2025-11-10 03:55 x42 Note Edited: 0029497
2025-11-10 12:48 delt Note Added: 0029499
2025-11-10 20:38 delt Note Added: 0029500
2025-11-10 20:44 x42 Note Added: 0029501
2025-11-10 21:58 delt Note Added: 0029502
2025-11-10 22:46 delt Note Added: 0029503
2025-11-10 22:58 x42 Note Added: 0029504
2025-11-10 23:04 x42 Note Added: 0029505
2025-11-12 00:33 delt Note Added: 0029507
2025-11-12 00:44 delt Note Added: 0029508
2025-11-12 00:45 x42 Note Added: 0029509
2025-11-12 00:52 delt Note Added: 0029510
2025-11-12 02:38 x42 Note Added: 0029511
2025-11-12 03:55 x42 Note Added: 0029512
2025-11-12 03:56 x42 Note Edited: 0029512
2025-11-12 04:15 delt Note Added: 0029513
2025-11-12 04:24 delt Note Added: 0029514
2025-11-12 04:50 delt Note Added: 0029515
2025-11-13 02:53 delt Note Added: 0029518