APAR status
Closed as program error.
Error description
Error Message: A segmentation error in code that has been compiled by the Java JIT compiler is reported intermittently. . Stack Trace: TR_RegionStructure::removeEdgeWithoutCleanup(TR::CFGEdge*, bool) () from libj9jit29.so TR_RegionStructure::removeEdge(TR::CFGEdge*, bool) () from libj9jit29.so TR_RegionStructure::removeExternalEdgeTo(TR_Structure*, int) () from libj9jit29.so TR_RegionStructure::removeExternalEdgeTo(TR_Structure*, int) () from libj9jit29.so TR_RegionStructure::removeEdge(TR_Structure*, TR_Structure*) () from libj9jit29.so OMR::CFG::removeEdge(TR::CFGEdge*) () from libj9jit29.so OMR::Optimization::changeConditionalToUnconditional(TR::Node*&, TR::Block*, int, TR::TreeTop*, char const*) () from libj9jit29.so OMR::Simplifier::conditionalToUnconditional(TR::Node*&, TR::Block*, int) () from libj9jit29.so ificmpneSimplifier(TR::Node*, TR::Block*, TR::Simplifier*) () from libj9jit29.so 0x7c36feec in OMR::Simplifier::simplify(TR::Node*, TR::Block*) () from libj9jit29.so .
Local fix
The problem can be worked around by specifying the Java virtual machine option -Xjit:disableLoopVersioner. Specifying this option might have an effect on program performance.
Problem summary
In the process of compiling a Java method, the Java JIT compiler maintains data structures describing the logical structure of a method: the loops it contains, if-else constructs it contains, and so on. The Loop Versioner optimization is designed to improve the performance of loops in Java methods. In the process of making improvements to those loops, the Loop Versioner must update the data structures that describe the structure of the method. In some circumstances where the loop that it is updating contains another nested loop, the Loop Versioner optimization might make a mistake in how it updates the data structure that describes the structure of the method. This mistake leaves the structure in an inconsistent state. That situation might lead to a crash in a subsequent optimization that is performed by the Java JIT compiler.
Problem conclusion
The problem was fixed by modifying the Loop Versioner optimization to detect the situation involving nested loops that was leading to the crash, and ensuring the data structure describing the method is updated correctly. . This APAR will be fixed in the following Java Releases: 8 SR5 FP36 (8.0.5.36) . Contact your IBM Product's Service Team for these Service Refreshes and Fix Packs. For those running stand-alone, information about the available Service Refreshes and Fix Packs can be found at: https://www.ibm.com/developerworks/java/jdk/
Temporary fix
Comments
APAR Information
APAR number
IJ15826
Reported component name
JIT
Reported component ID
620700124
Reported release
130
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2019-05-01
Closed date
2019-05-02
Last modified date
2019-05-02
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fix information
Fixed component name
JIT
Fixed component ID
620700124
Applicable component levels
[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSC9HBA","label":"Just In Time (JIT) Compiler"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"130","Edition":"","Line of Business":{"code":"","label":""}}]
Document Information
Modified date:
02 May 2019