On Sun, 3 Oct 2021 12:33:48 +0100 Simon McVittie <[email protected]> wrote: > On Sat, 02 Oct 2021 at 20:48:55 +1000, 小太 wrote: > > What I can add is from reading the documentation of > > g_quark_from_static_string() > > (https://docs.gtk.org/glib/func.quark_from_static_string.html) > > is these particular lines seem to be of importance: > > > > > It can be used with statically allocated strings in the main program, > > > but not with statically allocated memory in dynamically loaded > > > modules, if you expect to ever unload the module again > > > > However, jackd will load jack_firewire.so three times (which means > > loading and unloading its glibmm dependency three times) > > Perhaps jack_firewire.so and/or glibmm should be linked with -Wl,-z,nodelete > to prevent it from being removed from the address space even after > dlclose()? That would ensure that its static strings remain in memory.
I suppose that would solve the problem too. But I think we should try to have the root cause fixed upstream first. I wrote a short PoC without the involvement of JACK to demonstrate it is not a JACK problem and the bug has existed (hidden) for 18 years already: https://gitlab.gnome.org/GNOME/glibmm/-/issues/96#note_1281881

