RFR: 8323100: com/sun/tools/attach/StartManagementAgent.java failed with "WaitForSingleObject failed"

David Holmes dholmes at openjdk.org
Tue Apr 1 06:03:47 UTC 2025


See bug report for gory details.

Short version: in the Windows version of `VirtualMachineImpl::execute`, if an exception occurred after we created the `SocketInputStreamImpl` (which is the test scenario of the failing test), we would close the native `HANDLE` to the pipe twice. But after the first close the `HANDLE` could be reassigned to another object (e.g. the `_ParkHandle` of the `StreamPumper` thread) and the second close would close that `HANDLE`  resulting in the failure of `WaitForSingleObject`. (Other failure modes with different invalid handles have also been seen.)

Fix: shorten the outer try/catch block so that we only directly close the pipe if the `IOException` happens before we create the `SocketStreamImpl` - after which the closing of the stream will close the pipe `HANDLE`.

Testing:
 - ran the com/sun/tools/attach tets group 2500 times without failure
 - tiers 3-5 as a sanity check (Windows only)

Thanks

-------------

Commit messages:
 - 8323100: com/sun/tools/attach/StartManagementAgent.java failed with "WaitForSingleObject failed"

Changes: https://git.openjdk.org/jdk/pull/24346/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=24346&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8323100
  Stats: 26 lines in 1 file changed: 14 ins; 11 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/24346.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/24346/head:pull/24346

PR: https://git.openjdk.org/jdk/pull/24346


More information about the serviceability-dev mailing list