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

Bug#478893: libgl1-mesa-dri: stalls or crashes on GLX



> Could you install xserver-xorg-core-dbg and libgl1-mesa-dri-dbg and try
> to catch a better backtrace with gdb? The easiest way would be to ssh
> from another host, attach gdb with "gdb -p $(pidof X)", reproduce the
> crash, enter "bt full" in gdb, and send us the output.
Sorry about the delay -- and thanks for the pointers. Here is what I got
so far... please advice if I could do smth more ;-)

attaching and continuing
(gdb) bt
#0  0x00002b99533452a3 in select () from /lib/libc.so.6
#1  0x000000000055eb01 in WaitForSomething (pClientsReady=0x7fff58cca120) at ../../os/WaitFor.c:236
#2  0x000000000044e0bb in Dispatch () at ../../dix/dispatch.c:425
#3  0x0000000000436add in main (argc=9, argv=0x7fff58cca6c8, envp=<value optimized out>) at ../../dix/main.c:452
(gdb) c
Continuing.
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x2b9953c7f2c0 (LWP 4684)]
0x00002b99662bfceb in copy_array_to_vbo_array (brw=0x13c7330, i=<value optimized out>, array=0x1fd0f58, element_size=12, count=983040) at brw_draw_upload.c:263
263     brw_draw_upload.c: No such file or directory.
        in brw_draw_upload.c
(gdb) 
Continuing.

# silly be forgotten to bt at this point -- but it is the same as below
# under #9

so screen is frozen but it seems that box is still alive... if I interrupt it
now I get:

Program received signal SIGINT, Interrupt.
0x00002b99533449a7 in ioctl () from /lib/libc.so.6
(gdb) bt
#0  0x00002b99533449a7 in ioctl () from /lib/libc.so.6
#1  0x00002b9954c19381 in drmGetLock () from /usr/lib/libdrm.so.2
#2  0x00002b99549e7c4f in DRILock (pScreen=<value optimized out>, flags=<value optimized out>) at ../../../../hw/xfree86/dri/dri.c:2234
#3  0x00002b9954d43994 in I830LeaveVT (scrnIndex=<value optimized out>, flags=<value optimized out>) at ../../src/i830_driver.c:3187
#4  0x0000000000467c65 in AbortDDX () at ../../../../hw/xfree86/common/xf86Init.c:1112
#5  0x000000000056a888 in AbortServer () at ../../os/log.c:406
#6  0x000000000056aed5 in FatalError (f=0x573ae8 "Caught signal %d.  Server aborting\n") at ../../os/log.c:552
#7  0x0000000000475639 in xf86SigHandler (signo=11) at ../../../../hw/xfree86/common/xf86Events.c:766
#8  <signal handler called>
#9  0x00002b99662bfceb in copy_array_to_vbo_array (brw=0x13c7330, i=<value optimized out>, array=0x1fd0f58, element_size=12, count=983040) at brw_draw_upload.c:263
#10 0x00002b99662c022a in brw_upload_vertices (brw=0x13c7330, min_index=0, max_index=983039) at brw_draw_upload.c:478
#11 0x00002b99662bf769 in brw_try_draw_prims (ctx=0x13c7330, arrays=0x1f480e8, prim=0x7fff58cc9fe0, nr_prims=1, ib=0x0, min_index=0, max_index=983039)
    at brw_draw.c:319
#12 0x00002b99662bfa00 in brw_draw_prims (ctx=0x13c7330, arrays=0x1f480e8, prim=0x7fff58cc9fe0, nr_prims=1, ib=0x0, min_index=0, max_index=983039) at brw_draw.c:446
#13 0x00002b99663558eb in vbo_exec_DrawArrays (mode=4, start=0, count=983040) at vbo/vbo_exec_array.c:264
#14 0x00002b995439e295 in __glXDisp_DrawArrays (
    pc=0x2b996a8cb060 "@\021@a\027IBѿ\200\031\026?\222N?#*\207=>>>\021@HB\0375\032?QK?GW=>>>k\035@[zHB}L\027?3\031N?ZO=>>>@\021@a\027IBѿ5\032?QK?GW=>>>k\035@[zHB}M6\032?\231\035L?\030=>>>H+\030@\224HB^俠L\027?3\031N?"...)
    at ../../../GL/glx/render2.c:248
#15 0x00002b995437fda6 in DoRenderLarge (cl=0x1da0df0, pc=0x2df3cd0 "\212ɾ\201O:$ݾ", do_swap=0) at ../../../GL/glx/glxcmds.c:2055
#16 0x00002b995438372c in __glXDispatch (client=0xc1ccf0) at ../../../GL/glx/glxext.c:561
#17 0x000000000044e310 in Dispatch () at ../../dix/dispatch.c:502
#18 0x0000000000436add in main (argc=9, argv=0x7fff58cca6c8, envp=<value optimized out>) at ../../dix/main.c:452

and then loops:
(gdb) nexti
0x00000000005643c7      1560    in ../../os/utils.c
0x00000000005643ce      1560    in ../../os/utils.c
0x00000000005643d1      1560    in ../../os/utils.c
1561    in ../../os/utils.c
<signal handler called>
<signal handler called>
0x00002b99533449a5 in ioctl () from /lib/libc.so.6
SmartScheduleTimer (sig=14) at ../../os/utils.c:1560
1560    in ../../os/utils.c
0x00000000005643c7      1560    in ../../os/utils.c
0x00000000005643ce      1560    in ../../os/utils.c
0x00000000005643d1      1560    in ../../os/utils.c
1561    in ../../os/utils.c
<signal handler called>
<signal handler called>
0x00002b99533449a5 in ioctl () from /lib/libc.so.6
SmartScheduleTimer (sig=14) at ../../os/utils.c:1560

so it looks like it got stuck in drmGetLock's call to ioctl, and never gets
out from signal handler, so it doesn't crash nicely ;-)

If I detach from that X, and exit gdb -- cpu is not busy and everything looks
fine in remote console, but screen is frozen, switching to terminals with
Ctrl-Alt-F? doesn't work.

I replicated it once again (because by trying to start new X I overriden
log files), so - the same kind of backtrace and then I get in Xorg.log.0
the same what I got before

Backtrace:
0: /usr/bin/X(xf86SigHandler+0x6a) [0x4755ea]
1: /lib/libc.so.6 [0x2b91db53d240]
2: /usr/lib/dri/i965_dri.so [0x2b91ee545ceb]
3: /usr/lib/dri/i965_dri.so(brw_upload_vertices+0x20a) [0x2b91ee54622a]
4: /usr/lib/dri/i965_dri.so [0x2b91ee545769]
5: /usr/lib/dri/i965_dri.so(brw_draw_prims+0xb0) [0x2b91ee545a00]
6: /usr/lib/dri/i965_dri.so [0x2b91ee5db8eb]
7: /usr/lib/xorg/modules/extensions//libglx.so [0x2b91dc624295]
8: /usr/lib/xorg/modules/extensions//libglx.so(DoRenderLarge+0x356) [0x2b91dc605da6]
9: /usr/lib/xorg/modules/extensions//libglx.so [0x2b91dc60972c]
10: /usr/bin/X(Dispatch+0x2e0) [0x44e310]
11: /usr/bin/X(main+0x47d) [0x436add]
12: /lib/libc.so.6(__libc_start_main+0xf4) [0x2b91db52a1c4]
13: /usr/bin/X(FontFileCompleteXLFD+0x281) [0x435e19]

Fatal server error:
Caught signal 11.  Server aborting

(II) AIGLX: Suspending AIGLX clients for VT switch

do you think it might make sense to try experimental release of
xserver-xorg? (I have tried it long ago but then shifted back into lenny's
version) (though libgl1-mesa-dri is not different in sid/experimental)...

Thanks in advance for ideas
> Could you install xserver-xorg-core-dbg and libgl1-mesa-dri-dbg and try
> to catch a better backtrace with gdb? The easiest way would be to ssh
> from another host, attach gdb with "gdb -p $(pidof X)", reproduce the
> crash, enter "bt full" in gdb, and send us the output.

> By the way, if you don't want X to restart X automatically after X
> crashed, you can disable gdm/xdm/kdm and just startx from a VT text
> console with startx.

> Brice



-- 
Yaroslav Halchenko
Research Assistant, Psychology Department, Rutgers-Newark
Student  Ph.D. @ CS Dept. NJIT
Office: (973) 353-5440x263 | FWD: 82823 | Fax: (973) 353-1171
        101 Warren Str, Smith Hall, Rm 4-105, Newark NJ 07102
WWW:     http://www.linkedin.com/in/yarik        



Reply to: