IZ64807: JAVA JIT COMPILER CRASH ON IA32 IN USESREGISTER
Closed as program error.
Error Message: A SIGSEGV/GPF is raised in the JIT compiler module while a method is being compiled. The crashing function is TR_IA32VirtualGuardNOPInstruction::usesRegister(). The problem only occurs rarely on IA32. The problem may occur with both Java 5 and Java 6. . Stack Trace: j9jit23!TR_IA32VirtualGuardNOPInstruction::usesRegister+0x1d j9jit23!TR_X86CodeGenerator::pickNOPRegister+0x69 j9jit23!TR_X86CodeGenerator::generatePadding+0x4e j9jit23!TR_IA32BoundaryAvoidanceInstruction::generateBinaryEncod ing+0xc9 j9jit23!TR_Instruction::generateBinaryEncoding+0xe j9jit23!TR_X86CodeGenerator::doCodeGeneration+0x28e j9jit23!TR_CodeGenerator::generateCode+0x4b4 j9jit23!TR_Compilation::compile+0x22a j9jit23!TR_CompilationInfo::compile+0x2ed j9jit23!TR_CompilationInfo::wrappedCompile+0x3c6 J9PRT23!j9sig_protect+0x41 j9jit23!TR_CompilationInfo::compile+0x111 j9jit23!protectedCompilationThreadProc+0x1cf J9PRT23!j9sig_protect+0x41 j9jit23!compilationThreadProc+0xa5 J9THR23!thread_wrapper+0xbf .
This issue can be avoided using the -Xjit:disableVirtualGuardNOPing option. Note that this option can incur a performance impact of approximately 4% to 10% (in the worst case), depending on the nature of the Java application.
The problem is caused by a defect in the JIT compiler which leaves a certain data field uninitialized. The value of the field is later used in the computation of a memory address. The incorrect memory address then causes a crash when it is accessed.
This defect will be fixed in: 5.0.0 SR12 6.0.0 SR8 . The JIT compiler has been updated to initialize the data field properly. . To obtain the fix: Install build 20091127 or later
Reported component name
JAVA 5 JIT
Reported component ID
Last modified date
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fixed component name
JAVA 5 JIT
Fixed component ID
Applicable component levels