JDK-6434214 : JRE crashed when launching a GUI Window from a service program on Windows Vista
  • Type: Bug
  • Component: client-libs
  • Sub-Component: 2d
  • Affected Version: 5.0
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • OS: windows_vista
  • CPU: x86
  • Submitted: 2006-06-05
  • Updated: 2014-02-27
  • Resolved: 2006-10-07
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 Availability Release.

To download the current JDK release, click here.
Other
1.4.2_15Resolved
Related Reports
Relates :  
Description
FULL PRODUCT VERSION :
JRE 1.4.2 and JRE 1.5

ADDITIONAL OS VERSION INFORMATION :
Windows Vista beta 2
Typical window box, with Windows Vista installed

A DESCRIPTION OF THE PROBLEM :
JRE consantly crashed when launching a GUI Window from a service program on Windows Vista

It happens only on Windows Vista (current in beta 2)

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Windows Vista Beta 2
1. download JSW (open-source Java Service Wrapper)
2. Configure a NT service that launches a GUI (e.g. one of JDK 2D examples)
3. set service to in manual mode
4. restart Windows Vista
5. Start service
6. See a JVM crash dump as below

Looks Java 2D in JRE 1.4.2 and 1.5 have problem to initiate Window Vista's so-called session 0 desktop. Not a problem with JRE 1.3.1 though.

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
NT Service should launch a GUI on Vista session 0 desktop
ACTUAL -
JRE crashed

#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d00baf4, pid=3612, tid=2928
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_06-b05 mixed mode, sharing)
# Problematic frame:
# C  [awt.dll+0xbaf4]
#

---------------  T H R E A D  ---------------

Current thread (0x03827510):  JavaThread "AWT-EventQueue-0" [_thread_in_native, id=2928]

siginfo: ExceptionCode=0xc0000005, reading address 0x000073df

Registers:
EAX=0x00001cf0, EBX=0x6d130440, ECX=0x0000001f, EDX=0x0000001f
ESP=0x03ecf294, EBP=0x235c705d, ESI=0x000000f0, EDI=0x00000002
EIP=0x6d00baf4, EFLAGS=0x00000202

  Top of Stack: (sp=0x03ecf294)
0x03ecf294:   ffffffde 038275d0 6d11c498 00000022
0x03ecf2a4:   235c6c4c fff1f1f1 6d130400 6d1303c0
0x03ecf2b4:   00000000 00000000 00000001 6d001a56
0x03ecf2c4:   03a80000 00000020 00000037 00000018
0x03ecf2d4:   00000037 03ecf348 6d11c498 03ecf33c
0x03ecf2e4:   03827510 2b66d4c0 03ecf488 2bedafa0
0x03ecf2f4:   038b5968 00000022 6d11c498 00000000
0x03ecf304:   014bc2a0 00000022 00000044 00000059

Instructions: (pc=0x6d00baf4)
0x6d00bae4:   00 00 83 e6 f8 c1 e0 05 c1 e9 03 03 c6 03 d1 45
0x6d00baf4:   8a 0c 82 8b 44 24 30 88 08 40 89 44 24 30 8b 44


Stack: [0x03e90000,0x03ed0000),  sp=0x03ecf294,  free space=252k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [awt.dll+0xbaf4]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  sun.java2d.loops.Blit.Blit(Lsun/java2d/SurfaceData;Lsun/java2d/SurfaceData;Ljava/awt/Composite;Lsun/java2d/pipe/Region;IIIIII)V+0
j  sun.java2d.pipe.DrawImage.blitSurfaceData(Lsun/java2d/SunGraphics2D;Lsun/java2d/pipe/Region;Lsun/java2d/SurfaceData;Lsun/java2d/SurfaceData;Lsun/java2d/loops/SurfaceType;Lsun/java2d/loops/SurfaceType;IIIIIILjava/awt/Color;)V+97
j  sun.java2d.pipe.DrawImage.renderImageCopy(Lsun/java2d/SunGraphics2D;Ljava/awt/Image;Ljava/awt/Color;IIIIII)Z+75
j  sun.java2d.pipe.DrawImage.copyImage(Lsun/java2d/SunGraphics2D;Ljava/awt/Image;IILjava/awt/Color;)Z+45
j  sun.java2d.pipe.DrawImage.copyImage(Lsun/java2d/SunGraphics2D;Ljava/awt/Image;IILjava/awt/Color;Ljava/awt/image/ImageObserver;)Z+15
j  sun.java2d.pipe.ValidatePipe.copyImage(Lsun/java2d/SunGraphics2D;Ljava/awt/Image;IILjava/awt/Color;Ljava/awt/image/ImageObserver;)Z+21
j  sun.java2d.SunGraphics2D.drawImage(Ljava/awt/Image;IILjava/awt/Color;Ljava/awt/image/ImageObserver;)Z+18
j  sun.java2d.SunGraphics2D.drawImage(Ljava/awt/Image;IILjava/awt/image/ImageObserver;)Z+7
j  javax.swing.JComponent.paintWithOffscreenBuffer(Ljavax/swing/JComponent;Ljava/awt/Graphics;IIIILjava/awt/Image;)V+232
j  javax.swing.JComponent.paintDoubleBuffered(Ljavax/swing/JComponent;Ljava/awt/Component;Ljava/awt/Graphics;IIII)Z+131
j  javax.swing.JComponent._paintImmediately(IIII)V+739
j  javax.swing.JComponent.paintImmediately(IIII)V+83
j  javax.swing.RepaintManager.paintDirtyRegions()V+314
j  javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run()V+32
j  java.awt.event.InvocationEvent.dispatch()V+47
j  java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V+26
j  java.awt.EventDispatchThread.pumpOneEventForHierarchy(ILjava/awt/Component;)Z+233
j  java.awt.EventDispatchThread.pumpEventsForHierarchy(ILjava/awt/Conditional;Ljava/awt/Component;)V+26
j  java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4
j  java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3
j  java.awt.EventDispatchThread.run()V+9
v  ~StubRoutines::call_stub

---------------  P R O C E S S  ---------------

Java Threads: ( => current thread )
  0x0389ae30 JavaThread "Basic L&F File Loading Thread" [_thread_in_native, id=2736]
  0x03864be8 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=3952]
=>0x03827510 JavaThread "AWT-EventQueue-0" [_thread_in_native, id=2928]
  0x0381d6f8 JavaThread "AWT-Shutdown" [_thread_blocked, id=3400]
  0x03825ad0 JavaThread "Image Fetcher 3" daemon [_thread_blocked, id=3404]
  0x03823d98 JavaThread "Image Fetcher 2" daemon [_thread_blocked, id=2792]
  0x03820d60 JavaThread "Image Fetcher 1" daemon [_thread_blocked, id=2300]
  0x03820bd8 JavaThread "Image Fetcher 0" daemon [_thread_blocked, id=2564]
  0x03828e00 JavaThread "AWT-Windows" daemon [_thread_in_native, id=3604]
  0x0007c9a0 JavaThread "DestroyJavaVM" [_thread_blocked, id=3600]
  0x037f2cd8 JavaThread "Wrapper-Connection" [_thread_in_native, id=1528]
  0x037f1a20 JavaThread "Wrapper-Control-Event-Monitor" daemon [_thread_blocked, id=2692]
  0x014b8458 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=2820]
  0x014b8f30 JavaThread "CompilerThread0" daemon [_thread_blocked, id=2396]
  0x014b1fd0 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=2084]
  0x0148ec68 JavaThread "Finalizer" daemon [_thread_blocked, id=1208]
  0x014b0988 JavaThread "Reference Handler" daemon [_thread_blocked, id=1600]

Other Threads:
  0x014aed08 VMThread [id=3568]
  0x0007fd88 WatcherThread [id=3896]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap
 def new generation   total 576K, used 120K [0x235c0000, 0x23660000, 0x23aa0000)
  eden space 512K,  10% used [0x235c0000, 0x235ce0e0, 0x23640000)
  from space 64K, 100% used [0x23650000, 0x23660000, 0x23660000)
  to   space 64K,   0% used [0x23640000, 0x23640000, 0x23650000)
 tenured generation   total 1408K, used 695K [0x23aa0000, 0x23c00000, 0x275c0000)
   the space 1408K,  49% used [0x23aa0000, 0x23b4dd18, 0x23b4de00, 0x23c00000)
 compacting perm gen  total 8192K, used 637K [0x275c0000, 0x27dc0000, 0x2b5c0000)
   the space 8192K,   7% used [0x275c0000, 0x2765f500, 0x2765f600, 0x27dc0000)
    ro space 8192K,  63% used [0x2b5c0000, 0x2bacb178, 0x2bacb200, 0x2bdc0000)
    rw space 12288K,  46% used [0x2bdc0000, 0x2c359fa8, 0x2c35a000, 0x2c9c0000)

Dynamic libraries:
0x00400000 - 0x0040c000 	c:\vista_test\jre15\bin\java.exe
0x77ef0000 - 0x77ff2000 	C:\Windows\system32\ntdll.dll
0x77e20000 - 0x77ee8000 	C:\Windows\system32\kernel32.dll
0x77d60000 - 0x77e15000 	C:\Windows\system32\ADVAPI32.dll
0x77c10000 - 0x77cb8000 	C:\Windows\system32\RPCRT4.dll
0x77b10000 - 0x77bb3000 	C:\Windows\system32\MSVCRT.dll
0x718e0000 - 0x718fe000 	C:\Windows\system32\ShimEng.dll
0x756c0000 - 0x756e9000 	C:\Windows\system32\apphelp.dll
0x70db0000 - 0x70e0d000 	C:\Windows\AppPatch\AcGenral.DLL
0x76e60000 - 0x76eb3000 	C:\Windows\system32\SHLWAPI.dll
0x77bc0000 - 0x77c09000 	C:\Windows\system32\GDI32.dll
0x77cc0000 - 0x77d5b000 	C:\Windows\system32\USER32.dll
0x71950000 - 0x7198e000 	C:\Windows\system32\UxTheme.dll
0x76630000 - 0x76661000 	C:\Windows\system32\WINMM.dll
0x76d20000 - 0x76e55000 	C:\Windows\system32\ole32.dll
0x76c80000 - 0x76d10000 	C:\Windows\system32\OLEAUT32.dll
0x74450000 - 0x74485000 	C:\Windows\system32\OLEACC.dll
0x758d0000 - 0x75937000 	C:\Windows\system32\msvcp60.dll
0x77ae0000 - 0x77af4000 	C:\Windows\system32\MSACM32.dll
0x77b00000 - 0x77b09000 	C:\Windows\system32\VERSION.dll
0x77160000 - 0x77ac3000 	C:\Windows\system32\SHELL32.dll
0x766b0000 - 0x766b5000 	C:\Windows\system32\sfc.dll
0x767a0000 - 0x767b1000 	C:\Windows\system32\sfc_os.DLL
0x75f10000 - 0x7605d000 	C:\Windows\system32\SETUPAPI.dll
0x752e0000 - 0x752fc000 	C:\Windows\system32\USERENV.dll
0x76b40000 - 0x76b54000 	C:\Windows\system32\Secur32.dll
0x71440000 - 0x7144b000 	C:\Windows\system32\dwmapi.dll
0x719a0000 - 0x719b3000 	C:\Windows\system32\MPR.dll
0x75c30000 - 0x75c4e000 	C:\Windows\system32\IMM32.DLL
0x71650000 - 0x71659000 	C:\Windows\system32\LPK.DLL
0x72a30000 - 0x72aaa000 	C:\Windows\system32\USP10.dll
0x76fe0000 - 0x7715a000 	C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.5308.17_none_87f5ccb6259111e8\comctl32.dll
0x74990000 - 0x749ac000 	C:\Windows\system32\Cabinet.dll
0x6d670000 - 0x6d804000 	c:\vista_test\jre15\bin\client\jvm.dll
0x6d280000 - 0x6d288000 	c:\vista_test\jre15\bin\hpi.dll
0x76720000 - 0x76726000 	C:\Windows\system32\PSAPI.DLL
0x6d640000 - 0x6d64c000 	c:\vista_test\jre15\bin\verify.dll
0x6d300000 - 0x6d31d000 	c:\vista_test\jre15\bin\java.dll
0x6d660000 - 0x6d66f000 	c:\vista_test\jre15\bin\zip.dll
0x10000000 - 0x10013000 	C:\vista_test\lib\wrapper.dll
0x6d000000 - 0x6d167000 	C:\vista_test\jre15\bin\awt.dll
0x72ab0000 - 0x72ae5000 	C:\Windows\system32\WINSPOOL.DRV
0x6d4c0000 - 0x6d4d3000 	C:\vista_test\jre15\bin\net.dll
0x719d0000 - 0x719f1000 	C:\Windows\system32\WS2_32.dll
0x719c0000 - 0x719cd000 	C:\Windows\system32\WS2HELP.dll
0x71820000 - 0x71826000 	C:\Windows\system32\NSI.dll
0x71900000 - 0x71945000 	C:\Windows\system32\mswsock.dll
0x70c30000 - 0x70c3b000 	C:\Windows\system32\nlaapi.dll
0x714f0000 - 0x714f7000 	C:\Windows\System32\wship6.dll
0x71990000 - 0x71997000 	C:\Windows\system32\WSOCK32.dll
0x718d0000 - 0x718d7000 	C:\Windows\System32\wshtcpip.dll
0x72f30000 - 0x73012000 	C:\Windows\system32\ddraw.dll
0x733e0000 - 0x733e6000 	C:\Windows\system32\DCIMAN32.dll
0x73d90000 - 0x73e4c000 	C:\Windows\system32\msctf.dll
0x6e9c0000 - 0x6e9c6000 	C:\Windows\system32\wls0wndh.dll
0x76f50000 - 0x76fd5000 	C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.5308.17_none_2c4da130c8be0d6b\comctl32.dll
0x03cb0000 - 0x03d33000 	C:\Windows\system32\PROPSYS.dll
0x71a20000 - 0x71a7c000 	C:\Windows\system32\netapi32.dll
0x3eb20000 - 0x3ec69000 	C:\Windows\system32\NetworkExplorer.dll
0x74ae0000 - 0x74b09000 	C:\Windows\system32\ADVPACK.dll
0x75a20000 - 0x75acf000 	C:\Windows\system32\WININET.dll
0x71810000 - 0x71816000 	C:\Windows\system32\Normaliz.dll
0x3eb00000 - 0x3eb11000 	C:\Windows\system32\NetworkItemFactory.dll
0x709c0000 - 0x709cd000 	C:\Windows\System32\ntlanman.dll
0x756f0000 - 0x756f8000 	C:\Windows\System32\drprov.dll
0x75700000 - 0x7570e000 	C:\Windows\System32\davclnt.dll
0x75b00000 - 0x75bec000 	C:\Windows\system32\CRYPT32.dll
0x75ae0000 - 0x75af2000 	C:\Windows\system32\MSASN1.dll
0x715e0000 - 0x7160d000 	C:\Windows\system32\ncrypt.dll
0x71610000 - 0x71649000 	C:\Windows\system32\bcrypt.dll
0x74e80000 - 0x74ee4000 	C:\Windows\system32\CRYPTUI.dll
0x76770000 - 0x7679d000 	C:\Windows\system32\WINTRUST.dll
0x767c0000 - 0x767e9000 	C:\Windows\system32\imagehlp.dll
0x76af0000 - 0x76b39000 	C:\Windows\system32\WLDAP32.dll
0x5fe30000 - 0x5fe3a000 	C:\Windows\system32\cscapi.dll
0x6d240000 - 0x6d27d000 	C:\vista_test\jre15\bin\fontmanager.dll
0x6d4e0000 - 0x6d4e9000 	C:\vista_test\jre15\bin\nio.dll

VM Arguments:
jvm_args: -Djava.library.path=..\lib -Dwrapper.key=EJ6ZgweMCANm6R77 -Dwrapper.port=32000 -Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 -Dwrapper.pid=3876 -Dwrapper.version=3.2.0 -Dwrapper.native_library=wrapper -Dwrapper.service=TRUE -Dwrapper.cpu.timeout=10 -Dwrapper.jvmid=3
java_command: org.tanukisoftware.wrapper.WrapperSimpleApp FileChooserDemo
Launcher Type: SUN_STANDARD

Environment Variables:
PATH=C:\Windows\System32\Wbem;C:\Windows\system32;C:\Windows;
USERNAME=SYSTEM
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 15 Model 4 Stepping 8, GenuineIntel



---------------  S Y S T E M  ---------------

OS: Windows NT 6.0 Build 5308

CPU:total 1 family 15, cmov, cx8, fxsr, mmx, sse, sse2, ht

Memory: 4k page, physical 1047488k(587192k free), swap 2367852k(1856316k free)

vm_info: Java HotSpot(TM) Client VM (1.5.0_06-b05) for windows-x86, built on Nov 10 2005 11:12:14 by "java_re" with MS VC++ 6.0


ERROR MESSAGES/STACK TRACES THAT OCCUR :
JVM crash dump

REPRODUCIBILITY :
This bug can be reproduced always.

Comments
SUGGESTED FIX http://javaweb.sfbay/jcg/5.0u10/2D/6434214/
12-09-2006

EVALUATION I was able to backport the part of the fix to 5.0u10 codebase needed to address the crash. The required change was in Win32SurfaceData.cpp's Win32SurfaceData_initOps. With this change the 5.0u10 build works fine and shows the service GUI. Note however that there's been some changes to the later Vista builds in regards to services. Firstly, according to this document: http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Session0_Vista.doc it will not be possilbe for a service to show a GUI on Windows Vista by default, unless the appropriate service is present and started manually (Interactive Service Detection) by the user. The result of this is that the user is no longer notified of a GUI dialog waiting for input on Session 0 screen as it used to be in Vista beta2 builds. Secondly, on the latest Vista RC build (5492) even with this service started, I still could not see the gui - I was taken to the Service 0 screen but there was no Swing GUI there. The "Return to Desktop" Windows dialog present on earlier Vista builds was missing too (I could only get back by doing Ctrl+Alt+Del). I observed the same behavior both with Mustang and my fixed 5.0u10 build. This could be a new Vista bug. I couldn't find any other service which would put up some gui dialog to test if this is a java service wrapper issue or generic Vista problem.
09-08-2006

EVALUATION I've confirmed that it is fix for 6366359 that addressed the crash in mustang: I can reproduce the crash in b72 but not in b73 when this fix had been integrated.
08-08-2006

EVALUATION I've confirmed that the problem is fixed in Java 6 (I've tried with b92) but unfortunately not in 5.0u8 or u9. The reason for the crash is that in Windows Vista the handling for a GUI displayed by a service is quite weird: the gui appears on a special blank screen (the rest of the desktop is hidden), with bit depth of this screen changed to 8 bit. Unfortunately this scenario (switching display mode to/from 8 bit during the application startup) appears to be causing a crash in Java 5. In mustang it was most likely addressed by the fix for the following bug: 6366359: Fullscreen suite DisplayModeTest failing when switching from some 8-bit to 32-bit modes on WinXP so in mustang we handle this situation correctly, but in tiger we crash. (note that the bug above caused crashes in both DirectDraw and noddraw modes, that's why we still die in 5.0u8, where we're running in noddraw mode by default on vista). Looks like we'll need to port the fix for 6366359 to 5.0u9 (too late for u8) and hope that it helps (there were many display-change related fixes in mustang, so it might have beed some other fix).
21-07-2006

EVALUATION Windows Vista is not a supported platform for any of the available jdks (as of 5.0u7). It will be supported in 5.0u8 and Java 6. We need to verify that this is addressed those releases.
28-06-2006