After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 719402 - Crashes when startup
Crashes when startup
Status: RESOLVED FIXED
Product: glib
Classification: Platform
Component: gdbus
unspecified
Other Linux
: Normal normal
: ---
Assigned To: David Zeuthen (not reading bugmail)
gtkdev
Depends on:
Blocks:
 
 
Reported: 2013-11-27 10:19 UTC by Yosef Or Boczko
Modified: 2013-11-27 15:24 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
GDBusObjectManagerClient: keep the manager alive while firing signals (2.68 KB, patch)
2013-11-27 14:20 UTC, Rui Matos
committed Details | Review

Description Yosef Or Boczko 2013-11-27 10:19:20 UTC
This with the last gnome-desktop and the last gnome-settings-daemon,
both from git master.

$ /usr/lib/gnome-settings-daemon/gnome-settings-daemon --replace

(gnome-settings-daemon:17049): GLib-GIO-CRITICAL **: g_dbus_connection_emit_signal: assertion 'G_IS_DBUS_CONNECTION (connection)' failed
Segmentation fault (core dumped)

$ valgrind /usr/lib/gnome-settings-daemon/gnome-settings-daemon --replace
==17090== Memcheck, a memory error detector
==17090== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==17090== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info
==17090== Command: /usr/lib/gnome-settings-daemon/gnome-settings-daemon --replace
==17090== 

(gnome-settings-daemon:17090): GLib-GIO-CRITICAL **: g_dbus_connection_emit_signal: assertion 'G_IS_DBUS_CONNECTION (connection)' failed
==17090== Warning: invalid file descriptor -1 in syscall close()
==17090== Warning: invalid file descriptor -1 in syscall close()
==17103== 
==17103== HEAP SUMMARY:
==17103==     in use at exit: 2,200,766 bytes in 25,763 blocks
==17103==   total heap usage: 199,706 allocs, 173,943 frees, 11,597,815 bytes allocated
==17103== 
==17103== LEAK SUMMARY:
==17103==    definitely lost: 8,596 bytes in 17 blocks
==17103==    indirectly lost: 2,349 bytes in 73 blocks
==17103==      possibly lost: 76,083 bytes in 794 blocks
==17103==    still reachable: 2,029,562 bytes in 24,259 blocks
==17103==         suppressed: 0 bytes in 0 blocks
==17103== Rerun with --leak-check=full to see details of leaked memory
==17103== 
==17103== For counts of detected and suppressed errors, rerun with: -v
==17103== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 3 from 3)
==17090== Invalid read of size 8
==17090==    at 0x6466D8D: g_type_check_instance (gtype.c:4080)
==17090==    by 0x645D109: g_signal_emit_valist (gsignal.c:3109)
==17090==    by 0x645E2A1: g_signal_emit (gsignal.c:3386)
==17090==    by 0x61A103B: signal_cb (gdbusobjectmanagerclient.c:1079)
==17090==    by 0x6180FE4: emit_signal_instance_in_idle_cb (gdbusconnection.c:3739)
==17090==    by 0x66CD754: g_main_context_dispatch (gmain.c:3068)
==17090==    by 0x66CDAB7: g_main_context_iterate.isra.24 (gmain.c:3714)
==17090==    by 0x66CDEB9: g_main_loop_run (gmain.c:3908)
==17090==    by 0x585D4A4: gtk_main (gtkmain.c:1158)
==17090==    by 0x40394D: main (main.c:471)
==17090==  Address 0x24e51bd0 is 128 bytes inside a block of size 176 free'd
==17090==    at 0x4C289DC: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==17090==    by 0x6465719: g_type_free_instance (gtype.c:1932)
==17090==    by 0x5477BA1: gnome_idle_monitor_dispose (gnome-idle-monitor.c:168)
==17090==    by 0x64483DB: g_object_unref (gobject.c:3146)
==17090==    by 0x6443965: g_closure_invoke (gclosure.c:285)
==17090==    by 0x6455DDC: signal_emit_unlocked_R (gsignal.c:3586)
==17090==    by 0x645CF46: g_signal_emitv (gsignal.c:3063)
==17090==    by 0x547DC13: meta_dbus_idle_monitor_proxy_g_signal (meta-dbus-idle-monitor.c:1114)
==17090==    by 0xA721D8B: ffi_call_unix64 (in /usr/lib/libffi.so.6.0.1)
==17090==    by 0xA7216BB: ffi_call (in /usr/lib/libffi.so.6.0.1)
==17090==    by 0x6444187: g_cclosure_marshal_generic (gclosure.c:1454)
==17090==    by 0x6443947: g_closure_invoke (gclosure.c:777)
==17090== 
==17090== Invalid read of size 8
==17090==    at 0x6466D99: g_type_check_instance (gtype.c:4082)
==17090==    by 0x645D109: g_signal_emit_valist (gsignal.c:3109)
==17090==    by 0x645E2A1: g_signal_emit (gsignal.c:3386)
==17090==    by 0x61A103B: signal_cb (gdbusobjectmanagerclient.c:1079)
==17090==    by 0x6180FE4: emit_signal_instance_in_idle_cb (gdbusconnection.c:3739)
==17090==    by 0x66CD754: g_main_context_dispatch (gmain.c:3068)
==17090==    by 0x66CDAB7: g_main_context_iterate.isra.24 (gmain.c:3714)
==17090==    by 0x66CDEB9: g_main_loop_run (gmain.c:3908)
==17090==    by 0x585D4A4: gtk_main (gtkmain.c:1158)
==17090==    by 0x40394D: main (main.c:471)
==17090==  Address 0xaaaaaaaaaaaaaaaa is not stack'd, malloc'd or (recently) free'd
==17090== 
==17090== 
==17090== Process terminating with default action of signal 11 (SIGSEGV)
==17090==  General Protection Fault
==17090==    at 0x6466D99: g_type_check_instance (gtype.c:4082)
==17090==    by 0x645D109: g_signal_emit_valist (gsignal.c:3109)
==17090==    by 0x645E2A1: g_signal_emit (gsignal.c:3386)
==17090==    by 0x61A103B: signal_cb (gdbusobjectmanagerclient.c:1079)
==17090==    by 0x6180FE4: emit_signal_instance_in_idle_cb (gdbusconnection.c:3739)
==17090==    by 0x66CD754: g_main_context_dispatch (gmain.c:3068)
==17090==    by 0x66CDAB7: g_main_context_iterate.isra.24 (gmain.c:3714)
==17090==    by 0x66CDEB9: g_main_loop_run (gmain.c:3908)
==17090==    by 0x585D4A4: gtk_main (gtkmain.c:1158)
==17090==    by 0x40394D: main (main.c:471)
==17090== 
==17090== HEAP SUMMARY:
==17090==     in use at exit: 3,688,421 bytes in 65,112 blocks
==17090==   total heap usage: 421,400 allocs, 356,288 frees, 23,429,938 bytes allocated
==17090== 
==17090== LEAK SUMMARY:
==17090==    definitely lost: 2,844 bytes in 815 blocks
==17090==    indirectly lost: 53,971 bytes in 1,590 blocks
==17090==      possibly lost: 96,003 bytes in 1,056 blocks
==17090==    still reachable: 3,352,467 bytes in 60,394 blocks
==17090==         suppressed: 0 bytes in 0 blocks
==17090== Rerun with --leak-check=full to see details of leaked memory
==17090== 
==17090== For counts of detected and suppressed errors, rerun with: -v
==17090== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 3 from 3)
Killed
Comment 1 Bastien Nocera 2013-11-27 11:13:53 UTC
Regression from bug 706229.
Comment 2 Rui Matos 2013-11-27 14:20:28 UTC
Created attachment 262942 [details] [review]
GDBusObjectManagerClient: keep the manager alive while firing signals

Handlers for the signals we emit might unref the object manager. Make
sure we keep it alive until we are done with it.

--

I *think* this is actually a bug in glib which this patch
fixes. Assigning it there for now.
Comment 3 Colin Walters 2013-11-27 14:32:38 UTC
Review of attachment 262942 [details] [review]:

Yeah, makes sense.
Comment 4 Rui Matos 2013-11-27 15:24:44 UTC
Let me know if I should push this to the 2.38 branch as well.

Attachment 262942 [details] pushed as 1300108 - GDBusObjectManagerClient: keep the manager alive while firing signals