-
Type:
Bug
-
Resolution: Duplicate
-
Priority:
P4
-
None
-
Affects Version/s: 5.0
-
Component/s: client-libs
-
None
A deadlock has been found, caused indirectly by the recent integration
of the STR (single-threaded rendering) changes for the OGL pipeline.
The deadlock only occurs when both OGL and Xinerama are enabled; see
attached thread dump. The following shows basically what is happening
to cause the deadlock. (The QFT is the one thread that processes all
OGL-related operations, including some GLXGraphicsConfig initialization.)
XToolkit thread QueueFlusher thread
- handleConfigureNotifyEvent()
- acquire AWT lock
- checkIfOnNewScreen()
- getDefaultConfiguration()
- GLXGC.getConfig()
- // init GLXGC on QFT
- OGLRenderQueue.flushNow()
- acquire AWT lock
(but the lock has already
been grabbed by the
XToolkit thread, so
deadlock)
So it should be noted that GLXGraphicsConfig initialization happens on a
different thread (the QFT), which tries to acquire the AWT lock. I'm
not that familiar with the code in
XDecoratedPeer.handleConfigureNotifyEvent(), but it seems dangerous to
have such a large synchronized() block around such complex code.
###@###.### 2005-04-01 01:36:52 GMT
of the STR (single-threaded rendering) changes for the OGL pipeline.
The deadlock only occurs when both OGL and Xinerama are enabled; see
attached thread dump. The following shows basically what is happening
to cause the deadlock. (The QFT is the one thread that processes all
OGL-related operations, including some GLXGraphicsConfig initialization.)
XToolkit thread QueueFlusher thread
- handleConfigureNotifyEvent()
- acquire AWT lock
- checkIfOnNewScreen()
- getDefaultConfiguration()
- GLXGC.getConfig()
- // init GLXGC on QFT
- OGLRenderQueue.flushNow()
- acquire AWT lock
(but the lock has already
been grabbed by the
XToolkit thread, so
deadlock)
So it should be noted that GLXGraphicsConfig initialization happens on a
different thread (the QFT), which tries to acquire the AWT lock. I'm
not that familiar with the code in
XDecoratedPeer.handleConfigureNotifyEvent(), but it seems dangerous to
have such a large synchronized() block around such complex code.
###@###.### 2005-04-01 01:36:52 GMT
- duplicates
-
JDK-6253009 OGL+XAWT: deadlock occurs when Swing calls BufferStrategy.show() on XToolkit thread
-
- Resolved
-