JDK-5084813 : stack size assertion failure in hotspot\src\os\win32\vm\os_win32.cpp:2410
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 1.4.2_05
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • OS: windows_2000
  • CPU: x86
  • Submitted: 2004-08-10
  • Updated: 2012-10-08
  • Resolved: 2004-09-20
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_07 b01Fixed
Description
The customer application uses 1.4.2_05 on WIndows 32 Bit. The application crashes.
It produces the following assertion failure when applying the full debug VM.

To suppress the following error report, specify this argument

 # after -XX: or in .hotspotrc:  SuppressErrorAt=/hotspot\src\os\win32\vm\os_win32.cpp:2410
 #
 # HotSpot Virtual Machine Error, assertion failure
 # Please report this error at
 # http://java.sun.com/cgi-bin/bugreport.cgi
 #
 # Java VM: Java HotSpot(TM) Server VM (1.4.2_05-b04-debug mixed mode)
 #
 # assert(_default_stack_size == nt_hdrs.OptionalHeader.SizeOfStackReserve, "stack size mismatch - os::current_stack_size() vs. executable headers")
 #
 # Error ID: D:/BUILD_AREA/jdk142-update/ws/fcs/hotspot\src\os\win32\vm\os_win32.cpp, 2410
 # 

The interesting fact is that the application does not take the suppress statement provided by a .hotspotrc file or by -XX

Comments
CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: 1.4.2_07 FIXED IN: 1.4.2_07 INTEGRATED IN: 1.4.2_07
02-10-2004

EVALUATION After talking to Stefan on the phone I have a better understanding of what the customers environment is. This is only happening with debug vm, but preventing the debug vm from being used to help debug another problem. They are launching the vm from a native app, jlaunch.exe. They are unhappy about the fact that the main thread launching the vm has its stack size set from the executable and they cannot alter it ( as this later becomes a java thread ), see bug 4689797. So they do not call JNI_CreateJavaVM from the initial thread but from another with a differnet stack size. Here's what is happening: 1) run jLaunch.exe, initial stack size X (taken from executable) 2) create thread T, stack size Y ( taken from -Xss parameter) 3) from thread T, call JNI_CreateJavaVM 4) assert After looking at this more closely I do not see a problem with removing this assert in the case of is_nt(). If not premanently at least for a one off debug build so that we can debug the real issue. ###@###.### 2004-08-11 ========================================= remove assert permanently in 1.4.2_07 ###@###.### 2004-08-13
11-08-2004