IBM Support

IV77818: Multiple failures with java.lang.ProcessBuilder on AIX after applying the APAR IV52649

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Error Message:
    java.io.IOException or SegmentationFault with
    java.lang.Runtime.exec() or java.lang.ProcessBuilder.start()
    APIs
    .
    Stack Trace:
    for SegmentationFault:
    
    startChild+0x4c
    Java_java_lang_UNIXProcess_forkAndExec+0x6d8
    at java/lang/UNIXProcess.forkAndExec(Native Method)
    at java/lang/UNIXProcess.<init>(UNIXProcess.java:212)
    at java/lang/ProcessImpl.start(ProcessImpl.java:164)
    at java/lang/ProcessBuilder.start(ProcessBuilder.java:1040)
    at java/lang/Runtime.exec(Runtime.java:629)
    at sun/reflect/NativeMethodAccessorImpl.invoke0(Native Method)
    at
    sun/reflect/NativeMethodAccessorImpl.invoke(NativeMethodAccessor
    Impl.java:95)
    at
    sun/reflect/DelegatingMethodAccessorImpl.invoke(DelegatingMethod
    AccessorImpl.java:56(Compiled Code))
    at java/lang/reflect/Method.invoke(Method.java:620(CompileCode))
    
    for java.io.IOException:
    
    java.io.IOException: Cannot run program "echo": error=2, A file
    or directory in the path name does not exist.
            at
    java.lang.ProcessBuilder.processException(ProcessBuilder.java:49
    5)
            at
    java.lang.ProcessBuilder.start(ProcessBuilder.java:474)
            at java.lang.Runtime.exec(Runtime.java:604)
            at java.lang.Runtime.exec(Runtime.java:477)
    Caused by: java.io.IOException: error=2, A file or directory in
    the path name does not exist.
            at java.lang.UNIXProcess.forkAndExec(Native Method)
            at java.lang.UNIXProcess.<init>(UNIXProcess.java:53)
            at java.lang.ProcessImpl.start(ProcessImpl.java:112)
            at
    java.lang.ProcessBuilder.start(ProcessBuilder.java:469)
    .
    Other Error Info:
    Issue can also be manifested as child process doesn't carry
    environment variables from parent process or missing arguments
    passed to java.lang.Runtime.exec() or
    java.lang.ProcessBuilder.start() APIs
    .
    

Local fix

Problem summary

  • In APAR IV52649, for AIX platform, the Java runtime  used a
    system call to identify all the valid open file descriptors and
    close only those file descriptors. The system macro returns the
    total number of open file descriptors which is usually the
    maximum file descriptors in the system as AIX  reuse the freed
    file descriptor before going for a new file descriptor. However,
     the open file descriptor count need not be the maximum file
    descriptor in the system always due to a timing window between
    the allocation of the new file descriptor and freeing an
    existing file descriptor. Due to this timing window, the maximum
     fd number could be greater than the number of open file
    descriptor and as a result few of the file descriptors inherited
     from the parent are not cleaned before executing the command
    which result  in the crash
    

Problem conclusion

  • JDK has been updated to revert the APAR IV52649 as it is not
    reliable to rely on the number of open file descriptor as the
    maximum file descriptor number.
    
    This APAR will be fixed in the following Java Releases:
       8    SR2       (8.0.2.0)
       7    SR9 FP20  (7.0.9.20)
       7 R1 SR3 FP20  (7.1.3.20)
       6    SR16 FP15 (6.0.16.15)
       6 R1 SR8 FP15  (6.1.8.15)
    .
    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

    IV77818

  • Reported component name

    JAVA CLASS LIBS

  • Reported component ID

    620700130

  • Reported release

    700

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2015-10-07

  • Closed date

    2015-12-10

  • Last modified date

    2016-09-29

  • 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

    JAVA CLASS LIBS

  • Fixed component ID

    620700130

Applicable component levels

  • R700 PSY

       UP

  • R800 PSY

       UP

  • R600 PSY

       UP

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

Document Information

Modified date:
21 February 2022