Package: d-conf Version: 0.12.1-2 Severity: serious Tags: d-i Justification: makes default installation unusable
Hi, tagging with d-i since the default desktop installation is unusable and not easy to debug (along with gdm3 bug #681830). Using nasty techniques like diverting /usr/bin/gnome-session away and using a shell wrapper to intercept the PID so that I could attach gdb, I could get to the attached backtrace. The trivial attached patch makes gnome-session stop crashing, which should make it possible to debug what's wrong with the default settings. I'll try and figure out the right package to assign the next bug report to (which might be gnome-session). FTR, the attached patch means I get to see the “Oops, something went wrong” screen, instead of a flickering display with gdm3 spawning X instances as hell. Mraw, KiBi.
(gdb) cont Continuing. process 9451 is executing new program: /usr/bin/gnome-session.diverted [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/i386-linux-gnu/i686/cmov/libthread_db.so.1". Program received signal SIGSEGV, Segmentation fault. 0xb6d0e956 in gvdb_table_is_valid (table=0x80d1040) at ../gvdb/gvdb-reader.c:572 572 return !!*table->data; (gdb) bt full #0 0xb6d0e956 in gvdb_table_is_valid (table=0x80d1040) at ../gvdb/gvdb-reader.c:572 No locals. #1 0xb6d0c903 in dconf_engine_refresh_system (engine=0x80c4720, i=1) at ../engine/dconf-engine.c:170 No locals. #2 0xb6d0caea in dconf_engine_refresh (engine=0x80c4720) at ../engine/dconf-engine.c:209 i = 1 #3 0xb6d0cb7b in dconf_engine_get_state (engine=0x80c4720) at ../engine/dconf-engine.c:231 state = 13211598609864785088 #4 0xb6d0fb7d in outstanding_watch_new (dcsb=0x80f7c18, name=0x8101b60 "/org/gnome/gnome-session/") at dconfsettingsbackend.c:538 watch = 0x808fca8 #5 0xb6d0fdda in dconf_settings_backend_subscribe (backend=0x80f7c18, name=0x8101b60 "/org/gnome/gnome-session/") at dconfsettingsbackend.c:626 dcsb = 0x80f7c18 #6 0xb767a157 in ?? () from /usr/lib/i386-linux-gnu/libgio-2.0.so.0 No symbol table info available. #7 0xb767db90 in ?? () from /usr/lib/i386-linux-gnu/libgio-2.0.so.0 No symbol table info available. #8 0xb75929a2 in g_object_newv () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 No symbol table info available. #9 0xb7592d4a in g_object_new_valist () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 No symbol table info available. #10 0xb7592f90 in g_object_new () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 No symbol table info available. #11 0xb767e8c1 in g_settings_new () from /usr/lib/i386-linux-gnu/libgio-2.0.so.0 No symbol table info available. #12 0x0806d5c4 in gsm_manager_init (manager=0x80d2800) at gsm-manager.c:2764 No locals. #13 0xb75ae507 in g_type_create_instance () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 No symbol table info available. #14 0xb7590cf1 in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 No symbol table info available. #15 0x0806cd0d in gsm_manager_constructor (type=135274632, n_construct_properties=3, construct_properties=0x80e9a40) at gsm-manager.c:2497 manager = 0xb75cdff4 #16 0xb75924fd in g_object_newv () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 No symbol table info available. #17 0xb7592d4a in g_object_new_valist () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 No symbol table info available. #18 0xb7592f90 in g_object_new () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 No symbol table info available. #19 0x0806d8ae in gsm_manager_new (client_store=0x808fb68, failsafe=1) at gsm-manager.c:2831 res = 135074712 #20 0x08065dad in main (argc=1, argv=0xbffffb34) at main.c:343 sa = {__sigaction_handler = {sa_handler = 0x1, sa_sigaction = 0x1}, sa_mask = {__val = {0 <repeats 32 times>}}, sa_flags = 0, sa_restorer = 0xb744aff4} error = 0x0 display_str = 0x80cb938 "\001" manager = 0xbffffae0 client_store = 0x808fb68 xsmp_server = 0x80a2940 signal_handler = 0xb7fffac0 override_autostart_dirs = 0x0 session_name = 0x0 entries = {{long_name = 0x807c2d1 "autostart", short_name = 97 'a', flags = 0, arg = G_OPTION_ARG_STRING_ARRAY, arg_data = 0x808ab84, description = 0x807c2dc "Override standard autostart directories", arg_description = 0x807c304 "AUTOSTART_DIR"}, {long_name = 0x807c312 "session", short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_STRING, arg_data = 0x808ab80, description = 0x807c31a "Session to use", arg_description = 0x807c329 "SESSION_NAME"}, {long_name = 0x807c336 "debug", short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x808ab78, description = 0x807c33c "Enable debugging code", arg_description = 0x0}, {long_name = 0x807c352 "failsafe", short_name = 102 'f', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x808ab70, description = 0x807c35c "Do not load user-specified applications", arg_description = 0x0}, {long_name = 0x807c384 "version", short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x808ab74, description = 0x807c38c "Version of this application", arg_description = 0x0}, {long_name = 0x807c3a8 "whale", short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x808ab7c, description = 0x807c3b0 "Show the fail whale dialog for testing", arg_description = 0x0}, {long_name = 0x0, short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x0, description = 0x0, arg_description = 0x0}} (gdb) p table->data $1 = (const gchar *) 0x0 (gdb) quit
--- a/gvdb/gvdb-reader.c +++ b/gvdb/gvdb-reader.c @@ -569,7 +569,8 @@ gvdb_table_unref (GvdbTable *file) gboolean gvdb_table_is_valid (GvdbTable *table) { - return !!*table->data; + /* make sure not to dereference a NULL pointer here: */ + return (table->data) && (!!*table->data); } /**