IV20339: SYSTEM Z JIT-COMPILED CODE CRASH AFTER CATCHING AN EXCEPTION
Closed as program error.
Error Message: A SIGSEGV or ABEND occurs in a JIT-compiled method after an inlined method throws an exception which is caught by a handler in the JIT-compiled method. The catch is often implicit, caused by the exception being thrown out of a synchronize block, which requires the JVM to unlock an object before continuing to look for a suitable catch block down the call stack. Hence, in some cases, the crash point can be in the native function jitMonitorExit. . Stack Trace: . This failure only occurs on a z196 system running z/OS or z/Linux.
This issue can be avoided by using the -Xjit:disableZGryphon option.
The crash or ABEND occurs when program execution jumps to a wrong exception handler, due to an incorrectly specified exception range in the exception table of the JIT-compiled method. This problem is caused by a z196-specific optimization that exploits conditional move instructions to eliminate unnecessary branches. When the branch being eliminated comes from a basic block that can throw exceptions, the JIT compiler fails to mark the end of the exception range properly, and eventually generates a corrupt exception table.
This defect will be fixed in: 6.0.1 SR2 FP1 7.0.0 SR2 . The JIT compiler has been updated to generate correct exception ranges in this scenario.
Reported component name
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
Fixed component ID
Applicable component levels