IBM Support

IV98212: ASSERTION IN GC

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: ** ASSERTION FAILED ** at
    ParallelScavenger.cpp:3230
    .
    Stack Trace:
    MM_ParallelScavengerRootScanner::doStackSlot(J9Object**,void*,co
    nst void*)()
    stackSlotIterator(J9JavaVM*,J9Object**,void*,J9StackWalkState*,c
    onst void*)()
    VMThreadStackSlotIterator.vmThreadStackDoOSlotIterator(J9VMThrea
    d*,J9StackWalkState*,J9Object**,const void*)()
    jswalk.walkJITFrameSlots()
    jswalk.jitWalkFrame()
    jitWalkStackFrames()
    walkStackFrames()
    GC_VMThreadStackSlotIterator::scanSlots(J9VMThread*,J9VMThread*,
    void*,void(*)(J9JavaVM*,J9Object**,void*,J9StackWalkState*,const
    void*),bool,bool)()
    MM_RootScanner::scanOneThread(MM_EnvironmentBase*,J9VMThread*,vo
    id*)()
    ...
    .
    The problem can occur when there is an imbalance between monitor
    enter/exit bytescodes that makes it impossible for the JIT
    compiler to determine where locks are held during the execution
    of the resulting compiled code.
    The problem effects all J9 releases up to Java 8 but we do not
    believe it is possible for  code compiled by javac to surface
    this issue unless it has been modified by some java agent.
    

Local fix

  • The issue can only be avoided by preventing the JIT from
    compiling the method with a monitor enter/exit imbalance.
    For example:
    -Xjit:exclude={package/class.method*}
    

Problem summary

  • The JIT would try to calculate what areas of the code are
    holding locks, but given an monitor enter/exit imbalance the JIT
    would falsely calculate the life of monitors resulting in the
    JIT providing incorrect information to the GC.
    

Problem conclusion

  • The JIT was modified so that it could better detect cases where
    monitor enter/exit imbalances exist so that a conservative
    solution can be used.
    .
    This APAR will be fixed in the following Java Releases:
       8    SR5       (8.0.5.0)
       7 R1 SR4  FP25 (7.1.4.25)
       7    SR10 FP25 (7.0.10.25)
       6 R1 SR8  FP65 (6.1.8.65)
    
    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

    IV98212

  • Reported component name

    JIT

  • Reported component ID

    620700124

  • Reported release

    130

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2017-07-18

  • Closed date

    2017-07-18

  • Last modified date

    2018-04-20

  • 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:
20 April 2018