sometimes sighup needed for gnome-shell

Alon Levy alevy at redhat.com
Tue Nov 22 10:22:29 UTC 2011


On Mon, Nov 21, 2011 at 10:26:52AM -0500, Adam Jackson wrote:
> On Mon, 2011-11-21 at 12:11 +0100, Gianluca Cecchi wrote:
> > On Fri, Nov 18, 2011 at 7:00 PM, Adam Jackson  wrote:
> > 
> > > If you debuginfo-install gnome-shell, attach with gdb instead of sending
> > > SIGHUP, and run 'thread apply all backtrace', what do you get?
> > 
> > As MJ whould have said... This is it ... ;-)
> 
> The interesting part seems to be:
> 
> Thread 1 (Thread 0x7fbf4aa8c9c0 (LWP 1609)):
> #0  0x0000003cb7ee6443 in __GI___poll (fds=<optimized out>,
> nfds=<optimized out>, timeout=<optimized out>)
> at ../sysdeps/unix/sysv/linux/poll.c:87
> #1  0x0000003cbc208ba2 in ?? () from /usr/lib64/libxcb.so.1
> #2  0x0000003cbc2090ff in ?? () from /usr/lib64/libxcb.so.1
> #3  0x0000003cbc209184 in xcb_writev () from /usr/lib64/libxcb.so.1
> #4  0x0000003cbc6456e7 in _XSend (dpy=0xb47a30, data=<optimized out>,
> size=<optimized out>) at xcb_io.c:436
> #5  0x0000003cbc639d55 in SendZImage (dest_scanline_pad=0,
> dest_bits_per_pixel=32, req_yoffset=<optimized out>, req_xoffset=0,
> image=0x7fffe21a7240, 
>     req=<optimized out>, dpy=0xb47a30) at PutImage.c:802
> 
> This is showing gnome-shell trying to write an image to the X server,
> but blocking because the socket to the X server does not appear to be
> ready for writing.
> 
> So there's (at least) three things that could be going wrong here, from
> probably most to least likely:
> 
> 1) the write queue to the X server really might be blocked
> 2) libxcb could have a logic bug that's getting stuck here
> 3) the kernel might have a bug in poll()
> 
> #1 typically only happens in two cases: either the X server is stuck
> away from the dispatch loop, or it's explicitly ignoring you because
> there's a grab in process.  In the former case SIGHUP wouldn't help,
> simply reloading the shell won't un-stick the X server.  But in the
> latter case, it might; if the grab is from one of the shell's other
> threads, then closing all of the shell's display connections would reset
> the grab.
> 
> So my next intuition would be to gdb the X server and see what's up.  If
> you find it waiting patiently on a call to select(), then the second
> case is more likely, and 'print AllClients' should show you an fd_set
> with only one bit set.
> 

I think I have the same problem here, I've followed it once, gdbing the
server, it was in select, so maybe I'll try to do it again and do the
'print AllClients' - for me reproducing is 100% by doing a chvt /
suspend and resume. To get back to work (i.e.  workaround) I chvt to
some console, do "killall -9 gnome-shell; sleep 5; DISPLAY=:0.0
gnome-shell" and quickly change back. Recently gnome-shell started to
get unstuck occasionally if I wait about 10-20 seconds, but I'm not
always that patient.

> - ajax



> -- 
> test mailing list
> test at lists.fedoraproject.org
> To unsubscribe: 
> https://admin.fedoraproject.org/mailman/listinfo/test



More information about the test mailing list