On 06/20/2013 02:23 PM, Jens Neu wrote:
On 19.06.2013 16:14, Roberto Ragusa wrote:
> pstack on the process (better if you previously install the debuginfo rpm for the X
server)
pstack with debuginfo for XServer as well as nouveau package:
#0 0x0000003a5bc0de4d in __lll_lock_wait () from /lib64/libpthread.so.0
#1 0x0000003a5bc09cc1 in _L_lock_885 () from /lib64/libpthread.so.0
#2 0x0000003a5bc09bda in pthread_mutex_lock () from /lib64/libpthread.so.0
#3 0x0000003a6a2a86c0 in ?? () from /lib64/libGL.so.1
#4 0x0000003a6a2acea0 in ?? () from /lib64/libGL.so.1
#5 0x0000003a6a2ad3ca in ?? () from /lib64/libGL.so.1
#6 0x0000003a67401bf7 in ?? () from /lib64/tls/libnvidia-tls.so.310.32
#7 0x00007f430a4ca96f in mtdev_fetch_event () from /lib64/libmtdev.so.1
#8 0x00007f430a4caa8d in mtdev_get () from /lib64/libmtdev.so.1
#9 0x00007f430a6d3e06 in EvdevReadInput () from
/usr/lib64/xorg/modules/input/evdev_drv.so
#10 0x0000000000489db7 in xf86SigioReadInput (fd=<optimized out>,
closure=0x29ba480) at xf86Events.c:299
#11 0x00000000004b3528 in xf86SIGIO (sig=<optimized out>) at ../shared/sigio.c:110
#12 <signal handler called>
#13 0x0000003a5bc09bd4 in pthread_mutex_lock () from /lib64/libpthread.so.0
#14 0x0000003a6a2a86c0 in ?? () from /lib64/libGL.so.1
#15 0x0000003a6a2acea0 in ?? () from /lib64/libGL.so.1
#16 0x0000003a6a2ad386 in ?? () from /lib64/libGL.so.1
#17 0x0000003a67401bf7 in ?? () from /lib64/tls/libnvidia-tls.so.310.32
#18 0x0000000000478f06 in read (__nbytes=4096, __buf=0x2f19e50, __fd=<optimized
out>) at /usr/include/bits/unistd.h:44
#19 _XSERVTransSocketRead (ciptr=0x3648870, buf=0x2f19e50 "\024", size=4096) at
/usr/include/X11/Xtrans/Xtranssock.c:2116
#20 0x000000000046f2a6 in ReadRequestFromClient (client=client@entry=0x2f0ccd0) at
io.c:332
#21 0x0000000000439666 in Dispatch () at dispatch.c:399
#22 0x00000000004282da in main (argc=9, argv=0x7fff882da638, envp=<optimized out>)
at main.c:298
Hmmm, I do not want to make false accusation, but as I'm reading it,
the code is doing something (22-14), it appears to be reading from a socket (18),
this implies taking a lock (13), a signal arrives in that moment (12) and something scary
is done in the signal handler (11-0), including some kind of read (10) which implies
taking some lock (2); probably deadlocking with 13, as the process remains stuck at 0.
It smells like a bug. Too much dangerous processing in a sig handler.
Anyone with better reading of this?
--
Roberto Ragusa mail at robertoragusa.it