APAR status
Closed as program error.
Error description
Error Message: After some period of operation, incorrect results are obtained from a method that was previously producing correct results. . Stack Trace: N/A . Java methods are initially run in the interpreter and after some period of operation the most frequently used methods get compiled by the JIT. An error in the JIT compiler can under rare conditions cause incorrect results to be produced. This specific problem will relate to a value used inside or following a loop where the definition of the value may have been defined on the current loop iteration or a previous loop iteration based on conditional control flow.
Local fix
The optimisation in the JIT compiler that causes this problem is global value propagation. The optimisation can be disabled for the failing method to avoid the errors. For example, if the method is packageA.ClassB.methodC then the following option will prevent global value propagation being used during the compilation of the method: -Xjit:{packageA/ClassB.methodC(*}(disableGlobalVP),dontInline={p ackageA/ClassB.methodC(*} Note that there can be at most one Xjit option on the command line, so if there is already one in use it must be combined with the above using a comma.
Problem summary
The underlying cause of the problem is highly technical, but full details can be found in the OpenJ9 PR for those that wish to explore them https://github.com/eclipse/omr/pull/3656. The short summary is that the optimisation tries to track the specific values of program intermediate results and there is a bug where the wrong value may be predicted when the intermediate value's definition is inside a loop and depends on a value that is conditionally from the current loop iteration or a previous loop iteration.
Problem conclusion
The global value propagation implementation has been significantly extended to handle a class of complex data flows that it was not able to correctly handle prior to the change. . 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
IJ16011
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-08
Closed date
2019-05-08
Last modified date
2019-05-08
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:
08 May 2019