-
Bug
-
Resolution: Unresolved
-
P4
-
8
-
None
-
generic
-
linux
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8019924 | 7-pool | Unassigned | P4 | Closed | Won't Fix | |
JDK-8019925 | 6-pool | Unassigned | P4 | Closed | Won't Fix |
FULL PRODUCT VERSION :
Any release of JDK 8, JDK 7, JDK 6, where "sun.java2d.pipe.RenderQueue.lock()" uses AWT lock.
ADDITIONAL OS VERSION INFORMATION :
Linux OS (32-bit, 64-bit)
A DESCRIPTION OF THE PROBLEM :
An attempt to acquire AWT lock from the code of Runnable() instance executed by means of the method "sun.java2d.opengl.OGLRenderQueue.flushAndInvokeNow(Runnable r)" in Java2D Queue Flusher thread leads to a deadlock always. While according to the code comments, in some cases it is even required to take AWT lock in Java2D Queue Flusher thread before invocation of a certain Runnable() instance, for example the following code from "sun.java2d.opengl.OGLSurfaceData" class:
/**
* Note: This should only be called from the QFT under the AWT lock.
* This method is kept separate from the initSurface() method below just
* to keep the code a bit cleaner.
*/
private void initSurfaceNow(int width, int height) {
This problem was discovered during work on the bugJDK-8015730. Because of this problem currently in the file "jdk/src/solaris/native/sun/java2d/opengl/GLXSurfaceData.c" the native function "XSync()" is called on "awt_display" without prior acquisition of AWT lock in order to not reach a deadlock, which is incorrect, since all calls to Xlib functions involving a pointer to Display should be synchronized using AWT lock.
Any release of JDK 8, JDK 7, JDK 6, where "sun.java2d.pipe.RenderQueue.lock()" uses AWT lock.
ADDITIONAL OS VERSION INFORMATION :
Linux OS (32-bit, 64-bit)
A DESCRIPTION OF THE PROBLEM :
An attempt to acquire AWT lock from the code of Runnable() instance executed by means of the method "sun.java2d.opengl.OGLRenderQueue.flushAndInvokeNow(Runnable r)" in Java2D Queue Flusher thread leads to a deadlock always. While according to the code comments, in some cases it is even required to take AWT lock in Java2D Queue Flusher thread before invocation of a certain Runnable() instance, for example the following code from "sun.java2d.opengl.OGLSurfaceData" class:
/**
* Note: This should only be called from the QFT under the AWT lock.
* This method is kept separate from the initSurface() method below just
* to keep the code a bit cleaner.
*/
private void initSurfaceNow(int width, int height) {
This problem was discovered during work on the bug
- backported by
-
JDK-8019924 Acquisition of AWT lock in Java2D Queue Flusher thread leads to a deadlock
- Closed
-
JDK-8019925 Acquisition of AWT lock in Java2D Queue Flusher thread leads to a deadlock
- Closed
- relates to
-
JDK-8015730 PIT: On Linux, OGL=true and fbobject=false leads to deadlock or infinite loop
- Closed