APAR status
Closed as program error.
Error description
Error Message: A segmentation error will be thrown when the JIT attempts to compile a method with bytecode size larger than 64K. . Stack Trace: getSearchPCFromMethodAndBCIndex__FP20TR_OpaqueMethodBlockUiP11TR _FrontEndP14TR_Compilation profilingSample__12TR_IProfilerFP20TR_OpaqueMethodBlockUiP14TR_C ompilationUlb getProfilingEntry__12TR_IProfilerFP20TR_OpaqueMethodBlockUiP14TR _Compilation getProfilingData__12TR_IProfilerFP20TR_OpaqueMethodBlockUiP14TR_ Compilation getBranchCounters__12TR_IProfilerFP7TR_NodeP10TR_TreeTopPiT3P14T R_Compilation getBranchCounters__27TR_BranchProfileInfoManagerFP7TR_NodeP10TR_ TreeTopPiT3P14TR_Compilation getBranchCounters__6TR_CFGFP7TR_NodeP8TR_BlockPiT3P14TR_Compilat ion getInterpreterProfilerBranchCountersOnDoubleton__6TR_CFGFP10TR_C FGNodePiT2 setBlockFrequenciesBasedOnInterpreterProfiler__6TR_CFGFv propagateFrequencyInfoFromExternalProfiler__6TR_CFGFP19TR_Extern alProfiler setBlockAndEdgeFrequencies__12TR_IProfilerFP6TR_CFGP14TR_Compila tion setFrequencies__6TR_CFGFv performOptimization__16TR_OptimizerImplFPQ2_16TR_OptimizerImpl12 OptimizationiN22 optimize__16TR_OptimizerImplFv optimize__17TR_IlGenOptimizerFv genIL__23TR_ResolvedMethodSymbolFP11TR_FrontEndP14TR_Compilation P23TR_SymbolReferenceTableP15TR_ILGenRequest compile__14TR_CompilationFv compile__31TR_CompilationInfoPerThreadBaseFP10J9VMThreadP14TR_Co mpilationP10TR_OptionsP17TR_ResolvedMethodR11TR_FrontEndP19TR_Op timizationPlanb wrappedCompile__31TR_CompilationInfoPerThreadBaseFP13J9PortLibra ryP17CompileParameters j9sig_protect .
Local fix
-Xjit:exclude={the failing method} will stop the JIT from compiling the specified method.
Problem summary
The crash happens when the JIT attempts to compile a method with bytecode size larger than 64K due to a overflow in bytecode index which can only represent values up to 64K. As stated in java jvm specification, the largest bytecode size allowed for a method is 64K, we allowed compiling methods larger than 64K because we used 128K as the bytecode size limit, which allowed the JIT to compile methods with bytecode size in between 64K and 128K. The problem is very difficult to hit because the javac compilers won't compile gigantic methods whose bytecode sizes are going beyond 64K. This should only happen for methods with JSR+RET (jump sub routine) bytecodes where the subroutine will be inlined and the method size is expanded.
Problem conclusion
The JIT compiler has been updated to use the correct limit to avoid compiling methods larger than 64K. . This APAR will be fixed in the following Java Releases: 7 SR9 FP40 (7.0.9.40) 6 SR16 FP25 (6.0.16.25) 8 SR3 (8.0.3.0) . 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
IV82167
Reported component name
JIT
Reported component ID
620700124
Reported release
260
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2016-03-04
Closed date
2016-03-04
Last modified date
2016-03-04
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
R260 PSY
UP
R600 PSY
UP
R130 PSY
UP
[{"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":"260","Edition":"","Line of Business":{"code":"","label":""}}]
Document Information
Modified date:
04 March 2016