nsk test framework for testing jdi/jdwp assumes that the test launch debuggee first and then creates IOPipe to communicate with debuggee (debugger listens, debugee connects to the IOPipe socket). This makes possible failure when debuggee tries to connect before debugger starts listening. The fix changes logic of the tests to start listening on IOPipe socket before launch debuggee. Other tests which use IOPipe/SocketIOPipe and have the same issue (there are a lot of them) will be fixes as separate issues.
Couple details about the fix: - debugee.getPipeServerSocket() just calls binder.getPipeServerSocket(), returned ServerSocket can be changed only by DebugeeBinder.prepareForPipeConnection which is called by some tests; - connectingProcess logic is broken. The only place it's used is BasicSocketConnection.checkConnectingProcess, which is called from SocketConnection.continueAttach. But continueAttach is called from debuggee code (listening == false) while connectingProcess is set only from debugger code (listening == true). So it didn't work and I dropped it. Testing: all tests which use IOPipe/SocketIOPipe classes: - test/hotspot/jtreg/serviceability/dcmd/framework - test/hotspot/jtreg/vmTestbase/nsk/jdi - test/hotspot/jtreg/vmTestbase/nsk/jdwp ------------- Commit messages: - FIx for serviceability/dcmd/framework tests Changes: https://git.openjdk.java.net/jdk/pull/4235/files Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=4235&range=00 Issue: https://bugs.openjdk.java.net/browse/JDK-8237388 Stats: 143 lines in 5 files changed: 74 ins; 51 del; 18 mod Patch: https://git.openjdk.java.net/jdk/pull/4235.diff Fetch: git fetch https://git.openjdk.java.net/jdk pull/4235/head:pull/4235 PR: https://git.openjdk.java.net/jdk/pull/4235
