Comment 15 for bug 232364

Revision history for this message
Remove Me (remove-me) wrote : backtrace of the hanging dbus-launch

: ~; gdb -p 3045
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
Attaching to process 3045
Reading symbols from /usr/bin/dbus-launch...Reading symbols from /usr/lib/debug/usr/bin/dbus-launch...done.
done.
Reading symbols from /usr/lib/libX11.so.6...done.
Loaded symbols for /usr/lib/libX11.so.6
Reading symbols from /lib/tls/i686/cmov/libc.so.6...done.
Loaded symbols for /lib/tls/i686/cmov/libc.so.6
Reading symbols from /usr/lib/libxcb-xlib.so.0...Reading symbols from /usr/lib/debug/usr/lib/libxcb-xlib.so.0.0.0...done.
done.
Loaded symbols for /usr/lib/libxcb-xlib.so.0
Reading symbols from /usr/lib/libxcb.so.1...Reading symbols from /usr/lib/debug/usr/lib/libxcb.so.1.0.0...done.
done.
Loaded symbols for /usr/lib/libxcb.so.1
Reading symbols from /lib/tls/i686/cmov/libdl.so.2...done.
Loaded symbols for /lib/tls/i686/cmov/libdl.so.2
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Reading symbols from /usr/lib/libXau.so.6...done.
Loaded symbols for /usr/lib/libXau.so.6
Reading symbols from /usr/lib/libXdmcp.so.6...done.
Loaded symbols for /usr/lib/libXdmcp.so.6
Reading symbols from /lib/tls/i686/cmov/libnss_compat.so.2...done.
Loaded symbols for /lib/tls/i686/cmov/libnss_compat.so.2
Reading symbols from /lib/tls/i686/cmov/libnsl.so.1...done.
Loaded symbols for /lib/tls/i686/cmov/libnsl.so.1
Reading symbols from /lib/tls/i686/cmov/libnss_nis.so.2...done.
Loaded symbols for /lib/tls/i686/cmov/libnss_nis.so.2
Reading symbols from /lib/tls/i686/cmov/libnss_files.so.2...done.
Loaded symbols for /lib/tls/i686/cmov/libnss_files.so.2
0xb8002424 in __kernel_vsyscall ()
(gdb) bt
#0 0xb8002424 in __kernel_vsyscall ()
#1 0xb7e8484d in select () from /lib/tls/i686/cmov/libc.so.6
#2 0xb7da309a in _xcb_in_read_block (c=0x80579a8, buf=0x8057040, len=8)
    at xcb_in.c:248
#3 0xb7da2343 in xcb_connect_to_fd (fd=13, auth_info=0xbff1cdf0)
    at xcb_conn.c:133
#4 0xb7da4a51 in xcb_connect (displayname=0x0, screenp=0x0) at xcb_util.c:279
#5 0xb7f43717 in _XConnectXCB () from /usr/lib/libX11.so.6
#6 0xb7f2c029 in XOpenDisplay () from /usr/lib/libX11.so.6
#7 0x0804b3de in x11_init () at dbus-launch-x11.c:218
#8 0x0804abb2 in main (argc=5, argv=0xbff1d5a4) at dbus-launch.c:432
(gdb) quit
The program is running. Quit anyway (and detach it)? (y or n) EOF [assumed Y]
Detaching from program: /usr/bin/dbus-launch, process 3045

I tried replacing select in _xcb_in_read_block (actually read_block) with
poll and open the polling loop, like in the attached patch.
Now I cannot reproduce the problem at all (it was very hard, need
many reboots, before)

Just opening the loop turned out to be not enough.

Now, I don't understand what (in this case) seem to workaround
the issue when I use poll.