I don't yet fully understand how segfaults and backtraces work, but I get the impression that if the function at the top of the list references "glib" or "gobject", you have Bad Issues(TM) with libraries that usually shouldn't go wrong.
Well, that's what I'm getting here, from two completely different programs.
The first is the latest build of irssi, compiled (cleanly, without any glitches or errors) directly from github.com.
Program received signal SIGSEGV, Segmentation fault. 0xb7cf77ea in g_ascii_strcasecmp () from /usr/lib/libglib-2.0.so.0 (gdb) bt #0 0xb7cf77ea in g_ascii_strcasecmp () from /usr/lib/libglib-2.0.so.0 #1 0x08103455 in config_node_section_index () #2 0x081036b0 in config_node_traverse () #3 0x080fb674 in settings_get_bool () #4 0x08090bce in command_history_init () #5 0x08093d81 in fe_common_core_init () #6 0x0805a60d in main ()
The second program I'm having issues with is the NetSurf web browser (which also compiles 100% cleanly) when built against GTK (when not built to use GTK it runs fine):
Program received signal SIGSEGV, Segmentation fault. 0xb7c1bace in g_type_check_instance_cast () from /usr/lib/libgobject-2.0.so.0 (gdb) bt #0 0xb7c1bace in g_type_check_instance_cast () from /usr/lib/libgobject-2.0.so.0 #1 0x080cd31c in nsgtk_scaffolding_set_websearch () #2 0x080d05da in nsgtk_new_scaffolding () #3 0x080dafd8 in gui_create_browser_window () #4 0x0809e806 in browser_window_create () #5 0x080c2fa9 in ?? () #6 0x0807c09d in main ()
I'm 99.99% confident the issues I'm looking at are some kind of glitch-out with glib2. The rest of my system works 100% fine, just these two programs are doing weird things.
I'm similarly confident that if I tried to build other programs that used these libraries, they would quite likely fail too.
Obviously, poking glib and friends - and making even one tiny little mistake - is an instant recipe to make practically every single program in the system catastrophically break horribly (and I speak from experience with another system, long ago :P).
Given I have absolutely no idea what I'm doing with this kind of thing and I know it, I am loathe to go there; I'd like to keep my current system configuration functional :)
I was thinking of compiling a new version of glib2 (and co.), then statically linking these programs against it. I just have no idea how to do this - what steps do I need to perform?
An alternative idea I had was to
./configure --prefix=/usr; make; make install exactly the same version of glib I have right now "back into" my system, to reinstall it. I see that the associated core libraries all end with "0.3200.4":
-rwxr-xr-x 1 root root 1.4M Aug 9 2012 /usr/lib/libgio-2.0.so.0.3200.4 -rwxr-xr-x 1 root root 1.2M Aug 9 2012 /usr/lib/libglib-2.0.so.0.3200.4 -rwxr-xr-x 1 root root 11K Aug 9 2012 /usr/lib/libgmodule-2.0.so.0.3200.4 -rwxr-xr-x 1 root root 308K Aug 9 2012 /usr/lib/libgobject-2.0.so.0.3200.4 -rwxr-xr-x 1 root root 3.7K Aug 9 2012 /usr/lib/libgthread-2.0.so.0.3200.4
Would that possibly work, or break things horribly? :S
If it would possibly work, what version does "0.3200.4" translate to?