gnome-settings-daemon / check_gl_texture_size deadlock because g-s-d has server grab
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
gnome-desktop3 (Ubuntu) |
Fix Released
|
High
|
Chris Halse Rogers | ||
Oneiric |
Fix Released
|
High
|
Chris Halse Rogers |
Bug Description
I've noticed for the past week or so that every time I open my laptop lid or press the display key, my laptop appears to lock up entirely. Initially, I thought this might be a compiz or X bug, as the only obvious way to recover is to kill my session and log in again. However, I did a bit of debugging this morning and this is due to the recent gnome-desktop change to work around bug 824099.
What happens is:
1) gnome-settings-
2) It then runs check_gl_
3) check_gl_
4) g-s-d hangs because it waits for check_gl_
5) The entire desktop appears to be locked up, because g-s-d never lets go of its grab
This is repeatable for me - it happens every single time I open my laptop lid, which is a bit of an inconvenience tbh (my laptop seems to trigger a fake Fn+F7 keypress when this happens, which is another matter)
If you're curious, this is where g-s-d hangs (sorry, I didn't have gnome-desktop symbols installed for this one, but the missing symbol in frame 9 is screen_update):
#0 0x00007f93e7b69c3d in __libc_waitpid (pid=<optimized out>, stat_loc=<optimized out>, options=<optimized out>) at ../sysdeps/
#1 0x00007f93e77435fa in ?? () from /usr/lib/
#2 0x00007f93e774477b in gnome_rr_
#3 0x00007f93d7dfa19d in auto_configure_
#4 on_randr_event (screen=<optimized out>, data=<optimized out>) at gsd-xrandr-
#5 0x00007f93e68db0a4 in g_closure_invoke (closure=0xb6c890, return_value=0x0, n_param_values=1, param_values=
at /build/
#6 0x00007f93e68ed02a in signal_
at /build/
#7 0x00007f93e68f66b1 in g_signal_
at /build/
#8 0x00007f93e68f6852 in g_signal_emit (instance=
#9 0x00007f93e77412b4 in ?? () from /usr/lib/
#10 0x00007f93e7741390 in gnome_rr_
#11 0x00007f93d7df9a4a in handle_fn_f7 (timestamp=1505379, mgr=0xb64190) at gsd-xrandr-
#12 gsd_xrandr_
#13 handle_method_call (connection=
parameters=
#14 0x00007f93e6bcb620 in call_in_idle_cb (user_data=
#15 0x00007f93e6211a5d in g_main_dispatch (context=0xac1600) at /build/
#16 g_main_
#17 0x00007f93e6212258 in g_main_
#18 0x00007f93e6212792 in g_main_loop_run (loop=0x7f93d80
#19 0x00007f93e722ce1d in gtk_main () at /build/
#20 0x0000000000403caf in main (argc=1, argv=0x7fffd483
And check_gl_
#0 0x00007f7ad6716738 in __GI___poll (fds=0x7fff42d8
#1 0x00007f7ad642eecd in ?? () from /usr/lib/
#2 0x00007f7ad642d369 in xcb_connect_to_fd () from /usr/lib/
#3 0x00007f7ad64301d8 in xcb_connect_
#4 0x00007f7ad6c7ba02 in _XConnectXCB (dpy=0x1b90010, display=0x0, screenp=
#5 0x00007f7ad6c6b741 in XOpenDisplay (display=0x0) at ../../src/
#6 0x0000000000400872 in main (argc=<optimized out>, argv=<optimized out>) at check_gl_
Changed in gnome-desktop3 (Ubuntu Oneiric): | |
importance: | Undecided → High |
status: | New → Triaged |
assignee: | nobody → Canonical Desktop Team (canonical-desktop-team) |
Changed in gnome-desktop3 (Ubuntu Oneiric): | |
assignee: | Canonical Desktop Team (canonical-desktop-team) → Chris Halse Rogers (raof) |
I'm surprised that this happens each time you open your lid - check_gl_ texture_ size should be run exactly once per g-s-d process, since it caches the result.
I'll see what's happening with the server grab.