Re: sometimes sighup needed for gnome-shell

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.

- ajax

Attachment: signature.asc
Description: This is a digitally signed message part

-- 
test mailing list
test@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe: 
https://admin.fedoraproject.org/mailman/listinfo/test

[Index of Archives]     [Fedora Desktop]     [Fedora SELinux]     [Photo Sharing]     [Yosemite Forum]     [KDE Users]

  Powered by Linux