IBM Support

IV71983: JAVA JIT - GC ASSERT MESSAGE IN JAVA 6 (26) AND 7.0

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: STDERR message including:
    
    0000000070863D00: Object neither in heap nor stack-allocated in
    thread <OSB>ACTIVE<CSB> Thread_Name
    
    0000000070863D00:  O-Slot=0000000072E9AE90
    0000000070863D00:  O-Slot value=0000000000000001
    0000000070863D00:  PC=000001001F36488C
    0000000070863D00:  framesWalked=2
    0000000070863D00:  arg0EA=0000000072EAAE30
    0000000070863D00:  walkSP=0000000072EA2E48
    0000000070863D00:  literals=0000000000000000
    0000000070863D00:  jitInfo=000001001E980B18
    0000000070863D00:  method=0000000072AE3EC8 (com/Class.method()V)
    (JIT)
    0000000070863D00:
    stack=0000000072E9DD98-0000000072EABD18
    Notes: The message will show that the "O-Slot" has a value that
    is out-side the limit of that stack defined on the "stack="
    line. The method must have the "(JIT)" text signifying that the
    method with the bad O-Slot is JIT compiled. If both these
    restrictions are not met then this APAR does not apply.
    .
    Stack Trace:
    {libj9prt26.so}{genSystemCoreUsingGencore}
    {libj9prt26.so}{j9dump_create}{libj9dmp26.so}{doSystemDump}
    {libj9dmp26.so}{protectedDumpFunction}
    {libj9prt26.so}{j9sig_protect}{libj9dmp26.so}{runDumpFunction}{l
    ibj9dmp26.so}{runDumpAgent}
    {libj9dmp26.so}{triggerDumpAgents}{libj9trc26.so}{twAssertion}
    {libj9ute26.so}{logTracePoint}{libj9ute26.so}{utsTraceV}{libj9tr
    c26.so}{j9Trace}
    {libj9gc26.so}{doStackSlot__31MM_ParallelScavengerRootScannerFPP
    8J9ObjectPvPCv}
    {libj9gc26.so}{stackSlotIterator__FP8J9JavaVMPP8J9ObjectPvP16J9S
    tackWalkStatePCv}
    {libj9gc26.so}{vmThreadStackDoOSlotIterator
    _FP10J9VMThreadP16J9StackWalkStatePP8J9ObjectPCv}
    {libj9jit26.so}{jitWalkRegisterMap}
    {libj9jit26.so}{jitWalkFrame}
    {libj9jit26.so}{jitWalkStackFrames}
    {libj9vm26.so}{walkStackFrames}
    {libj9gc26.so}{scanSlots__28GC_VMThreadStackSlotIteratorFP10J9VM
    ThreadT1PvPFP8J9JavaVMPP8J9ObjectPvP16J9StackWalkStatePCv_vbT5}
    {libj9gc26.so}{scanOneThread__14MM_RootScannerFP20MM_Environment
    ModronP10J9VMThreadPv}
    {libj9gc26.so}{scanThreads__14MM_RootScannerFP20MM_EnvironmentMo
    dron}
    {libj9gc26.so}{scanRoots__14MM_RootScannerFP20MM_EnvironmentModr
    on}
    {libj9gc26.so}{scavengeRoots__20MM_ParallelScavengerFP22MM_Envir
    onmentStandard}
    {libj9gc26.so}{workThreadGarbageCollect__20MM_ParallelScavengerF
    P22MM_EnvironmentStandard}
    {libj9gc26.so}{run__23MM_ParallelScavengeTaskFP20MM_EnvironmentM
    odron}
    .
    This problem does NOT exist in Java 6.0 or Java 5.0.Only Java 6
    (using the 26 J9 JVM) and Java 7.0 can encounter this problem.
    

Local fix

  • The problem can be avoid by preventing the JIT from compiling
    the failing method:-Xjit:exclude={com/Class.method()V}The method
    name will be shown in the GC assert message as seen in this
    APAR. The method used in this work-around is just an example,
    you will need to use the method name that applies to your
    particular case (use the 'method=' line of the GC assert
    output).
    

Problem summary

  • The JIT needs to describe to the GC what registers are saved
    and the offset into the stack frame where the saved registers
    are located. The GC uses this data along with a register object
    map to determine what objects are referenced by JIT compiled
    methods. The space given to hold the offset can overflow in
    extreme cases where the stack size is very large resulting in
    the GC obtaining an invalid object reference.
    

Problem conclusion

  • The JIT was modified to abort any compiles where the register
    save offset overflows.
    .
    This APAR will be fixed in the following Java Releases:
       7    SR9 FP 10 (7.0.9.10)
       6 R1 SR8 FP7   (6.1.8.7)
    .
    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

    IV71983

  • Reported component name

    JIT

  • Reported component ID

    620700124

  • Reported release

    260

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2015-04-08

  • Closed date

    2015-04-09

  • Last modified date

    2015-08-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

[{"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 August 2015