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

Bug#513904: Info received (Bug#513904: Xorg runaway in NVSync(), see #336774)



It just happened again, and here is a disassembly of the location:

0xb7b96530 <NVSync+48>:	mov    (%ecx),%eax
0xb7b96532 <NVSync+50>:	shr    $0x2,%eax
0xb7b96535 <NVSync+53>:	cmp    %edx,%eax
0xb7b96537 <NVSync+55>:	jne    0xb7b96530 <NVSync+48>

Since neither %ecx nor %edx get changed during the loop, the only way
out of it is for (%ecx) to be volatile.

In the source code, that loop is
#define READ_GET(pNv) ((pNv)->FIFO[0x0011] >> 2)
	while(READ_GET(pNv) != pNv->dmaPut);

so it looks like a polling wait for an event that isn't happening.

This part of the source code looks exactly the same in 2.1.10, so I
don't think backporting it will be worth our time.



Reply to: