[Bug 29170] [regression] Far Cry (in Wine) hangs on level load

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Tue Jul 20 10:22:49 PDT 2010


https://bugs.freedesktop.org/show_bug.cgi?id=29170

--- Comment #1 from Nick Bowler <nbowler at draconx.ca> 2010-07-20 10:22:49 PDT ---
Created an attachment (id=37248)
 View: https://bugs.freedesktop.org/attachment.cgi?id=37248
 Review: https://bugs.freedesktop.org/review?bug=29170&attachment=37248

Make global GLX mutex recursive.

Sigh.  Here's a horrible, horrible hack that should get the game working until
someone who understands mesa locking comes up with a better idea.

Looks like if a dri2 context is destroyed while a swap event is pending (seems
to happen easily if there are two contexts in one application, maybe it only
happens in this case?), we get a deadlock.  The garbage collector is called
while holding the global glx mutex, which calls XSync, which tries to handle
the pending swap event, which tries to take the mutex --> boom.

Looking at the code, it doesn't seem like this is entirely a new problem,
either: invalidate events also take the global mutex in DRI2WireToEvent and I
imagine they can cause a similar deadlock.

There's nothing radeon-specific about this, every DRI2 driver should be
affected.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the dri-devel mailing list