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 708420 - segfault in gnome-shell every once in a while
segfault in gnome-shell every once in a while
Status: RESOLVED FIXED
Product: mutter
Classification: Core
Component: general
3.9.x
Other Linux
: Normal normal
: ---
Assigned To: mutter-maint
mutter-maint
3.10.1
Depends on:
Blocks:
 
 
Reported: 2013-09-19 21:42 UTC by Dominique Leuenberger
Modified: 2013-09-26 16:56 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
MetaIdleMonitor: protect the monitor instance while calling destroy notify (1.42 KB, patch)
2013-09-20 12:29 UTC, Giovanni Campagna
committed Details | Review

Description Dominique Leuenberger 2013-09-19 21:42:46 UTC
Randomly I can see gnome-shell segfault on me (it respawns usually, sometimes without gnome-settings-daemon though.. they crash at about the same time; g-s-d claiming a bus error, so I assume g-s disappears first).

'most of the times' I see it when doing click actions in 'Files' (nautilus), but it's not limited to this.

A typical stack trace looks like

(gdb) bt full
  • #0 XQueryExtension
    at QuExt.c line 57
  • #1 GetVersionInfo
    at XSync.c line 123
  • #2 find_display_create_optional
    at XSync.c line 168
  • #3 find_display
    at XSync.c line 177
  • #4 XSyncDestroyAlarm
    at XSync.c line 652
  • #5 ??
    from /usr/lib64/libmutter.so.0
  • #6 g_hash_table_remove_internal
    at ghash.c line 1276
  • #7 do_call
    at gdbusnamewatching.c line 216
  • #8 call_vanished_handler
    at gdbusnamewatching.c line 242
  • #9 on_name_owner_changed
    at gdbusnamewatching.c line 307
  • #10 emit_signal_instance_in_idle_cb
    at gdbusconnection.c line 3743
  • #11 g_main_dispatch
    at gmain.c line 3065
  • #12 g_main_context_dispatch
    at gmain.c line 3641
  • #13 g_main_context_iterate
    at gmain.c line 3712
  • #14 g_main_loop_run
    at gmain.c line 3906
  • #15 meta_run
    from /usr/lib64/libmutter.so.0
  • #16 ??
  • #17 __libc_start_main
    at libc-start.c line 269
  • #18 ??


(note the address 0xaaaaaaaaaaaaaaa)
Comment 1 Dominique Leuenberger 2013-09-19 21:44:45 UTC
(That was still gnome-shell 3.9.91; don't know yet if this changes with 3.9.92... update running)
Comment 2 Giovanni Campagna 2013-09-20 12:29:12 UTC
Created attachment 255393 [details] [review]
MetaIdleMonitor: protect the monitor instance while calling destroy notify

The destroy notify for a DBus watch holds a reference to the IdleMonitor,
but the IdleMonitorWatch object doesn't (it knows all watches will
be destroyed before the monitor is, so it doesn't need one). This
means that the DBus watch reference can be the only one keeping
the IdleMonitor alive (expecially true for device idle monitors,
which are only used by g-s-d/cursor), and that means that calling
the destroy notify freezes the monitor (and the next X calls
access garbage).
Comment 3 Giovanni Campagna 2013-09-26 13:25:03 UTC
Would be good to have for 3.10.1
Comment 4 drago01 2013-09-26 16:53:47 UTC
Review of attachment 255393 [details] [review]:

OK.
Comment 5 Giovanni Campagna 2013-09-26 16:56:15 UTC
Attachment 255393 [details] pushed as 85c2bc2 - MetaIdleMonitor: protect the monitor instance while calling destroy notify