Michel Dänzer wrote:
 > This is a weird one. I've never seen any other even similar report
anywhere. So I suspect there's something special about your machine.
E.g., does it also happen with a non-PREEMPT kernel? Basically, try to
eliminate any variables that might be considered special on your system.

Actually, it looks like https://bugs.freedesktop.org/show_bug.cgi?id=541
is related, but it's about Xprt, and the 'fix' just seems to have turned
a server crash into an infinite loop for you.

It would make a lot of sense if this was related to that bug. There's
nothing exceptional about my system, and I'd imagine most people are
using a PREEMPT kernel nowadays anyway.
I went back through the original backtrace I submitted, and I noticed
something that stood out at me after looking at Xorg bug #541. If you
look at the FreeResource() function in dix/resource.c, it returns void.
This would have been fine before the #541 patch since the "Freeing
resource id" error would have killed the server. However, now that it
just prints out an error message (presumably this error is now normal
according to #541), dix/dispatch.c:ProcDestroyWindow() has no way of
knowing if the resource was successfully freed or not. I can only assume
that since the resource isn't freed and ProcDestroyWindow() doesn't
return BadWindow, the event never gets removed from the dispatch table
and just keeps running over and over again.
Does this sound feasible?


Reply via email to