
OPERATIONAL DEFECT DATABASE
...

...
Description of problem: For some time now we observe a JDK hang, when running our Eclipse-based product. Mostly we see the hang during tests, though we have observed it during normal product execution: "Worker-23: Preparing SmarTest Workspace" #86 prio=5 os_prio=0 tid=0x00007fff88426800 nid=0x2311 runnable [0x00007fff812e8000] java.lang.Thread.State: RUNNABLE at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.<init>(UNIXProcess.java:247) at java.lang.ProcessImpl.start(ProcessImpl.java:134) at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) at java.lang.Runtime.exec(Runtime.java:620) at java.lang.Runtime.exec(Runtime.java:528) at org.eclipse.debug.core.DebugPlugin.exec(DebugPlugin.java:943) at org.eclipse.debug.core.DebugPlugin.exec(DebugPlugin.java:893) at org.eclipse.jdt.internal.launching.StandardVMType.generateLibraryInfo(StandardVMType.java:712) Thread 23 (Thread 0x7fff812ea700 (LWP 8977)): #0 0x00007ffff7bcd70d in read () at ../sysdeps/unix/syscall-template.S:81 #1 0x00007ffff4e9689e in readFully (__nbytes=4, __buf=0x7fff812e8ca0, __fd=173) at /usr/include/bits/unistd.h:44 #2 0x00007ffff4e9689e in readFully (fd=173, buf=0x7fff812e8ca0, nbyte=4) at /usr/src/debug/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/openjdk/jdk/src/solaris/native/java/lang/childproc.c:145 #3 0x00007ffff4e93ffa in Java_java_lang_UNIXProcess_forkAndExec (env=0x7fff88426a58, process=<optimized out>, mode=<optimized out>, helperpath=0x7fff812e8e40, prog=0x7fff812e8e38, argBlock=0x7fff812e8e30, argc=4, envBlock=0x0, envc=0, dir=0x0, std_fds=0x7fff812e8e08, redirectErrorStream=0 '\000') at /usr/src/debug/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/openjdk/jdk/src/solaris/native/java/lang/UNIXProcess_md.c:665 #4 0x00007fffe0018407 in () #5 0x00007fff00000004 in () #6 0x0000000000000000 in () Version-Release number of selected component (if applicable): We are on RHEL 7.4, and have observed the problem with JDK 11.0.5, JDK 11.0.7 and JDK 1.8.0_181. How reproducible: We cannot reproduce the problem reliably, or outside of our product. Actual results: The JDK hangs while executing different commands with Runtime.exec(). Expected results: The JDK should not hang. Additional info: We observe that the problem is seen far less frequently (nearly never) if we disable Eclipse tips dialog on start-up. Additionally, we had a status line contribution that seemed to increase the frequency of the hang; the contribution was WebKit2 browser based, same as the Eclipse tips dialog. The code at which the JDK was hanging was added here: https://bugs.openjdk.java.net/browse/JDK-6671051?focusedCommentId=12150614&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-12150614 We have tried the following patch: — ./BUILD/java-11-openjdk-11.0.7.10-5.el7.x86_64/openjdk/src/java.base/unix/native/libjava/childproc.c 2020-03-31 22:46:52.000000000 +0200 +++ ./BUILD/java-11-openjdk-11.0.7.10-5.el7.x86_64/openjdk/src/java.base/unix/native/libjava/childproc.c 2020-07-15 12:26:40.950489000 +0200 @@ -143,6 +143,7 @@ ssize_t readFully(int fd, void *buf, size_t nbyte) { + int counter = 0; ssize_t remaining = nbyte; for (; { ssize_t n = read(fd, buf, remaining); @@ -156,6 +157,10 @@ * Unlikely, but possible. */ buf = (void *) (((char *)buf) + n); } else if (errno == EINTR) { + ++counter; + if (counter > 10000) { + return -1; + } /* Strange signals like SIGJVM1 are possible at any time. See http://www.dreamsongs.com/WorseIsBetter.html */ } else { With this change, we observe a different problem: java.lang.IllegalStateException: Process not finished. Command line arguments: /usr/lib/jvm/java-1.8.0/bin/java -Xmx16m -classpath .../eclipseForTest/configuration/org.eclipse.osgi/557/0/.cp/lib/launchingsupport.jar org.eclipse.jdt.internal.launching.support.LibraryDetector Output: Standard output: 1.8.0_181|/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre/lib/resources.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre/lib/rt.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre/lib/jsse.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre/lib/jce.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre/lib/charsets.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre/lib/jfr.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre/classes|/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre/lib/ext:/usr/java/packages/lib/ext|/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre/lib/endorsed Standard error: at org.eclipse.jdt.internal.launching.StandardVMType.checkProcessResult(StandardVMType.java:908) at org.eclipse.jdt.internal.launching.StandardVMType.generateLibraryInfo(StandardVMType.java:728) at org.eclipse.jdt.internal.launching.StandardVMType.getLibraryInfo(StandardVMType.java:240) at org.eclipse.jdt.internal.launching.StandardVMType.getDefaultLibraryLocations(StandardVMType.java:457) at org.eclipse.jdt.internal.launching.StandardVMType.canDetectDefaultSystemLibraries(StandardVMType.java:267) at org.eclipse.jdt.internal.launching.StandardVMType.validateInstallLocation(StandardVMType.java:661) at org.eclipse.jdt.internal.launching.VMDefinitionsContainer.addVM(VMDefinitionsContainer.java:139) at com.verigy.itee.ui.internal.JreUpdater$1.run(JreUpdater.java:283) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) We are not sure whether there is a blocking read() call, or whether there is an endless read(), interrupt, read(), interrupt... loop. See: https://github.com/openjdk/jdk11u-dev/blame/a09254f3d9536b9062aa9b797847667092479f18/src/java.base/unix/native/libjava/childproc.c#L144 When looping our best-effort reproducer, we observe the issue in anywhere between 2 hours and 2 days.
Unresolved
Red Hat Integration
Learn more about where this data comes from
Bug Scrub Advisor
Streamline upgrades with automated vendor bug scrubs
BugZero Enterprise
Wish you caught this bug sooner? Get proactive today.