IV20123: JIT CODE CACHE CORRUPTION CAUSING CRASHES
Closed as program error.
Error Message: The JVM crashes while executing a JIT-compiled Java method that seemingly contains an invalid instruction, or takes a wild branch to an unrelated method or invalid memory. The invalid instruction typically has been partially overwritten with the nibble 0xF. If verbose JIT logging is turned on, the crashing method may be shown with a code cache address range that overlaps that of another method, e.g. + (warm) Testcase.foo()V @ 0x52CF4AFC-0x52CF4B20/0x52D62F8C-0x52D63F6C Q_SZ=11 sync compThread=1 + (profiled hot) Testcase.foo()V @ 0x52D0B3FC-0x52D0CD58/0x52D59F7C-0x52D5A7B4 7.01% T Q_SZ=11 sync compThread=1 + (warm) Testcase.bar()V @ 0x52D1FCF4-0x52D1FF30/0x52D6328C-0x52D6349C Q_SZ=7 sync compThread=0 In this example, the code cache address range of Testcase.bar (0x52D6328C to 0x52D6349C) overlaps that of the first version of Testcase.foo (0x52D62F8C to 0x52D63F6C), which has just been re-compiled at a higher optimization level. Stack Trace: N/A This problem only occurs on System z.
This problem can be avoided by disabling AOT compilation support with the -Xnoaot option.
The problem can only occur when AOT compilation support is enabled. When a method is re-compiled, the JIT code cache space occupied by its old version is freed, along with any associated run-time assumption data. However, in some situations with AOT enabled, the run-time assumption data is not freed, causing corruption in the JIT code cache later on.
This defect will be fixed in: 6.0.1 SR3 7.0.0 SR2 6.0.0 SR11 . The JIT compiler has been updated to ensure that proper assumptions get freed in the scenarios identified.
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