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