IBM Support

IJ08850: JAVA JIT: CRASH IN ARRAYLIST$ITR.NEXT()

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: SIG_SEGV when executing in code for
    java/util/ArrayList$Itr.next() on POWER platforms.
    .
    Stack Trace: Looking at the javacore from the crash the
    "Current thread" stack trace looks like this:
    3XMTHREADINFO3    Java callstack:
    4XESTACKTRACE         at
    java/util/ArrayList$Itr.next(ArrayList.java:878(Compiled Code))
    .
    The problem can only surface when an array of objects is
    allocated at the very end of the java heap memory space and that
    object array is being accessed using the Iterator object
    returned from ArrayList.iterator()
    i.e.
       static void test(ArrayList numbers){
          Iterator<String> itr = numbers.iterator();
          while( itr.hasNext() ){
             System.out.println("Itr: " + itr.next() );
          }
          System.out.println("\n");
       }
    This issue involving ArrayList$Itr.next() can only happen in
    Java 8.0.5.17, 8.0.5.20 and 8.0.5.21 but a similar issue
    involving TreeMap$UnboundedValueIterator.next() can happen in
    previous releases. The chances of hitting the TreeMap problem
    were increased in Java 8.0.5.17 because of a change in the
    prefetching stride distance. Both issues are addressed by the
    same fix. The issue only effects POWER (PowerPC) platforms (AIX
    and Linux on PPC)
    

Local fix

  • You can only avoid the problem by preventing the JIT from
    compiling and inlining two specific methods using the following
    command line option:
    -Xjit:exclude={java/util/ArrayList$Itr.next*|java/util/Tree
    Map$UnboundedValueIterator.next*},dontInline={java/util/ArrayLis
    t$Itr.next*|java/util/TreeMap$UnboundedValueIterator.next*}
    The above option should only have a minor effect on performance
    for most applications.
    
    Note that depending on how the option is provided and the
    environment that the command is running in, it may be necessary
    to escape the $ characters to prevent them being processed by
    the shell.
    

Problem summary

  • When attempting to load the CPU cache with the contents of
    objects that we expect to be accessed in the near future, the
    JIT could run off the end of an object array leading to a crash
    when that array is allocated at very the end of the addressable
    memory space.
    

Problem conclusion

  • The JIT was modified so that it will only attempt to load the
    CPU cache when it&apos;s known to be safe to do so.
    .
    This APAR will be fixed in the following Java Releases:
       8    SR5 FP22  (8.0.5.22)
    .
    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

    IJ08850

  • Reported component name

    JIT

  • Reported component ID

    620700124

  • Reported release

    130

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2018-08-29

  • Closed date

    2018-08-30

  • Last modified date

    2018-12-06

  • 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:
06 December 2018