RFR: 8237388: serviceability/dcmd/framework/VMVersionTest.java fails with connection refused error.
Alex Menkov
amenkov at openjdk.java.net
Tue Jun 1 22:28:28 UTC 2021
On Tue, 1 Jun 2021 17:56:10 GMT, Chris Plummer <cjplummer at openjdk.org> wrote:
>> 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
>
> test/hotspot/jtreg/serviceability/dcmd/framework/process/TestJavaProcess.java line 51:
>
>> 49: String cmd = pipe.readln();
>> 50: int exitCode = PASSED;
>> 51: if ("quit".equals(cmd)) {
>
> I don't see how this is an improvement.
Working on the fix I got null cmd here.
I think "Invalid command received null" failure is clearer than NPE
-------------
PR: https://git.openjdk.java.net/jdk/pull/4235
More information about the serviceability-dev
mailing list