From: Andreas S. <A.S...@gm...> - 2003-11-19 15:18:14
|
Hello! yesterday I got that annoying xserver hang on R200. XFree86 4.3.99.xx from october, DRI CVS HEAD (a few days old), Kernel 2.4.2= 2 with v4l2. I verified with a fresh build of XFree86 CVS HEAD (yesterday). The strange things are the backtraces: 1. "older" XFree and current DRI CVS: (gdb) back #0 0x4011fd54 in ioctl () from /lib/libc.so.6 #1 0xfffffc02 in ?? () #2 0x0867d5c6 in ?? () #3 0x084744d1 in RADEONWaitForIdleCP (pScrn=3D0x863dd40) at radeon_accelfu= ncs.c:120 #4 0x086b3f70 in ?? () #5 0x086d567c in ?? () #6 0x080bab5a in ProcPolySegment (client=3D0xa3a6e68) at dispatch.c:1870 #7 0x080b816c in Dispatch () at dispatch.c:450 #8 0x080c912b in main (argc=3D5, argv=3D0xbffffbc4, envp=3D0xbffffbdc) at = main.c:435 #9 0x4006b7ee in __libc_start_main () from /lib/libc.so.6 (gdb) module =2E... (gdb) back #0 0x4011fd54 in ioctl () from /lib/libc.so.6 #1 0xfffffc02 in ?? () #2 0x0867d5c6 in fbBresDash32 (pDrawable=3D0x7, pGC=3D0x4, dashOffset=3D18= , signdx=3D1074536654, signdy=3D141430640, axis=3D1811124 y1=3D0, e=3D595, e1=3D38310, e3=3D-1073744340, len=3D141246320) at = fbbits.h:119 #3 0x084744d1 in RADEONWaitForIdleCP (pScrn=3D0x863dd40) at radeon_accelfu= ncs.c:120 #4 0x086b3f70 in XAAPolyRectangleFallback () at xaaInitAccel.c:1465 #5 0x086d567c in XAAPolySegment (pDrawable=3D0xb99bb08, pGC=3D0xacb8e88, n= seg=3D1, pSeg=3D0xb382770) at xaaSeg.c:92 #6 0x080bab5a in ProcPolySegment (client=3D0xa3a6e68) at dispatch.c:1870 #7 0x080b816c in Dispatch () at dispatch.c:450 #8 0x080c912b in main (argc=3D5, argv=3D0xbffffbc4, envp=3D0xbffffbdc) at = main.c:435 #9 0x4006b7ee in __libc_start_main () from /lib/libc.so.6 (gdb)=20 isnt it strange that RADEONWaitForIdleCP somehow calls fbBresDash32() ? killall -KILL X -> System hangs, no ping reset booting... installing current XFREE CVS HEAD 2. XFree86 CVS HEAD (with the "old" radeon kernelmodul from DRI, shouldnt m= atter) (triggering hang..) (gdb) back #0 0x4012ed54 in ioctl () from /lib/libc.so.6 #1 0xfffffc02 in ?? () #2 0x085d2916 in general_textured_triangle () #3 0x08470039 in RADEONWaitForIdleCP () #4 0x0847a0ab in RADEONLoadPalette () #5 0x080b1068 in CMapRefreshColors () #6 0x080b0af0 in CMapReinstallMap () #7 0x080b0924 in CMapInstallColormap () #8 0x08188f0e in miUninstallColormap () #9 0x085c8e72 in fbUninstallColormap () #10 0x080825e9 in DGAUninstallColormap () #11 0x080b2d43 in FreeColormap () #12 0x080ccfca in FreeClientResources () #13 0x080bf674 in CloseDownClient () #14 0x080b9cd4 in Dispatch () #15 0x080cad8d in main () #16 0x4007a7ee in __libc_start_main () from /lib/libc.so.6 (gdb)=20 strange.. general_textured_triangle() is somewhere in mesa source Dump of assembler code for function RADEONWaitForIdleCP: 0x846ffe8 <RADEONWaitForIdleCP>: push %ebp 0x846ffe9 <RADEONWaitForIdleCP+1>: mov %esp,%ebp 0x846ffeb <RADEONWaitForIdleCP+3>: sub $0xc,%esp 0x846ffee <RADEONWaitForIdleCP+6>: push %edi 0x846ffef <RADEONWaitForIdleCP+7>: push %esi 0x846fff0 <RADEONWaitForIdleCP+8>: push %ebx 0x846fff1 <RADEONWaitForIdleCP+9>: mov 0x8(%ebp),%edi 0x846fff4 <RADEONWaitForIdleCP+12>: mov 0xf8(%edi),%esi 0x846fffa <RADEONWaitForIdleCP+18>: mov 0x24(%esi),%ebx 0x846fffd <RADEONWaitForIdleCP+21>: movl $0x0,0xfffffffc(%ebp) 0x8470004 <RADEONWaitForIdleCP+28>: cmpl $0x0,0x14dc(%esi) 0x847000b <RADEONWaitForIdleCP+35>: je 0x847013f <RADEONWaitForIdle= CP+343> 0x8470011 <RADEONWaitForIdleCP+41>: cmpl $0x0,0x1548(%esi) 0x8470018 <RADEONWaitForIdleCP+48>: je 0x8470028 <RADEONWaitForIdle= CP+64> 0x847001a <RADEONWaitForIdleCP+50>: add $0xfffffff8,%esp 0x847001d <RADEONWaitForIdleCP+53>: push $0x0 0x847001f <RADEONWaitForIdleCP+55>: push %edi 0x8470020 <RADEONWaitForIdleCP+56>: call 0x8472d78 <RADEONCPFlushIndi= rect> 0x8470025 <RADEONWaitForIdleCP+61>: add $0x10,%esp 0x8470028 <RADEONWaitForIdleCP+64>: add $0xfffffff8,%esp 0x847002b <RADEONWaitForIdleCP+67>: push $0x4 0x847002d <RADEONWaitForIdleCP+69>: mov 0x147c(%esi),%eax 0x8470033 <RADEONWaitForIdleCP+75>: push %eax 0x8470034 <RADEONWaitForIdleCP+76>: call 0x85d28f8 <general_textured_= triangle+4016> 0x8470039 <RADEONWaitForIdleCP+81>: mov %eax,%ebx 0x847003b <RADEONWaitForIdleCP+83>: add $0x10,%esp 0x847003e <RADEONWaitForIdleCP+86>: test %ebx,%ebx 0x8470040 <RADEONWaitForIdleCP+88>: je 0x8470066 <RADEONWaitForIdle= CP+126> 0x8470042 <RADEONWaitForIdleCP+90>: cmp $0xfffffc02,%ebx 0x8470048 <RADEONWaitForIdleCP+96>: je 0x847006e <RADEONWaitForIdle= CP+134> 0x847004a <RADEONWaitForIdleCP+98>: add $0xfffffff4,%esp 0x847004d <RADEONWaitForIdleCP+101>: push %ebx 0x847004e <RADEONWaitForIdleCP+102>: push $0x8483821 0x8470053 <RADEONWaitForIdleCP+107>: push $0x8483847 0x8470058 <RADEONWaitForIdleCP+112>: push $0x5 0x847005a <RADEONWaitForIdleCP+114>: mov 0xc(%edi),%eax 0x847005d <RADEONWaitForIdleCP+117>: push %eax 0x847005e <RADEONWaitForIdleCP+118>: call 0x80870b0 <xf86DrvMsg> 0x8470063 <RADEONWaitForIdleCP+123>: add $0x20,%esp 0x8470066 <RADEONWaitForIdleCP+126>: cmp $0xfffffc02,%ebx 0x847006c <RADEONWaitForIdleCP+132>: jne 0x847007b <RADEONWaitForIdle= CP+147> 0x847006e <RADEONWaitForIdleCP+134>: mov 0xfffffffc(%ebp),%eax 0x8470071 <RADEONWaitForIdleCP+137>: incl 0xfffffffc(%ebp) 0x8470074 <RADEONWaitForIdleCP+140>: cmp $0x1e847f,%eax 0x8470079 <RADEONWaitForIdleCP+145>: jle 0x8470028 <RADEONWaitForIdle= CP+64> 0x847007b <RADEONWaitForIdleCP+147>: test %ebx,%ebx 0x847007d <RADEONWaitForIdleCP+149>: je 0x847023f <RADEONWaitForIdle= CP+599> 0x8470083 <RADEONWaitForIdleCP+155>: add $0xfffffffc,%esp 0x8470086 <RADEONWaitForIdleCP+158>: push $0x84837b0 0x847008b <RADEONWaitForIdleCP+163>: push $0x5 0x847008d <RADEONWaitForIdleCP+165>: mov 0xc(%edi),%eax 0x8470090 <RADEONWaitForIdleCP+168>: push %eax 0x8470091 <RADEONWaitForIdleCP+169>: call 0x80870b0 <xf86DrvMsg> 0x8470096 <RADEONWaitForIdleCP+174>: add $0xfffffff4,%esp 0x8470099 <RADEONWaitForIdleCP+177>: push %edi 0x847009a <RADEONWaitForIdleCP+178>: call 0x846e898 <RADEONEngineReset> 0x847009f <RADEONWaitForIdleCP+183>: add $0x20,%esp 0x84700a2 <RADEONWaitForIdleCP+186>: add $0xfffffff4,%esp 0x84700a5 <RADEONWaitForIdleCP+189>: push %edi 0x84700a6 <RADEONWaitForIdleCP+190>: call 0x846e9f8 <RADEONEngineResto= re> 0x84700ab <RADEONWaitForIdleCP+195>: add $0x10,%esp 0x84700ae <RADEONWaitForIdleCP+198>: mov 0x14e0(%esi),%eax 0x84700b4 <RADEONWaitForIdleCP+204>: cmp $0x20000000,%eax 0x84700b9 <RADEONWaitForIdleCP+209>: je 0x84700c8 <RADEONWaitForIdle= CP+224> 0x84700bb <RADEONWaitForIdleCP+211>: cmp $0x40000000,%eax 0x84700c0 <RADEONWaitForIdleCP+216>: jne 0x84700fc <RADEONWaitForIdle= CP+276> 0x84700c2 <RADEONWaitForIdleCP+218>: lea 0x0(%esi),%esi 0x84700c8 <RADEONWaitForIdleCP+224>: add $0xfffffff8,%esp 0x84700cb <RADEONWaitForIdleCP+227>: push $0x3 0x84700cd <RADEONWaitForIdleCP+229>: mov 0x147c(%esi),%eax 0x84700d3 <RADEONWaitForIdleCP+235>: push %eax 0x84700d4 <RADEONWaitForIdleCP+236>: call 0x85d28f8 <general_textured_= triangle+4016> 0x84700d9 <RADEONWaitForIdleCP+241>: add $0x10,%esp 0x84700dc <RADEONWaitForIdleCP+244>: test %eax,%eax 0x84700de <RADEONWaitForIdleCP+246>: je 0x84700fc <RADEONWaitForIdle= CP+276> 0x84700e0 <RADEONWaitForIdleCP+248>: add $0xfffffff4,%esp 0x84700e3 <RADEONWaitForIdleCP+251>: push %eax 0x84700e4 <RADEONWaitForIdleCP+252>: push $0x8483821 0x84700e9 <RADEONWaitForIdleCP+257>: push $0x848370f 0x84700ee <RADEONWaitForIdleCP+262>: push $0x5 0x84700f0 <RADEONWaitForIdleCP+264>: mov 0xc(%edi),%eax 0x84700f3 <RADEONWaitForIdleCP+267>: push %eax 0x84700f4 <RADEONWaitForIdleCP+268>: call 0x80870b0 <xf86DrvMsg> 0x84700f9 <RADEONWaitForIdleCP+273>: add $0x20,%esp 0x84700fc <RADEONWaitForIdleCP+276>: add $0xfffffff8,%esp 0x84700ff <RADEONWaitForIdleCP+279>: push $0x1 0x8470101 <RADEONWaitForIdleCP+281>: mov 0x147c(%esi),%eax 0x8470107 <RADEONWaitForIdleCP+287>: push %eax 0x8470108 <RADEONWaitForIdleCP+288>: call 0x85d28f8 <general_textured_= triangle+4016> 0x847010d <RADEONWaitForIdleCP+293>: add $0x10,%esp 0x8470110 <RADEONWaitForIdleCP+296>: test %eax,%eax 0x8470112 <RADEONWaitForIdleCP+298>: je 0x8470130 <RADEONWaitForIdle= CP+328> 0x8470114 <RADEONWaitForIdleCP+300>: add $0xfffffff4,%esp 0x8470117 <RADEONWaitForIdleCP+303>: push %eax 0x8470118 <RADEONWaitForIdleCP+304>: push $0x8483821 0x847011d <RADEONWaitForIdleCP+309>: push $0x8483720 0x8470122 <RADEONWaitForIdleCP+314>: push $0x5 0x8470124 <RADEONWaitForIdleCP+316>: mov 0xc(%edi),%eax 0x8470127 <RADEONWaitForIdleCP+319>: push %eax 0x8470128 <RADEONWaitForIdleCP+320>: call 0x80870b0 <xf86DrvMsg> 0x847012d <RADEONWaitForIdleCP+325>: add $0x20,%esp 0x8470130 <RADEONWaitForIdleCP+328>: movl $0x1,0x14dc(%esi) 0x847013a <RADEONWaitForIdleCP+338>: jmp 0x8470028 <RADEONWaitForIdle= CP+64> 0x847013f <RADEONWaitForIdleCP+343>: add $0xfffffff8,%esp 0x8470142 <RADEONWaitForIdleCP+346>: push $0x40 0x8470144 <RADEONWaitForIdleCP+348>: push %edi 0x8470145 <RADEONWaitForIdleCP+349>: call 0x846e748 <RADEONWaitForFifo= Function> 0x847014a <RADEONWaitForIdleCP+354>: add $0x10,%esp 0x847014d <RADEONWaitForIdleCP+357>: movl $0x0,0xfffffffc(%ebp) 0x8470154 <RADEONWaitForIdleCP+364>: lea 0x0(%esi,1),%esi 0x8470158 <RADEONWaitForIdleCP+368>: mov 0xe40(%ebx),%eax 0x847015e <RADEONWaitForIdleCP+374>: test %eax,%eax 0x8470160 <RADEONWaitForIdleCP+376>: jl 0x8470170 <RADEONWaitForIdle= CP+392> 0x8470162 <RADEONWaitForIdleCP+378>: add $0xfffffff4,%esp 0x8470165 <RADEONWaitForIdleCP+381>: push %edi 0x8470166 <RADEONWaitForIdleCP+382>: call 0x846e858 <RADEONEngineFlush> 0x847016b <RADEONWaitForIdleCP+387>: jmp 0x847023f <RADEONWaitForIdle= CP+599> 0x8470170 <RADEONWaitForIdleCP+392>: incl 0xfffffffc(%ebp) 0x8470173 <RADEONWaitForIdleCP+395>: cmpl $0x1e847f,0xfffffffc(%ebp) 0x847017a <RADEONWaitForIdleCP+402>: jle 0x8470158 <RADEONWaitForIdle= CP+368> 0x847017c <RADEONWaitForIdleCP+404>: add $0xfffffffc,%esp 0x847017f <RADEONWaitForIdleCP+407>: push $0x84837b0 0x8470184 <RADEONWaitForIdleCP+412>: push $0x5 0x8470186 <RADEONWaitForIdleCP+414>: mov 0xc(%edi),%eax 0x8470189 <RADEONWaitForIdleCP+417>: push %eax 0x847018a <RADEONWaitForIdleCP+418>: call 0x80870b0 <xf86DrvMsg> 0x847018f <RADEONWaitForIdleCP+423>: add $0xfffffff4,%esp 0x8470192 <RADEONWaitForIdleCP+426>: push %edi 0x8470193 <RADEONWaitForIdleCP+427>: call 0x846e898 <RADEONEngineReset> 0x8470198 <RADEONWaitForIdleCP+432>: add $0x20,%esp 0x847019b <RADEONWaitForIdleCP+435>: add $0xfffffff4,%esp 0x847019e <RADEONWaitForIdleCP+438>: push %edi 0x847019f <RADEONWaitForIdleCP+439>: call 0x846e9f8 <RADEONEngineResto= re> 0x84701a4 <RADEONWaitForIdleCP+444>: add $0x10,%esp 0x84701a7 <RADEONWaitForIdleCP+447>: cmpl $0x0,0x1474(%esi) 0x84701ae <RADEONWaitForIdleCP+454>: je 0x847014d <RADEONWaitForIdle= CP+357> 0x84701b0 <RADEONWaitForIdleCP+456>: mov 0x14e0(%esi),%eax 0x84701b6 <RADEONWaitForIdleCP+462>: cmp $0x20000000,%eax 0x84701bb <RADEONWaitForIdleCP+467>: je 0x84701c8 <RADEONWaitForIdle= CP+480> 0x84701bd <RADEONWaitForIdleCP+469>: cmp $0x40000000,%eax 0x84701c2 <RADEONWaitForIdleCP+474>: jne 0x84701fc <RADEONWaitForIdle= CP+532> 0x84701c4 <RADEONWaitForIdleCP+476>: lea 0x0(%esi,1),%esi 0x84701c8 <RADEONWaitForIdleCP+480>: add $0xfffffff8,%esp 0x84701cb <RADEONWaitForIdleCP+483>: push $0x3 0x84701cd <RADEONWaitForIdleCP+485>: mov 0x147c(%esi),%eax 0x84701d3 <RADEONWaitForIdleCP+491>: push %eax 0x84701d4 <RADEONWaitForIdleCP+492>: call 0x85d28f8 <general_textured_= triangle+4016> 0x84701d9 <RADEONWaitForIdleCP+497>: add $0x10,%esp 0x84701dc <RADEONWaitForIdleCP+500>: test %eax,%eax 0x84701de <RADEONWaitForIdleCP+502>: je 0x84701fc <RADEONWaitForIdle= CP+532> 0x84701e0 <RADEONWaitForIdleCP+504>: add $0xfffffff4,%esp 0x84701e3 <RADEONWaitForIdleCP+507>: push %eax 0x84701e4 <RADEONWaitForIdleCP+508>: push $0x8483821 0x84701e9 <RADEONWaitForIdleCP+513>: push $0x848370f 0x84701ee <RADEONWaitForIdleCP+518>: push $0x5 0x84701f0 <RADEONWaitForIdleCP+520>: mov 0xc(%edi),%eax 0x84701f3 <RADEONWaitForIdleCP+523>: push %eax 0x84701f4 <RADEONWaitForIdleCP+524>: call 0x80870b0 <xf86DrvMsg> 0x84701f9 <RADEONWaitForIdleCP+529>: add $0x20,%esp 0x84701fc <RADEONWaitForIdleCP+532>: add $0xfffffff8,%esp 0x84701ff <RADEONWaitForIdleCP+535>: push $0x1 0x8470201 <RADEONWaitForIdleCP+537>: mov 0x147c(%esi),%eax 0x8470207 <RADEONWaitForIdleCP+543>: push %eax 0x8470208 <RADEONWaitForIdleCP+544>: call 0x85d28f8 <general_textured_= triangle+4016> 0x847020d <RADEONWaitForIdleCP+549>: add $0x10,%esp 0x8470210 <RADEONWaitForIdleCP+552>: test %eax,%eax 0x8470212 <RADEONWaitForIdleCP+554>: je 0x8470230 <RADEONWaitForIdle= CP+584> 0x8470214 <RADEONWaitForIdleCP+556>: add $0xfffffff4,%esp 0x8470217 <RADEONWaitForIdleCP+559>: push %eax 0x8470218 <RADEONWaitForIdleCP+560>: push $0x8483821 0x847021d <RADEONWaitForIdleCP+565>: push $0x8483720 0x8470222 <RADEONWaitForIdleCP+570>: push $0x5 0x8470224 <RADEONWaitForIdleCP+572>: mov 0xc(%edi),%eax 0x8470227 <RADEONWaitForIdleCP+575>: push %eax 0x8470228 <RADEONWaitForIdleCP+576>: call 0x80870b0 <xf86DrvMsg> 0x847022d <RADEONWaitForIdleCP+581>: add $0x20,%esp 0x8470230 <RADEONWaitForIdleCP+584>: movl $0x1,0x14dc(%esi) 0x847023a <RADEONWaitForIdleCP+594>: jmp 0x847014d <RADEONWaitForIdle= CP+357> 0x847023f <RADEONWaitForIdleCP+599>: lea 0xffffffe8(%ebp),%esp 0x8470242 <RADEONWaitForIdleCP+602>: pop %ebx 0x8470243 <RADEONWaitForIdleCP+603>: pop %esi 0x8470244 <RADEONWaitForIdleCP+604>: pop %edi 0x8470245 <RADEONWaitForIdleCP+605>: mov %ebp,%esp 0x8470247 <RADEONWaitForIdleCP+607>: pop %ebp 0x8470248 <RADEONWaitForIdleCP+608>: ret =20 0x8470249 <RADEONWaitForIdleCP+609>: jmp 0x8470258 <RADEONRestoreAcce= lStateCP> 0x847024b <RADEONWaitForIdleCP+611>: nop =20 0x847024c <RADEONWaitForIdleCP+612>: nop =20 0x847024d <RADEONWaitForIdleCP+613>: nop =20 0x847024e <RADEONWaitForIdleCP+614>: nop =20 0x847024f <RADEONWaitForIdleCP+615>: nop =20 0x8470250 <RADEONWaitForIdleCP+616>: nop =20 0x8470251 <RADEONWaitForIdleCP+617>: nop =20 0x8470252 <RADEONWaitForIdleCP+618>: nop =20 0x8470253 <RADEONWaitForIdleCP+619>: nop =20 0x8470254 <RADEONWaitForIdleCP+620>: nop =20 0x8470255 <RADEONWaitForIdleCP+621>: nop =20 0x8470256 <RADEONWaitForIdleCP+622>: nop =20 0x8470257 <RADEONWaitForIdleCP+623>: nop =20 End of assembler dump. (gdb)=20 here is a dump what gets called: 0x85d28f8 <general_textured_triangle+4016>: push %ebp 0x85d28f9 <general_textured_triangle+4017>: mov %esp,%ebp 0x85d28fb <general_textured_triangle+4019>: sub $0x8,%esp 0x85d28fe <general_textured_triangle+4022>: mov 0x8(%ebp),%edx 0x85d2901 <general_textured_triangle+4025>: mov 0xc(%ebp),%eax 0x85d2904 <general_textured_triangle+4028>: add $0x40,%eax 0x85d2907 <general_textured_triangle+4031>: or $0x64,%ah 0x85d290a <general_textured_triangle+4034>: add $0xfffffffc,%esp 0x85d290d <general_textured_triangle+4037>: push $0x0 0x85d290f <general_textured_triangle+4039>: push %eax 0x85d2910 <general_textured_triangle+4040>: push %edx 0x85d2911 <general_textured_triangle+4041>: call 0x809af80 <xf86ioctl> 0x85d2916 <general_textured_triangle+4046>: test %eax,%eax 0x85d2918 <general_textured_triangle+4048>: jne 0x85d291e <general_t= extured_triangle+4054> 0x85d291a <general_textured_triangle+4050>: xor %eax,%eax 0x85d291c <general_textured_triangle+4052>: jmp 0x85d2925 <general_t= extured_triangle+4061> 0x85d291e <general_textured_triangle+4054>: mov 0x81f18d8,%eax 0x85d2923 <general_textured_triangle+4059>: neg %eax 0x85d2925 <general_textured_triangle+4061>: mov %ebp,%esp 0x85d2927 <general_textured_triangle+4063>: pop %ebp 0x85d2928 <general_textured_triangle+4064>: ret =20 0x85d2929 <general_textured_triangle+4065>: jmp 0x85d2938 <general_t= extured_triangle+4080> 0x85d292b <general_textured_triangle+4067>: nop =20 0x85d292c <general_textured_triangle+4068>: nop =20 0x85d292d <general_textured_triangle+4069>: nop =20 0x85d292e <general_textured_triangle+4070>: nop =20 0x85d292f <general_textured_triangle+4071>: nop =20 0x85d2930 <general_textured_triangle+4072>: nop =20 0x85d2931 <general_textured_triangle+4073>: nop =20 0x85d2932 <general_textured_triangle+4074>: nop =20 0x85d2933 <general_textured_triangle+4075>: nop =20 0x85d2934 <general_textured_triangle+4076>: nop =20 0x85d2935 <general_textured_triangle+4077>: nop =20 ---Type <return> to continue, or q <return> to quit--- (gdb) x/20 0x85d28f8 0x85d28f8 <general_textured_triangle+4016>: 0x83e58955 0x558b08ec = 0x0c458b08 0x8040c083 0x85d2908 <general_textured_triangle+4032>: 0xc48364cc 0x50006afc = 0x866ae852 0xc085ffac 0x85d2918 <general_textured_triangle+4048>: 0xc0310475 0xd8a107eb = 0xf7081f18 0x5dec89d8 0x85d2928 <general_textured_triangle+4064>: 0x900debc3 0x90909090 = 0x90909090 0x90909090 0x85d2938 <general_textured_triangle+4080>: 0x83e58955 0x8b5314ec = 0x4d8b085d 0x0c558b10 (gdb)=20 0x85d2948 <general_textured_triangle+4096>: 0x8b40c283 0xe0c11445 = 0x64000d10 0xc2098000 0x85d2958 <general_textured_triangle+4112>: 0x51fcc483 0x1de85352 = 0x85ffac86 0x310475c0 0x85d2968 <general_textured_triangle+4128>: 0xa107ebc0 0x081f18d8 = 0x5d8bd8f7 0x5dec89e8 0x85d2978 <general_textured_triangle+4144>: 0x900debc3 0x90909090 = 0x90909090 0x90909090 0x85d2988 <general_textured_triangle+4160>: 0x83e58955 0x8b5314ec = 0x4d8b085d 0x0c558b10 (gdb)=20 it doesnt matter if I trigger the hang and disasseble then, or if just starting a "fresh" Xserver which will work after detach. 4. heres a dump of a "running" Xserver with dri commented out in the Config: now the call to <general_textured_triangle+4016> changed to a call to <LoaderDefaultFunc> Dump of assembler code for function RADEONWaitForIdleCP: 0x846ffb8 <RADEONWaitForIdleCP>: push %ebp 0x846ffb9 <RADEONWaitForIdleCP+1>: mov %esp,%ebp 0x846ffbb <RADEONWaitForIdleCP+3>: sub $0xc,%esp 0x846ffbe <RADEONWaitForIdleCP+6>: push %edi 0x846ffbf <RADEONWaitForIdleCP+7>: push %esi 0x846ffc0 <RADEONWaitForIdleCP+8>: push %ebx 0x846ffc1 <RADEONWaitForIdleCP+9>: mov 0x8(%ebp),%edi 0x846ffc4 <RADEONWaitForIdleCP+12>: mov 0xf8(%edi),%esi 0x846ffca <RADEONWaitForIdleCP+18>: mov 0x24(%esi),%ebx 0x846ffcd <RADEONWaitForIdleCP+21>: movl $0x0,0xfffffffc(%ebp) 0x846ffd4 <RADEONWaitForIdleCP+28>: cmpl $0x0,0x14dc(%esi) 0x846ffdb <RADEONWaitForIdleCP+35>: je 0x847010f <RADEONWaitForIdle= CP+343> 0x846ffe1 <RADEONWaitForIdleCP+41>: cmpl $0x0,0x1548(%esi) 0x846ffe8 <RADEONWaitForIdleCP+48>: je 0x846fff8 <RADEONWaitForIdle= CP+64> 0x846ffea <RADEONWaitForIdleCP+50>: add $0xfffffff8,%esp 0x846ffed <RADEONWaitForIdleCP+53>: push $0x0 0x846ffef <RADEONWaitForIdleCP+55>: push %edi 0x846fff0 <RADEONWaitForIdleCP+56>: call 0x8472d48 <RADEONCPFlushIndi= rect> 0x846fff5 <RADEONWaitForIdleCP+61>: add $0x10,%esp 0x846fff8 <RADEONWaitForIdleCP+64>: add $0xfffffff8,%esp 0x846fffb <RADEONWaitForIdleCP+67>: push $0x4 0x846fffd <RADEONWaitForIdleCP+69>: mov 0x147c(%esi),%eax 0x8470003 <RADEONWaitForIdleCP+75>: push %eax 0x8470004 <RADEONWaitForIdleCP+76>: call 0x80a2c80 <LoaderDefaultFunc> 0x8470009 <RADEONWaitForIdleCP+81>: mov %eax,%ebx 0x847000b <RADEONWaitForIdleCP+83>: add $0x10,%esp 0x847000e <RADEONWaitForIdleCP+86>: test %ebx,%ebx 0x8470010 <RADEONWaitForIdleCP+88>: je 0x8470036 <RADEONWaitForIdle= CP+126> 0x8470012 <RADEONWaitForIdleCP+90>: cmp $0xfffffc02,%ebx 0x8470018 <RADEONWaitForIdleCP+96>: je 0x847003e <RADEONWaitForIdle= CP+134> 0x847001a <RADEONWaitForIdleCP+98>: add $0xfffffff4,%esp 0x847001d <RADEONWaitForIdleCP+101>: push %ebx 0x847001e <RADEONWaitForIdleCP+102>: push $0x84837f1 0x8470023 <RADEONWaitForIdleCP+107>: push $0x8483817 0x8470028 <RADEONWaitForIdleCP+112>: push $0x5 0x847002a <RADEONWaitForIdleCP+114>: mov 0xc(%edi),%eax 0x847002d <RADEONWaitForIdleCP+117>: push %eax 0x847002e <RADEONWaitForIdleCP+118>: call 0x80870b0 <xf86DrvMsg> 0x8470033 <RADEONWaitForIdleCP+123>: add $0x20,%esp 0x8470036 <RADEONWaitForIdleCP+126>: cmp $0xfffffc02,%ebx 0x847003c <RADEONWaitForIdleCP+132>: jne 0x847004b <RADEONWaitForIdle= CP+147> 0x847003e <RADEONWaitForIdleCP+134>: mov 0xfffffffc(%ebp),%eax 0x8470041 <RADEONWaitForIdleCP+137>: incl 0xfffffffc(%ebp) 0x8470044 <RADEONWaitForIdleCP+140>: cmp $0x1e847f,%eax 0x8470049 <RADEONWaitForIdleCP+145>: jle 0x846fff8 <RADEONWaitForIdle= CP+64> 0x847004b <RADEONWaitForIdleCP+147>: test %ebx,%ebx 0x847004d <RADEONWaitForIdleCP+149>: je 0x847020f <RADEONWaitForIdle= CP+599> 0x8470053 <RADEONWaitForIdleCP+155>: add $0xfffffffc,%esp 0x8470056 <RADEONWaitForIdleCP+158>: push $0x8483780 0x847005b <RADEONWaitForIdleCP+163>: push $0x5 0x847005d <RADEONWaitForIdleCP+165>: mov 0xc(%edi),%eax 0x8470060 <RADEONWaitForIdleCP+168>: push %eax 0x8470061 <RADEONWaitForIdleCP+169>: call 0x80870b0 <xf86DrvMsg> 0x8470066 <RADEONWaitForIdleCP+174>: add $0xfffffff4,%esp 0x8470069 <RADEONWaitForIdleCP+177>: push %edi 0x847006a <RADEONWaitForIdleCP+178>: call 0x846e868 <RADEONEngineReset> 0x847006f <RADEONWaitForIdleCP+183>: add $0x20,%esp 0x8470072 <RADEONWaitForIdleCP+186>: add $0xfffffff4,%esp 0x8470075 <RADEONWaitForIdleCP+189>: push %edi 0x8470076 <RADEONWaitForIdleCP+190>: call 0x846e9c8 <RADEONEngineResto= re> 0x847007b <RADEONWaitForIdleCP+195>: add $0x10,%esp 0x847007e <RADEONWaitForIdleCP+198>: mov 0x14e0(%esi),%eax 0x8470084 <RADEONWaitForIdleCP+204>: cmp $0x20000000,%eax 0x8470089 <RADEONWaitForIdleCP+209>: je 0x8470098 <RADEONWaitForIdle= CP+224> 0x847008b <RADEONWaitForIdleCP+211>: cmp $0x40000000,%eax 0x8470090 <RADEONWaitForIdleCP+216>: jne 0x84700cc <RADEONWaitForIdle= CP+276> 0x8470092 <RADEONWaitForIdleCP+218>: lea 0x0(%esi),%esi 0x8470098 <RADEONWaitForIdleCP+224>: add $0xfffffff8,%esp 0x847009b <RADEONWaitForIdleCP+227>: push $0x3 0x847009d <RADEONWaitForIdleCP+229>: mov 0x147c(%esi),%eax 0x84700a3 <RADEONWaitForIdleCP+235>: push %eax 0x84700a4 <RADEONWaitForIdleCP+236>: call 0x80a2c80 <LoaderDefaultFunc> 0x84700a9 <RADEONWaitForIdleCP+241>: add $0x10,%esp 0x84700ac <RADEONWaitForIdleCP+244>: test %eax,%eax 0x84700ae <RADEONWaitForIdleCP+246>: je 0x84700cc <RADEONWaitForIdle= CP+276> 0x84700b0 <RADEONWaitForIdleCP+248>: add $0xfffffff4,%esp 0x84700b3 <RADEONWaitForIdleCP+251>: push %eax 0x84700b4 <RADEONWaitForIdleCP+252>: push $0x84837f1 0x84700b9 <RADEONWaitForIdleCP+257>: push $0x84836df 0x84700be <RADEONWaitForIdleCP+262>: push $0x5 0x84700c0 <RADEONWaitForIdleCP+264>: mov 0xc(%edi),%eax 0x84700c3 <RADEONWaitForIdleCP+267>: push %eax 0x84700c4 <RADEONWaitForIdleCP+268>: call 0x80870b0 <xf86DrvMsg> 0x84700c9 <RADEONWaitForIdleCP+273>: add $0x20,%esp 0x84700cc <RADEONWaitForIdleCP+276>: add $0xfffffff8,%esp 0x84700cf <RADEONWaitForIdleCP+279>: push $0x1 0x84700d1 <RADEONWaitForIdleCP+281>: mov 0x147c(%esi),%eax 0x84700d7 <RADEONWaitForIdleCP+287>: push %eax 0x84700d8 <RADEONWaitForIdleCP+288>: call 0x80a2c80 <LoaderDefaultFunc> 0x84700dd <RADEONWaitForIdleCP+293>: add $0x10,%esp 0x84700e0 <RADEONWaitForIdleCP+296>: test %eax,%eax 0x84700e2 <RADEONWaitForIdleCP+298>: je 0x8470100 <RADEONWaitForIdle= CP+328> 0x84700e4 <RADEONWaitForIdleCP+300>: add $0xfffffff4,%esp 0x84700e7 <RADEONWaitForIdleCP+303>: push %eax 0x84700e8 <RADEONWaitForIdleCP+304>: push $0x84837f1 0x84700ed <RADEONWaitForIdleCP+309>: push $0x84836f0 0x84700f2 <RADEONWaitForIdleCP+314>: push $0x5 0x84700f4 <RADEONWaitForIdleCP+316>: mov 0xc(%edi),%eax 0x84700f7 <RADEONWaitForIdleCP+319>: push %eax 0x84700f8 <RADEONWaitForIdleCP+320>: call 0x80870b0 <xf86DrvMsg> 0x84700fd <RADEONWaitForIdleCP+325>: add $0x20,%esp 0x8470100 <RADEONWaitForIdleCP+328>: movl $0x1,0x14dc(%esi) 0x847010a <RADEONWaitForIdleCP+338>: jmp 0x846fff8 <RADEONWaitForIdle= CP+64> 0x847010f <RADEONWaitForIdleCP+343>: add $0xfffffff8,%esp 0x8470112 <RADEONWaitForIdleCP+346>: push $0x40 0x8470114 <RADEONWaitForIdleCP+348>: push %edi 0x8470115 <RADEONWaitForIdleCP+349>: call 0x846e718 <RADEONWaitForFifo= Function> 0x847011a <RADEONWaitForIdleCP+354>: add $0x10,%esp 0x847011d <RADEONWaitForIdleCP+357>: movl $0x0,0xfffffffc(%ebp) 0x8470124 <RADEONWaitForIdleCP+364>: lea 0x0(%esi,1),%esi 0x8470128 <RADEONWaitForIdleCP+368>: mov 0xe40(%ebx),%eax 0x847012e <RADEONWaitForIdleCP+374>: test %eax,%eax 0x8470130 <RADEONWaitForIdleCP+376>: jl 0x8470140 <RADEONWaitForIdle= CP+392> 0x8470132 <RADEONWaitForIdleCP+378>: add $0xfffffff4,%esp 0x8470135 <RADEONWaitForIdleCP+381>: push %edi 0x8470136 <RADEONWaitForIdleCP+382>: call 0x846e828 <RADEONEngineFlush> 0x847013b <RADEONWaitForIdleCP+387>: jmp 0x847020f <RADEONWaitForIdle= CP+599> 0x8470140 <RADEONWaitForIdleCP+392>: incl 0xfffffffc(%ebp) 0x8470143 <RADEONWaitForIdleCP+395>: cmpl $0x1e847f,0xfffffffc(%ebp) 0x847014a <RADEONWaitForIdleCP+402>: jle 0x8470128 <RADEONWaitForIdle= CP+368> 0x847014c <RADEONWaitForIdleCP+404>: add $0xfffffffc,%esp 0x847014f <RADEONWaitForIdleCP+407>: push $0x8483780 0x8470154 <RADEONWaitForIdleCP+412>: push $0x5 0x8470156 <RADEONWaitForIdleCP+414>: mov 0xc(%edi),%eax 0x8470159 <RADEONWaitForIdleCP+417>: push %eax 0x847015a <RADEONWaitForIdleCP+418>: call 0x80870b0 <xf86DrvMsg> 0x847015f <RADEONWaitForIdleCP+423>: add $0xfffffff4,%esp 0x8470162 <RADEONWaitForIdleCP+426>: push %edi 0x8470163 <RADEONWaitForIdleCP+427>: call 0x846e868 <RADEONEngineReset> 0x8470168 <RADEONWaitForIdleCP+432>: add $0x20,%esp 0x847016b <RADEONWaitForIdleCP+435>: add $0xfffffff4,%esp 0x847016e <RADEONWaitForIdleCP+438>: push %edi 0x847016f <RADEONWaitForIdleCP+439>: call 0x846e9c8 <RADEONEngineResto= re> 0x8470174 <RADEONWaitForIdleCP+444>: add $0x10,%esp 0x8470177 <RADEONWaitForIdleCP+447>: cmpl $0x0,0x1474(%esi) 0x847017e <RADEONWaitForIdleCP+454>: je 0x847011d <RADEONWaitForIdle= CP+357> 0x8470180 <RADEONWaitForIdleCP+456>: mov 0x14e0(%esi),%eax 0x8470186 <RADEONWaitForIdleCP+462>: cmp $0x20000000,%eax 0x847018b <RADEONWaitForIdleCP+467>: je 0x8470198 <RADEONWaitForIdle= CP+480> 0x847018d <RADEONWaitForIdleCP+469>: cmp $0x40000000,%eax 0x8470192 <RADEONWaitForIdleCP+474>: jne 0x84701cc <RADEONWaitForIdle= CP+532> 0x8470194 <RADEONWaitForIdleCP+476>: lea 0x0(%esi,1),%esi 0x8470198 <RADEONWaitForIdleCP+480>: add $0xfffffff8,%esp 0x847019b <RADEONWaitForIdleCP+483>: push $0x3 0x847019d <RADEONWaitForIdleCP+485>: mov 0x147c(%esi),%eax 0x84701a3 <RADEONWaitForIdleCP+491>: push %eax 0x84701a4 <RADEONWaitForIdleCP+492>: call 0x80a2c80 <LoaderDefaultFunc> 0x84701a9 <RADEONWaitForIdleCP+497>: add $0x10,%esp 0x84701ac <RADEONWaitForIdleCP+500>: test %eax,%eax 0x84701ae <RADEONWaitForIdleCP+502>: je 0x84701cc <RADEONWaitForIdle= CP+532> 0x84701b0 <RADEONWaitForIdleCP+504>: add $0xfffffff4,%esp 0x84701b3 <RADEONWaitForIdleCP+507>: push %eax 0x84701b4 <RADEONWaitForIdleCP+508>: push $0x84837f1 0x84701b9 <RADEONWaitForIdleCP+513>: push $0x84836df 0x84701be <RADEONWaitForIdleCP+518>: push $0x5 0x84701c0 <RADEONWaitForIdleCP+520>: mov 0xc(%edi),%eax 0x84701c3 <RADEONWaitForIdleCP+523>: push %eax 0x84701c4 <RADEONWaitForIdleCP+524>: call 0x80870b0 <xf86DrvMsg> 0x84701c9 <RADEONWaitForIdleCP+529>: add $0x20,%esp 0x84701cc <RADEONWaitForIdleCP+532>: add $0xfffffff8,%esp 0x84701cf <RADEONWaitForIdleCP+535>: push $0x1 0x84701d1 <RADEONWaitForIdleCP+537>: mov 0x147c(%esi),%eax 0x84701d7 <RADEONWaitForIdleCP+543>: push %eax 0x84701d8 <RADEONWaitForIdleCP+544>: call 0x80a2c80 <LoaderDefaultFunc> 0x84701dd <RADEONWaitForIdleCP+549>: add $0x10,%esp 0x84701e0 <RADEONWaitForIdleCP+552>: test %eax,%eax 0x84701e2 <RADEONWaitForIdleCP+554>: je 0x8470200 <RADEONWaitForIdle= CP+584> 0x84701e4 <RADEONWaitForIdleCP+556>: add $0xfffffff4,%esp 0x84701e7 <RADEONWaitForIdleCP+559>: push %eax 0x84701e8 <RADEONWaitForIdleCP+560>: push $0x84837f1 0x84701ed <RADEONWaitForIdleCP+565>: push $0x84836f0 0x84701f2 <RADEONWaitForIdleCP+570>: push $0x5 0x84701f4 <RADEONWaitForIdleCP+572>: mov 0xc(%edi),%eax 0x84701f7 <RADEONWaitForIdleCP+575>: push %eax 0x84701f8 <RADEONWaitForIdleCP+576>: call 0x80870b0 <xf86DrvMsg> 0x84701fd <RADEONWaitForIdleCP+581>: add $0x20,%esp 0x8470200 <RADEONWaitForIdleCP+584>: movl $0x1,0x14dc(%esi) 0x847020a <RADEONWaitForIdleCP+594>: jmp 0x847011d <RADEONWaitForIdle= CP+357> 0x847020f <RADEONWaitForIdleCP+599>: lea 0xffffffe8(%ebp),%esp 0x8470212 <RADEONWaitForIdleCP+602>: pop %ebx 0x8470213 <RADEONWaitForIdleCP+603>: pop %esi 0x8470214 <RADEONWaitForIdleCP+604>: pop %edi 0x8470215 <RADEONWaitForIdleCP+605>: mov %ebp,%esp 0x8470217 <RADEONWaitForIdleCP+607>: pop %ebp 0x8470218 <RADEONWaitForIdleCP+608>: ret =20 0x8470219 <RADEONWaitForIdleCP+609>: jmp 0x8470228 <RADEONRestoreAcce= lStateCP> 0x847021b <RADEONWaitForIdleCP+611>: nop =20 0x847021c <RADEONWaitForIdleCP+612>: nop =20 0x847021d <RADEONWaitForIdleCP+613>: nop =20 0x847021e <RADEONWaitForIdleCP+614>: nop =20 0x847021f <RADEONWaitForIdleCP+615>: nop =20 0x8470220 <RADEONWaitForIdleCP+616>: nop =20 0x8470221 <RADEONWaitForIdleCP+617>: nop =20 0x8470222 <RADEONWaitForIdleCP+618>: nop =20 0x8470223 <RADEONWaitForIdleCP+619>: nop =20 0x8470224 <RADEONWaitForIdleCP+620>: nop =20 0x8470225 <RADEONWaitForIdleCP+621>: nop =20 0x8470226 <RADEONWaitForIdleCP+622>: nop =20 0x8470227 <RADEONWaitForIdleCP+623>: nop =20 End of assembler dump. (gdb)=20 a dump of the function that would get called when dri isnt enabled: (gdb) disass LoaderDefaultFunc Dump of assembler code for function LoaderDefaultFunc: 0x80a2c80 <LoaderDefaultFunc>: push %ebp 0x80a2c81 <LoaderDefaultFunc+1>: mov %esp,%ebp 0x80a2c83 <LoaderDefaultFunc+3>: sub $0x8,%esp 0x80a2c86 <LoaderDefaultFunc+6>: add $0xfffffff4,%esp 0x80a2c89 <LoaderDefaultFunc+9>: push $0x819f1a0 0x80a2c8e <LoaderDefaultFunc+14>: call 0x80e3360 <ErrorF> 0x80a2c93 <LoaderDefaultFunc+19>: call 0x80a2c70 <xf86LoaderTrap> 0x80a2c98 <LoaderDefaultFunc+24>: add $0xfffffff4,%esp 0x80a2c9b <LoaderDefaultFunc+27>: push $0x819f1e0 0x80a2ca0 <LoaderDefaultFunc+32>: call 0x80e32b0 <FatalError> 0x80a2ca5 <LoaderDefaultFunc+37>: lea 0x0(%esi,1),%esi 0x80a2ca9 <LoaderDefaultFunc+41>: lea 0x0(%edi,1),%edi End of assembler dump. (gdb) x/10 0x80a2c80 0x80a2c80 <LoaderDefaultFunc>: 0x83e58955 0xc48308ec 0xf= 1a068f4 0xcde80819 0x80a2c90 <LoaderDefaultFunc+16>: 0xe8000406 0xffffffd8 0x6= 8f4c483 0x0819f1e0 0x80a2ca0 <LoaderDefaultFunc+32>: 0x04060be8 0x26748d00 (gdb)=20 0x80a2ca8 <LoaderDefaultFunc+40>: 0x27bc8d00 0x00000000 0x8= 3e58955 0x56572cec 0x80a2cb8 <LoaderUnload+8>: 0x08758b53 0x0100fe81 0x0= c760000 0xffffffb8 0x80a2cc8 <LoaderUnload+24>: 0x009ce9ff 0xf6890000 (gdb)=20 And here is a objdump -d of radeon_accel.o, section RADEONWaitForIdleCP 000018a0 <RADEONWaitForIdleCP>: 18a0: 55 push %ebp 18a1: 89 e5 mov %esp,%ebp 18a3: 83 ec 0c sub $0xc,%esp 18a6: 57 push %edi 18a7: 56 push %esi 18a8: 53 push %ebx 18a9: 8b 7d 08 mov 0x8(%ebp),%edi 18ac: 8b b7 f8 00 00 00 mov 0xf8(%edi),%esi 18b2: 8b 5e 24 mov 0x24(%esi),%ebx 18b5: c7 45 fc 00 00 00 00 movl $0x0,0xfffffffc(%ebp) 18bc: 83 be dc 14 00 00 00 cmpl $0x0,0x14dc(%esi) 18c3: 0f 84 2e 01 00 00 je 19f7 <RADEONWaitForIdleCP+0x157> 18c9: 83 be 48 15 00 00 00 cmpl $0x0,0x1548(%esi) 18d0: 74 0e je 18e0 <RADEONWaitForIdleCP+0x40> 18d2: 83 c4 f8 add $0xfffffff8,%esp 18d5: 6a 00 push $0x0 18d7: 57 push %edi 18d8: e8 fc ff ff ff call 18d9 <RADEONWaitForIdleCP+0x39> 18dd: 83 c4 10 add $0x10,%esp 18e0: 83 c4 f8 add $0xfffffff8,%esp 18e3: 6a 04 push $0x4 18e5: 8b 86 7c 14 00 00 mov 0x147c(%esi),%eax 18eb: 50 push %eax 18ec: e8 fc ff ff ff call 18ed <RADEONWaitForIdleCP+0x4d> 18f1: 89 c3 mov %eax,%ebx 18f3: 83 c4 10 add $0x10,%esp 18f6: 85 db test %ebx,%ebx 18f8: 74 24 je 191e <RADEONWaitForIdleCP+0x7e> 18fa: 81 fb 02 fc ff ff cmp $0xfffffc02,%ebx 1900: 74 24 je 1926 <RADEONWaitForIdleCP+0x86> 1902: 83 c4 f4 add $0xfffffff4,%esp 1905: 53 push %ebx 1906: 68 51 01 00 00 push $0x151 190b: 68 77 01 00 00 push $0x177 1910: 6a 05 push $0x5 1912: 8b 47 0c mov 0xc(%edi),%eax 1915: 50 push %eax 1916: e8 fc ff ff ff call 1917 <RADEONWaitForIdleCP+0x77> 191b: 83 c4 20 add $0x20,%esp 191e: 81 fb 02 fc ff ff cmp $0xfffffc02,%ebx 1924: 75 0d jne 1933 <RADEONWaitForIdleCP+0x93> 1926: 8b 45 fc mov 0xfffffffc(%ebp),%eax 1929: ff 45 fc incl 0xfffffffc(%ebp) 192c: 3d 7f 84 1e 00 cmp $0x1e847f,%eax 1931: 7e ad jle 18e0 <RADEONWaitForIdleCP+0x40> 1933: 85 db test %ebx,%ebx 1935: 0f 84 bc 01 00 00 je 1af7 <RADEONWaitForIdleCP+0x257> 193b: 83 c4 fc add $0xfffffffc,%esp 193e: 68 e0 00 00 00 push $0xe0 1943: 6a 05 push $0x5 1945: 8b 47 0c mov 0xc(%edi),%eax 1948: 50 push %eax 1949: e8 fc ff ff ff call 194a <RADEONWaitForIdleCP+0xaa> 194e: 83 c4 f4 add $0xfffffff4,%esp 1951: 57 push %edi 1952: e8 fc ff ff ff call 1953 <RADEONWaitForIdleCP+0xb3> 1957: 83 c4 20 add $0x20,%esp 195a: 83 c4 f4 add $0xfffffff4,%esp 195d: 57 push %edi 195e: e8 fc ff ff ff call 195f <RADEONWaitForIdleCP+0xbf> 1963: 83 c4 10 add $0x10,%esp 1966: 8b 86 e0 14 00 00 mov 0x14e0(%esi),%eax 196c: 3d 00 00 00 20 cmp $0x20000000,%eax 1971: 74 0d je 1980 <RADEONWaitForIdleCP+0xe0> 1973: 3d 00 00 00 40 cmp $0x40000000,%eax 1978: 75 3a jne 19b4 <RADEONWaitForIdleCP+0x114> 197a: 8d b6 00 00 00 00 lea 0x0(%esi),%esi 1980: 83 c4 f8 add $0xfffffff8,%esp 1983: 6a 03 push $0x3 1985: 8b 86 7c 14 00 00 mov 0x147c(%esi),%eax 198b: 50 push %eax 198c: e8 fc ff ff ff call 198d <RADEONWaitForIdleCP+0xed> 1991: 83 c4 10 add $0x10,%esp 1994: 85 c0 test %eax,%eax 1996: 74 1c je 19b4 <RADEONWaitForIdleCP+0x114> 1998: 83 c4 f4 add $0xfffffff4,%esp 199b: 50 push %eax 199c: 68 51 01 00 00 push $0x151 19a1: 68 3f 00 00 00 push $0x3f 19a6: 6a 05 push $0x5 19a8: 8b 47 0c mov 0xc(%edi),%eax 19ab: 50 push %eax 19ac: e8 fc ff ff ff call 19ad <RADEONWaitForIdleCP+0x10d> 19b1: 83 c4 20 add $0x20,%esp 19b4: 83 c4 f8 add $0xfffffff8,%esp 19b7: 6a 01 push $0x1 19b9: 8b 86 7c 14 00 00 mov 0x147c(%esi),%eax 19bf: 50 push %eax 19c0: e8 fc ff ff ff call 19c1 <RADEONWaitForIdleCP+0x121> 19c5: 83 c4 10 add $0x10,%esp 19c8: 85 c0 test %eax,%eax 19ca: 74 1c je 19e8 <RADEONWaitForIdleCP+0x148> 19cc: 83 c4 f4 add $0xfffffff4,%esp 19cf: 50 push %eax 19d0: 68 51 01 00 00 push $0x151 19d5: 68 50 00 00 00 push $0x50 19da: 6a 05 push $0x5 19dc: 8b 47 0c mov 0xc(%edi),%eax 19df: 50 push %eax 19e0: e8 fc ff ff ff call 19e1 <RADEONWaitForIdleCP+0x141> 19e5: 83 c4 20 add $0x20,%esp 19e8: c7 86 dc 14 00 00 01 movl $0x1,0x14dc(%esi) 19ef: 00 00 00=20 19f2: e9 e9 fe ff ff jmp 18e0 <RADEONWaitForIdleCP+0x40> 19f7: 83 c4 f8 add $0xfffffff8,%esp 19fa: 6a 40 push $0x40 19fc: 57 push %edi 19fd: e8 fc ff ff ff call 19fe <RADEONWaitForIdleCP+0x15e> 1a02: 83 c4 10 add $0x10,%esp 1a05: c7 45 fc 00 00 00 00 movl $0x0,0xfffffffc(%ebp) 1a0c: 8d 74 26 00 lea 0x0(%esi,1),%esi 1a10: 8b 83 40 0e 00 00 mov 0xe40(%ebx),%eax 1a16: 85 c0 test %eax,%eax 1a18: 7c 0e jl 1a28 <RADEONWaitForIdleCP+0x188> 1a1a: 83 c4 f4 add $0xfffffff4,%esp 1a1d: 57 push %edi 1a1e: e8 fc ff ff ff call 1a1f <RADEONWaitForIdleCP+0x17f> 1a23: e9 cf 00 00 00 jmp 1af7 <RADEONWaitForIdleCP+0x257> 1a28: ff 45 fc incl 0xfffffffc(%ebp) 1a2b: 81 7d fc 7f 84 1e 00 cmpl $0x1e847f,0xfffffffc(%ebp) 1a32: 7e dc jle 1a10 <RADEONWaitForIdleCP+0x170> 1a34: 83 c4 fc add $0xfffffffc,%esp 1a37: 68 e0 00 00 00 push $0xe0 1a3c: 6a 05 push $0x5 1a3e: 8b 47 0c mov 0xc(%edi),%eax 1a41: 50 push %eax 1a42: e8 fc ff ff ff call 1a43 <RADEONWaitForIdleCP+0x1a3> 1a47: 83 c4 f4 add $0xfffffff4,%esp 1a4a: 57 push %edi 1a4b: e8 fc ff ff ff call 1a4c <RADEONWaitForIdleCP+0x1ac> 1a50: 83 c4 20 add $0x20,%esp 1a53: 83 c4 f4 add $0xfffffff4,%esp 1a56: 57 push %edi 1a57: e8 fc ff ff ff call 1a58 <RADEONWaitForIdleCP+0x1b8> 1a5c: 83 c4 10 add $0x10,%esp 1a5f: 83 be 74 14 00 00 00 cmpl $0x0,0x1474(%esi) 1a66: 74 9d je 1a05 <RADEONWaitForIdleCP+0x165> 1a68: 8b 86 e0 14 00 00 mov 0x14e0(%esi),%eax 1a6e: 3d 00 00 00 20 cmp $0x20000000,%eax 1a73: 74 0b je 1a80 <RADEONWaitForIdleCP+0x1e0> 1a75: 3d 00 00 00 40 cmp $0x40000000,%eax 1a7a: 75 38 jne 1ab4 <RADEONWaitForIdleCP+0x214> 1a7c: 8d 74 26 00 lea 0x0(%esi,1),%esi 1a80: 83 c4 f8 add $0xfffffff8,%esp 1a83: 6a 03 push $0x3 1a85: 8b 86 7c 14 00 00 mov 0x147c(%esi),%eax 1a8b: 50 push %eax 1a8c: e8 fc ff ff ff call 1a8d <RADEONWaitForIdleCP+0x1ed> 1a91: 83 c4 10 add $0x10,%esp 1a94: 85 c0 test %eax,%eax 1a96: 74 1c je 1ab4 <RADEONWaitForIdleCP+0x214> 1a98: 83 c4 f4 add $0xfffffff4,%esp 1a9b: 50 push %eax 1a9c: 68 51 01 00 00 push $0x151 1aa1: 68 3f 00 00 00 push $0x3f 1aa6: 6a 05 push $0x5 1aa8: 8b 47 0c mov 0xc(%edi),%eax 1aab: 50 push %eax 1aac: e8 fc ff ff ff call 1aad <RADEONWaitForIdleCP+0x20d> 1ab1: 83 c4 20 add $0x20,%esp 1ab4: 83 c4 f8 add $0xfffffff8,%esp 1ab7: 6a 01 push $0x1 1ab9: 8b 86 7c 14 00 00 mov 0x147c(%esi),%eax 1abf: 50 push %eax 1ac0: e8 fc ff ff ff call 1ac1 <RADEONWaitForIdleCP+0x221> 1ac5: 83 c4 10 add $0x10,%esp 1ac8: 85 c0 test %eax,%eax 1aca: 74 1c je 1ae8 <RADEONWaitForIdleCP+0x248> 1acc: 83 c4 f4 add $0xfffffff4,%esp 1acf: 50 push %eax 1ad0: 68 51 01 00 00 push $0x151 1ad5: 68 50 00 00 00 push $0x50 1ada: 6a 05 push $0x5 1adc: 8b 47 0c mov 0xc(%edi),%eax 1adf: 50 push %eax 1ae0: e8 fc ff ff ff call 1ae1 <RADEONWaitForIdleCP+0x241> 1ae5: 83 c4 20 add $0x20,%esp 1ae8: c7 86 dc 14 00 00 01 movl $0x1,0x14dc(%esi) 1aef: 00 00 00=20 1af2: e9 0e ff ff ff jmp 1a05 <RADEONWaitForIdleCP+0x165> 1af7: 8d 65 e8 lea 0xffffffe8(%ebp),%esp 1afa: 5b pop %ebx 1afb: 5e pop %esi 1afc: 5f pop %edi 1afd: 89 ec mov %ebp,%esp 1aff: 5d pop %ebp 1b00: c3 ret =20 1b01: eb 0d jmp 1b10 <RADEONRestoreAccelStateCP> 1b03: 90 nop =20 1b04: 90 nop =20 1b05: 90 nop =20 1b06: 90 nop =20 1b07: 90 nop =20 1b08: 90 nop =20 1b09: 90 nop =20 1b0a: 90 nop =20 1b0b: 90 nop =20 1b0c: 90 nop =20 1b0d: 90 nop =20 1b0e: 90 nop =20 1b0f: 90 nop =20 00001b10 <RADEONRestoreAccelStateCP>: somehow some calls get messed up during linking or is it just that old debu= gger? (5.1 static, like described in the wiki) could the old compiler (gcc 2.95.3) be the source of the problem? any hints? could someone attach to his Xserver to see if this bogus call to LoaderDefa= ultFunc or general_textured_triangle+4016 exists in his setup, too? best regards, Andreas |
From: Michel <mi...@da...> - 2003-11-19 22:15:22
|
On Wed, 2003-11-19 at 17:07, Andreas Stenglein wrote: >=20 > yesterday I got that annoying xserver hang on R200. 'That' annoying hang? Have I missed something? *shrug* > (gdb) back > #0 0x4011fd54 in ioctl () from /lib/libc.so.6 > #1 0xfffffc02 in ?? () > #2 0x0867d5c6 in ?? () > #3 0x084744d1 in RADEONWaitForIdleCP (pScrn=3D0x863dd40) at radeon_accel= funcs.c:120 [...] > (gdb) module > .... > (gdb) back > #0 0x4011fd54 in ioctl () from /lib/libc.so.6 > #1 0xfffffc02 in ?? () > #2 0x0867d5c6 in fbBresDash32 (pDrawable=3D0x7, pGC=3D0x4, dashOffset=3D= 18, signdx=3D1074536654, signdy=3D141430640, axis=3D1811124 > y1=3D0, e=3D595, e1=3D38310, e3=3D-1073744340, len=3D141246320) a= t fbbits.h:119 > #3 0x084744d1 in RADEONWaitForIdleCP (pScrn=3D0x863dd40) at radeon_accel= funcs.c:120 [...] > isnt it strange that RADEONWaitForIdleCP somehow calls fbBresDash32() ? I suspect that you've been chasing red herrings, my bet for the mysterious symbol is on drmCommandNone(), which gets resolved by the server's dynamic loader (or doesn't, when the DRI is disabled). Build a static server to get reliable debugging info, but I doubt it'll help for the actual problem: > killall -KILL X -> System hangs, no ping Sounds like a good old chip lockup. :\ --=20 Earthling Michel D=C3=A4nzer | Debian (powerpc), X and DRI develop= er Software libre enthusiast | http://svcs.affero.net/rm.php?r=3Ddaenzer |
From: Andreas S. <A.S...@gm...> - 2003-11-22 13:24:25
|
Am 2003.11.19 23:15:15 +0100 schrieb(en) Michel D=E4nzer: > 'That' annoying hang? Have I missed something? *shrug* maybe.. You will get something similar when running ut2003_demo in non-tcl mode, to= o. (on radeon7500 and on r200/radeon8500) [...] > > isnt it strange that RADEONWaitForIdleCP somehow calls fbBresDash32() ? >=20 > I suspect that you've been chasing red herrings, my bet for the > mysterious symbol is on drmCommandNone(), which gets resolved by the > server's dynamic loader (or doesn't, when the DRI is disabled). Build a > static server to get reliable debugging info, but I doubt it'll help for > the actual problem: yes, in the static build it points to drmCommandNone(), but the hang still occurs. how to trigger the bug: start glxgears, start quake3 in windowed mode, go to the model choosing menu, fiddle around a bit,=20 try different models, push the back/forw. buttons, choose another model... and somewhen it should happen: glxgears and quake3 exit with r200WaitIrq: drmRadeonIrqWait: -16 > > killall -KILL X -> System hangs, no ping >=20 > Sounds like a good old chip lockup. :\ >=20 But why does the system still work until after KILLing the Xserver?=20 Couldnt it be possible to somehow regenerate/reset the card? What needs to be defined in host.def to get better debug-info in the static= build? (XFree86 CVS HEAD) best regards, Andreas |
From: Michel <mi...@da...> - 2003-11-22 22:29:55
|
On Sat, 2003-11-22 at 14:23, Andreas Stenglein wrote: > Am 2003.11.19 23:15:15 +0100 schrieb(en) Michel D=C3=A4nzer: > > 'That' annoying hang? Have I missed something? *shrug* >=20 > maybe.. > You will get something similar when running ut2003_demo in non-tcl mode,=20 > too. You're saying there are UT2003 binaries for PPC? ;) > [...] > > > isnt it strange that RADEONWaitForIdleCP somehow calls fbBresDash32()= ? > >=20 > > I suspect that you've been chasing red herrings, my bet for the > > mysterious symbol is on drmCommandNone(), which gets resolved by the > > server's dynamic loader (or doesn't, when the DRI is disabled). Build a > > static server to get reliable debugging info, but I doubt it'll help fo= r > > the actual problem: >=20 > yes, in the static build it points to drmCommandNone(), > but the hang still occurs. >=20 > how to trigger the bug: > start glxgears, start quake3 in windowed mode, You're saying... ;) > go to the model choosing menu, fiddle around a bit,=20 > try different models, push the back/forw. buttons, > choose another model... and somewhen it should happen: > glxgears and quake3 exit with > r200WaitIrq: drmRadeonIrqWait: -16 Another symptom of a lockup: the awaited interrupts never arrive. I'm curious, does this only happen if the windows overlap, or regardless? > > > killall -KILL X -> System hangs, no ping > >=20 > > Sounds like a good old chip lockup. :\ >=20 > But why does the system still work until > after KILLing the Xserver?=20 I guess the chip lockup turns into a full system lockup when trying to (re-)initialise the chip or something. > Couldnt it be possible to somehow regenerate/reset the card? Dunno, suspect not. > What needs to be defined in host.def to get better debug-info in the=20 > static build? (XFree86 CVS HEAD) What kind of information are you thinking of? --=20 Earthling Michel D=C3=A4nzer | Debian (powerpc), X and DRI develop= er Software libre enthusiast | http://svcs.affero.net/rm.php?r=3Ddaenzer |
From: Andreas S. <A.S...@gm...> - 2003-11-28 12:00:52
|
hello unfortunately your mail got "lost" somehow. In the meantime I searched bugs.xfree86.org and found bugs #787 and #788 which I think are related to this problem. I added some info to bug #788. Later I noticed that "his" problem was on *BSD, not on Linux. Maybe you could have a look at it. http://bugs.xfree86.org/show_bug.cgi?id=3D788 =20 Am 2003.11.22 23:29:47 +0100 schrieb(en) Michel D=E4nzer: [...] > You're saying there are UT2003 binaries for PPC? ;) hmmm ;) maybe not. sorry. [...] > > how to trigger the bug: > > start glxgears, start quake3 in windowed mode, >=20 > You're saying... ;) ;) I found another program using scissors that triggers (maybe) the same bug: lesson24 from nehe.gamedev.net http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=3D24 (glut and sdl source) The difference is: when triggering the bug with q3a both gl-apps exit() with r200WaitIrq: drmRadeonIrqWait: -16 and the Xserver loops, no cursor-movement... when triggering the bug with lesson24, one program loops and gets #1 in top (99,x% CPU), and you have at least a moving cursor. After killing -KILL the programs, the Xserver becomes #1 -> now you have the same result you get with quake3. >=20 > > go to the model choosing menu, fiddle around a bit,=20 > > try different models, push the back/forw. buttons, > > choose another model... and somewhen it should happen: > > glxgears and quake3 exit with > > r200WaitIrq: drmRadeonIrqWait: -16r200WaitIrq: drmRadeonIrqWait: -16 >=20 > Another symptom of a lockup: the awaited interrupts never arrive. >=20 > I'm curious, does this only happen if the windows overlap, or > regardless? I dont know. Im going to try it out. [...] >=20 > I guess the chip lockup turns into a full system lockup when trying to > (re-)initialise the chip or something. >=20 > > Couldnt it be possible to somehow regenerate/reset the card? >=20 > Dunno, suspect not. >=20 maybe Hui Yu has some hints? At least the ati drivers for another os got a=20 "reinitialise the chip gracefully" or something similar on the features/changes list sometime ago. >=20 > > What needs to be defined in host.def to get better debug-info in the=20 > > static build? (XFree86 CVS HEAD) >=20 > What kind of information are you thinking of? I thought of linenumbers and variable names. Both are there when building from DRI CVS, but none of them is there when building XFREE86 CVS HEAD. best regards, Andreas |
From: Michel <mi...@da...> - 2003-11-28 15:16:51
Attachments:
radeon_state.c.diff
|
On Fri, 2003-11-28 at 13:00, Andreas Stenglein wrote: >=20 > I found another program using scissors that triggers > (maybe) the same bug: lesson24 from nehe.gamedev.net > http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=3D24 > (glut and sdl source) > The difference is: when triggering the bug with q3a > both gl-apps exit() with r200WaitIrq: drmRadeonIrqWait: -16 > and the Xserver loops, no cursor-movement... > when triggering the bug with lesson24, one program loops > and gets #1 in top (99,x% CPU), and you have at least > a moving cursor. After killing -KILL the programs, the Xserver > becomes #1 -> now you have the same result you get with quake3. Sounds like different symptoms of a chip lockup. This patch doesn't happen to make a difference, does it? > > > What needs to be defined in host.def to get better debug-info in the=20 > > > static build? (XFree86 CVS HEAD) > >=20 > > What kind of information are you thinking of? >=20 > I thought of linenumbers and variable names. > Both are there when building from DRI CVS, but none of them > is there when building XFREE86 CVS HEAD. I guess XFree86 CVS doesn't build with -g by default. You can always rebuild any parts you want debugging info for with makeg. --=20 Earthling Michel D=C3=A4nzer | Debian (powerpc), X and DRI develop= er Software libre enthusiast | http://svcs.affero.net/rm.php?r=3Ddaenzer |
From: Andreas S. <A.S...@gm...> - 2003-11-28 19:18:20
|
Am 2003.11.28 16:15:55 +0100 schrieb(en) Michel D=E4nzer: > On Fri, 2003-11-28 at 13:00, Andreas Stenglein wrote: > >=20 > > I found another program using scissors that triggers > > (maybe) the same bug: lesson24 from nehe.gamedev.net > > http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=3D24 > > (glut and sdl source) > > The difference is: when triggering the bug with q3a > > both gl-apps exit() with r200WaitIrq: drmRadeonIrqWait: -16 > > and the Xserver loops, no cursor-movement... > > when triggering the bug with lesson24, one program loops > > and gets #1 in top (99,x% CPU), and you have at least > > a moving cursor. After killing -KILL the programs, the Xserver > > becomes #1 -> now you have the same result you get with quake3. >=20 > Sounds like different symptoms of a chip lockup. >=20 > This patch doesn't happen to make a difference, does it? unfortunately not. The lockup still occurs. [...] It looks like its "easier" to trigger the lockup if the windows overlap. But overlap isnt necessary. Andreas |
From: Andreas S. <A.S...@gm...> - 2003-11-29 22:36:44
|
Am 2003.11.28 16:15:55 +0100 schrieb(en) Michel D=E4nzer: > On Fri, 2003-11-28 at 13:00, Andreas Stenglein wrote: > >=20 > > I found another program using scissors that triggers > > (maybe) the same bug: lesson24 from nehe.gamedev.net > > http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=3D24 > > (glut and sdl source) btw. I used the glut source. Have you tried Lesson24 and were you able to trigger the hang on ppc ? Here is what I found out until now: 1. It isnt related to scissors, at least it doesnt need scissortest in the application itself: some #if 0 #endif around the glEn/Disable( GL_SCISSOR_TEST) didnt stop the hang. 2. But not drawing the extensions-list did stop the hang to occur. 3. only drawing the extension list is enough to trigger the hang. 4. moving the glxgears window over the lesson24 window seems to trigger the hang reliable. 5. lesson24 alone makes no trouble any hints? Andreas |