JDK-6961633 : gui applications cause a jvm crash on windows
  • Type: Bug
  • Status: Closed
  • Resolution: Fixed
  • Component: client-libs
  • Sub-Component: 2d
  • Priority: P3
  • Affected Version: 7
  • OS: windows
  • CPU: generic
  • Submit Date: 2010-06-16
  • Updated Date: 2011-03-08
  • Resolved Date: 2011-03-08
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availabitlity Release.

To download the current JDK release, click here.
JDK 7
7 b100Fixed
Related Reports
Relates :  
Description
Attempt to launch any gui application by openjdk build results in a jvm
crash on windows platform:

bin\java -jar demo\jfc\Metalworks\Metalworks.jar

Crash happens in WToolkit.initIDs() (full error log is attached).

Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [jvm.dll+0x102bf6]
C  [awt.dll+0x87f07]
j  sun.awt.windows.WToolkit.initIDs()V+0
j  sun.awt.windows.WToolkit.<clinit>()V+23

It happens because SurfaceData class can not be loaded due to failure of static initializer:
 
Exception in thread "main" java.util.ServiceConfigurationError: sun.java2d.pipe.RenderingEngine: Provider sun.java2d.jules.JulesRenderingEngine not found
        at java.util.ServiceLoader.fail(ServiceLoader.java:231)
        at java.util.ServiceLoader.access$400(ServiceLoader.java:181)
        at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:367)
        at java.util.ServiceLoader$1.next(ServiceLoader.java:438)
        at sun.java2d.pipe.RenderingEngine$1.run(RenderingEngine.java:144)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.java2d.pipe.RenderingEngine.getInstance(RenderingEngine.java:120)
        at sun.java2d.pipe.LoopPipe.<clinit>(LoopPipe.java:52)
        at sun.java2d.SurfaceData.<clinit>(SurfaceData.java:400)
        at sun.awt.windows.WToolkit.initIDs(Native Method)
        at sun.awt.windows.WToolkit.<clinit>(WToolkit.java:109)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:186)
        at java.awt.Toolkit$2.run(Toolkit.java:863)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:855)
        at javax.swing.UIManager.<clinit>(UIManager.java:376)
        at Metalworks.main(Metalworks.java:49)

This problem seems to be caused by the fix for CR 6307603, where platform-specific rendering engine is registered as a service in shared code.

Comments
EVALUATION We need to update the shared one to remove the reference to jules and create the one referencing jules in a "solaris" specific location. Then the Makefile that copies the file needs to be updated to look in the appropriate place.
2010-06-16