APAR status
Closed as program error.
Error description
Error Message: A SIG_SEGV while JIT compiling a method The javacore will have a line like this: 1XHEXCPMODULE Compiling method: ... . Stack Trace: {libj9jit29.so}{setHandlerInfoWithOutBCInfo__Q2_3OMR5BlockFUiUcU sP17TR_ResolvedMethodPQ2_2TR11Compilat...} {libj9jit29.so}{processBytecodeAndGenerateCFG__21TR_J9EstimateCo deSizeFP13TR_CallTargetRQ2_2TR6RegionR...} {libj9jit29.so}{realEstimateCodeSize__21TR_J9EstimateCodeSizeFP1 3TR_CallTargetP12TR_CallStackbRQ2_2TR6...} {libj9jit29.so}{estimateCodeSize__21TR_J9EstimateCodeSizeFP13TR_ CallTargetP12TR_CallStackb} {libj9jit29.so}{calculateCodeSize__19TR_EstimateCodeSizeFP13TR_C allTargetP12TR_CallStackb} {libj9jit29.so}{estimateAndRefineBytecodeSize__16TR_J9InlinerUti lFP11TR_CallSiteP13TR_CallTargetP12TR_...} {libj9jit29.so}{applyPolicyToTargets__14TR_InlinerBaseFP12TR_Cal lStackP11TR_CallSite} {libj9jit29.so}{getSymbolAndFindInlineTargets__14TR_InlinerBaseF P12TR_CallStackP11TR_CallSiteb} {libj9jit29.so}{inlineCallTargets__28TR_MultipleCallTargetInline rFPQ2_2TR20ResolvedMethodSymbolP12TR_...} {libj9jit29.so}{performInlining__14TR_InlinerBaseFPQ2_2TR20Resol vedMethodSymbol} {libj9jit29.so}{perform__10TR_InlinerFv} {libj9jit29.so}{performOptimization__Q2_3OMR9OptimizerFPC20Optim izationStrategyiN22} {libj9jit29.so}{optimize__Q2_3OMR9OptimizerFv} {libj9jit29.so}{compile__Q2_3OMR11CompilationFv} ... . The problem can occur on any platform when using the IBM JVM, but the issue can only occur when compiling a method that is very close to the JVM method size limit of 65536 bytes. I believe the issue might be limited to method that are not compiled using javac, like auto generated methods.
Local fix
The issue can only be avoided by preventing the JIT from attempting to compile the method which triggers the issue to occur. This can be achieved by using the following java command line option with the method name that is seen in the javacore on the "1XHEXCPMODULE Compiling method" line. -Xjit:exclude={full_method_name_from_javacore}
Problem summary
The JIT was using 16bit variables to hold the offset to try region and catcher bytecodes. In some rare cases where (after being loaded by the VM) a method size can exceed 65536 bytes, and if the bytecode offset of a try region or a catch bock is greater then 65536, truncation will occur leading to a SIG_SEGV.
Problem conclusion
The JIT was modified so that the try region and catch block offsets are held in 32bit variables. See: https://github.com/eclipse/omr/pull/6999 https://github.com/eclipse-openj9/openj9/pull/17469 . This APAR will be fixed in the following Releases: . IBM SDK, Java Technology Edition 8 SR8 FP10 (8.0.8.10) . Contact your IBM Product's Service Team for these Service Refreshes and Fix Packs. For those running stand-alone, information about the available maintenance can be found at: https://www.ibm.com/support/pages/java-sdk
Temporary fix
Comments
APAR Information
APAR number
IJ47085
Reported component name
JIT
Reported component ID
620700124
Reported release
130
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2023-06-02
Closed date
2023-06-03
Last modified date
2023-06-03
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":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSNVBF","label":"Runtimes for Java Technology"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"130","Line of Business":{"code":"LOB36","label":"IBM Automation"}}]
Document Information
Modified date:
04 June 2023