IBM Support

IJ20528: NULLPOINTEREXCEPTION OR SEGMENTATION FAULT FOR METHOD CALL TO OBJECT OF A PRIMITIVE WRAPPER TYPE

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 segmentation fault might occur or a
    NullPointerException might be thrown for a call to a method of
    an object of one of the primitive wrapper types, such as
    java.lang.Integer, java.lang.Long, and so on, or to a method of
    an object of type java.lang.String.
    .
    Stack Trace: N/A
    .
    This problem was first introduced in IBM Java 8 SR5 FP31.
    

Local fix

  • This issue can be worked around by specifying the option
    -Xjit:disableEscapeAnalysis.  Specifying this option might have
    an effect on program performance.
    

Problem summary

  • One optimization of the Java JIT compiler is known as Escape
    Analysis.  Under this optimization, the compiler identifies Java
    objects whose duration is brief, and it allocates them on the
    run-time stack rather than the Java heap in order to improve the
    run-time performance of the program.  Such an object might be
    allocated on the run-time stack as a contiguous object, or if
    the entire object is not needed, as  several temporary variables
    for the individual instance members of the original object.
    In the cases of an object of type java.lang.String or an object
    of one of the wrapper class types for the Java primitive types,
    if that object has methods called on it, it might still be
    broken up into several temporary variables for its individual
    instance members by Escape Analysis.  Escape Analysis will
    generate code to allocate the object on the heap just at the
    point where one of its methods is called.
    Some calls to an object's method will happen through a pointer
    to the virtual function table for the object's class which is
    stored in a hidden instance member that is managed by the
    implementation.  In the problem case, Escape Analysis generated
    code to call a method that attempted to use a temporary variable
    for the pointer to the object's virtual function table, but that
    temporary variable was only initialized with a null pointer
    reference.
    

Problem conclusion

  • The problem was fixed by ensuring that, for the kind of call
    described in the problem summary, Escape Analysis generates code
    that uses the pointer to the virtual function table that is a
    hidden instance member of the copy of the object that was
    allocated on the Java heap, rather than trying to use a separate
    temporary variable.  The pointer to the virtual function table
    that is part of the object that is allocated on the heap will
    always be initialized correctly.
    .
    This APAR will be fixed in the following Java Releases:
       8    SR6       (8.0.6.0)
    .
    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

    IJ20528

  • Reported component name

    JIT

  • Reported component ID

    620700124

  • Reported release

    130

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2019-10-27

  • Closed date

    2019-10-28

  • Last modified date

    2019-10-28

  • 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:
28 October 2019