IBM Support

IJ48654: JAVA JIT: GC CRASH IN DOSTACKSLOT() ON POWER10

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

 

APAR status

  • Closed as program error.

Error description

  • Error Message: A SIGSEGV (Signal 11/0xB) during a GC cycle
    .
    Stack Trace:
    {libj9gc29.so}{_ZN23MM_ScavengerRootScanner11doStackSlotEPP8J9Ob
    jectPvPKv}
    {libj9gc29.so}{_Z17stackSlotIteratorP8J9JavaVMPP8J9ObjectPvP16J9
    StackWalkStatePKv}
    {libj9gc29.so}{vmThreadStackDoOSlotIterator}
    {libj9jit29.so}{jitWalkFrame}
    {libj9jit29.so}{jitWalkStackFrames}
    {libj9vm29.so}{walkStackFrames}
    {libj9gc29.so}{_ZN28GC_VMThreadStackSlotIterator9scanSlotsEP10J9
    VMThreadS1_PvPFvP8J9JavaVMPP8J9ObjectS2_P16J9StackWalkStatePKvEb
    b}
    {libj9gc29.so}{_ZN14MM_RootScanner13scanOneThreadEP18MM_Environm
    entBaseP10J9VMThreadPv}
    {libj9gc29.so}{_ZN14MM_RootScanner11scanThreadsEP18MM_Environmen
    tBase}
    {libj9gc29.so}{_ZN14MM_RootScanner9scanRootsEP18MM_EnvironmentBa
    se}
    {libj9gc29.so}{_ZN12MM_Scavenger24workThreadGarbageCollectEP22MM
    _EnvironmentStandard}
    {libj9gc29.so}{_ZN23MM_ParallelScavengeTask3runEP18MM_Environmen
    tBase}
    .
    The problem can only occur when running after a CRIU restore or
    when loading portable AOT code (i.e AOT code compiled from
    inside a Linux container). The issue requires that the JIT
    compiles portable code that is targeting a CPU that is less then
    POWER10 (currently portable code targets POWER8), and the
    machine loading the portable code must be running a POWER10 CPU.
    

Local fix

  • The problem can be avoided by preventing the JVM from loading
    the portable code (for the AOT case anyhow), this can be
    accomplished by using the "-Xshareclasses:none" java command
    line argument which will effect startup time but should not
    effect steady state execution speed.
    The other option is to put the POWER10 machine in "compatibility
    mode" which will prevent the JVM from generating code targeting
    POWER10.
    

Problem summary

  • With POWER10 there is a new instruction that the JIT makes use
    of to efficiently load 64bit constants. Prior to POWER10 the JIT
    would make use of a table of constants and dedicate a register
    to point as this table. With POWER10 we can free up that
    register and therefore make the register available for other
    uses. This difference between P10 and older POWER machines
    caused an incompatibility when executing portable code that is
    compiled for P8 mixed with normal JIT code compiled for P10.
    

Problem conclusion

  • When compiling portable code the JIT will now save and restore
    the register that is dedicated for the table of constants
    pointer.
    https://github.com/eclipse-openj9/openj9/pull/17964
    .
    This APAR will be fixed in the following Releases:
    .
    IBM Semeru Runtimes
       11              11.0.21.0
       17              17.0.9.0
    IBM SDK, Java Technology Edition
       8    SR8 FP11  (8.0.8.11)
    .
    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

    IJ48654

  • 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-09-21

  • Closed date

    2023-09-21

  • Last modified date

    2023-09-21

  • 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:
21 September 2023