APAR status
Closed as program error.
Error description
Error Message: A SIGSEGV/GPF is received when JIT compiling more then one method at the same time. . Stack Trace: {libj9jit28.so}{getEnclosingBlock__10TR_TreeTopFb} {libj9jit28.so}{inlineCallTarget2__14TR_InlinerBaseFP12TR_CallSt ackP13TR_CallTargetbi} {libj9jit28.so}{inlineCallTarget__14TR_InlinerBaseFP12TR_CallSta ckP13TR_CallTargetbP14TR_PrexArgInfo} {libj9jit28.so}{analyzeCallSite__14TR_DumbInlinerFP12TR_CallStac kP10TR_TreeTopP7TR_NodeT3} {libj9jit28.so}{inlineCallTargets__14TR_DumbInlinerFP23TR_Resolv edMethodSymbolP12TR_CallStackP24TR_InnerPreexistenceInfo} {libj9jit28.so}{inlineCallTarget2__14TR_InlinerBaseFP12TR_CallSt ackP13TR_CallTargetbi} {libj9jit28.so}{inlineCallTarget__14TR_InlinerBaseFP12TR_CallSta ckP13TR_CallTargetbP14TR_PrexArgInfo} {libj9jit28.so}{inlineCall__13TR_InlineCallFP10TR_TreeTopP19TR_O paqueClassBlockbP14TR_PrexArgInfoi} {libj9jit28.so}{detectFormatPattern__18TR_StringPeepholesFP10TR_ TreeTopT1P7TR_Node} {libj9jit28.so}{processBlock__18TR_StringPeepholesFP8TR_Block} {libj9jit28.so}{process__18TR_StringPeepholesFP10TR_TreeTopT1@AF 2_1} {libj9jit28.so}{perform__18TR_StringPeepholesFv} {libj9jit28.so}{IPRA.$performOptimization__16TR_OptimizerImplFPC 12OptimizationiN22} {libj9jit28.so}{performOptimization__16TR_OptimizerImplFPC12Opti mizationiN22} {libj9jit28.so}{optimize__16TR_OptimizerImplFv} The crashing location well vary, but it is very likely that detectFormatPattern() will be on the native stack of the crashing thread. . The problem can only occur when more then one compiler threads are compiling Java methods that contains a call sequence consisting of a call to DecimalFormat.format() taking a parameter that results from a call to to BigDecimal.doubleValue() or BigDecimal.floatValue(). i.e. DecimalFormat df = new DecimalFormat( "#,###,###,##0" ); map.put( "Key", df.format(dfph.getBD().doubleValue()) ); Under this scenario there is a timing window where one compiler thread can corrupt data used by the other compiler thread resulting in a crash.
Local fix
The problem can be avoided by using the following Java command line option: -Xjit:disableDecimalFormatPeephole This option will have a very minor effect on performance in most cases.
Problem summary
The JIT was using a single data structure to hold thread specific data for all compiler threads. If two threads are using this data at the same time it's possible for one compiler thread to be exposed to data that was meant to be specific to a different compiler thread.
Problem conclusion
The JIT was modified so that thread specific data is not shared with other compiler threads. . This APAR will be fixed in the following Java Releases: 8 SR5 FP20 (8.0.5.20) 7 SR10 FP30 (7.0.10.30) 6 R1 SR8 FP70 (6.1.8.70) 7 R1 SR4 FP30 (7.1.4.30) . 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
IJ07326
Reported component name
JIT
Reported component ID
620700124
Reported release
130
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2018-06-22
Closed date
2018-07-25
Last modified date
2018-07-25
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:
25 July 2018