JDK-6320366 : Cannot use Structured Exception Handling on Windows x64 after JVMstarted
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 5.0u5
  • Priority: P2
  • Status: Closed
  • Resolution: Duplicate
  • OS: windows_2003
  • CPU: x86
  • Submitted: 2005-09-06
  • Updated: 2010-08-06
  • Resolved: 2005-09-08
Related Reports
Duplicate :  
Description
UGS (ISV) encounters a problem with using Structured Exception Handling on Windows x 64 after the JVM has started.  This is their code:

int ff() {
  __try {
      AA* b = 0;
      b->y = 16;
  }

  __except(1) {
      printf("Caught SEH exception\n");
  }

  return 0;
}

static void start_jvm(); 

int main(int argc, char *argv[]) {
      ff();
      if ( argc >= 2 ) 
          start_jvm();
      ff();
      return 0;
}

start_jvm() calls JNI_CreateJavaVM()to start the JVM.  The line ���b->y =16��� causes a Microsoft ���Win32��� exception to be thrown.  The exception is supposed to be caught in the __except block.  Before starting the JVM, the code works as expected, but after starting the JVM, the program crashes at the line ���b->y = 16��� with a HotSpot virtual machine dump.

I���ve attached the complete code for the program that demonstrates the problem. Instructions for running the program:
set JAVA_HOME=<java 1.5 home>
set PATH=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin\server;%path%
nmake ���f Makefile
test_seh_java.exe

# This verifies that the SEH exception is caught both times if the JVM is not started
test_seh_java.exe a
# The program crashes.

They are using Microsoft Windows Server 2003, Standard x64 Edition, Service Pack 1 on a machine with a Dual Core AMD Opteron Processor 875.  The java version is 

java version "1.5.0_04"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_04-b05)
Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_04-b05, mixed mode)

Note: this problem does not occur when running Windows with a 32-bit processor.