mieq: Backtrace when the queue overflows.
Since we're probably stuck down in a driver somewhere, let's at least try to point out where. This will need to be rethought when the input thread work lands though.
This commit is contained in:
parent
94ed0ba1b5
commit
b736f477f5
|
@ -169,6 +169,7 @@ mieqEnqueue(DeviceIntPtr pDev, xEvent *e)
|
|||
oldtail = (oldtail - 1) % QUEUE_SIZE;
|
||||
}
|
||||
else {
|
||||
static int stuck = 0;
|
||||
newtail = (oldtail + 1) % QUEUE_SIZE;
|
||||
/* Toss events which come in late. Usually this means your server's
|
||||
* stuck in an infinite loop somewhere, but SIGIO is still getting
|
||||
|
@ -176,8 +177,13 @@ mieqEnqueue(DeviceIntPtr pDev, xEvent *e)
|
|||
if (newtail == miEventQueue.head) {
|
||||
ErrorF("[mi] EQ overflowing. The server is probably stuck "
|
||||
"in an infinite loop.\n");
|
||||
if (!stuck) {
|
||||
xorg_backtrace();
|
||||
stuck = 1;
|
||||
}
|
||||
return;
|
||||
}
|
||||
stuck = 0;
|
||||
miEventQueue.tail = newtail;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user