IBM Support

IJ30884: SEGV WHEN USING HASHMAP$HASHITERATOR.NEXTNODE() IN MULTIPLE THREADS CONCURRENTLY

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: SEGV in the JIT library.
    .
    Stack Trace: 0x090000000308b638
    {libj9jit29.so}{fast_jitCheckCast} <OSB>0x100363b7af0<CSB>
    0x0900000003073334 {libj9jit29.so}{jitCheckCast}
    <OSB>0x100363b7af0<CSB>
    .
    The problem can result in many different symptoms, but the most
    likely is a crash in JIT'ed code or a JIT helper (in the JIT
    library). It's also possible for a crash in the interpreter or
    in the the garbage collector. It's unlikely, but even unexpected
    behaviour is possible.
    The problem can occur on any platform and operating system
    running the J9 JVM starting with version 8.0.5.0
    

Local fix

  • The problem can only occur when running a JIT compiled version
    of HashMap$HashIterator.nextNode(), so we can prevent the
    problem by preventing this method from being compiled by using
    the following java command line argument.
    -Xjit:dontInline={*HashIterator.nextNode*},exclude={*HashIterato
    r.nextNode*}
    This workaround should have a minor impact on performance (less
    then 1%), unless the application spends an extraordinary amount
    of time using this method.
    

Problem summary

  • The JIT was assuming that it was impossible for an array overrun
    to occur when using the HashMap$HashIterator.nextNode() method.
    This is true unless a race condition is encountered which allows
    two index increments to occur concurrently. This would cause one
    thread to increment beyond the end of the HashMap table array
    bounds and access data passed the end of the array.
    

Problem conclusion

  • The JIT was modified so that it does not remove array bound
    checks when compiling the HashMap$HashIterator.nextNode()
    method.
    .
    This APAR will be fixed in the following Java Releases:
       8    SR6 FP26  (8.0.6.26)
    .
    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

    IJ30884

  • Reported component name

    JIT

  • Reported component ID

    620700124

  • Reported release

    130

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2021-02-12

  • Closed date

    2021-03-05

  • Last modified date

    2021-03-05

  • 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

[{"Line of Business":{"code":"LOB36","label":"IBM Automation"},"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"}]

Document Information

Modified date:
06 March 2021