RFR: 8318573: The nsk.share.jpda.SocketConnection should fail if socket was closed.

Chris Plummer cjplummer at openjdk.org
Fri Oct 20 04:52:36 UTC 2023


On Fri, 20 Oct 2023 03:20:44 GMT, Leonid Mesnik <lmesnik at openjdk.org> wrote:

> There are several failure with reason
> "Cannot invoke "String.equals(Object)" because "<local1>" is null"
> which really caused by reading the command from debugee via socket.
> Like:
> 
>         String command = pipe.readln();
> 
>         if (!command.equals(AbstractDebuggeeTest.COMMAND_READY)) {
>             setSuccess(false);
>             log.complain("TEST BUG: unknown debuggee's command: " + command);
> 
>             return false;
>         }
> 
> The command is null when socket fails with EOFException which usually means that debugee has been crashed/exited or killed by timeout handler.
> 
> However, it is not clear from the error log. So
> https://bugs.openjdk.org/browse/JDK-8310940 has different problems with the same NPE symptom.
> 
> The fix update error handling to improve logging.
> 
> So output loos like:
> 
> _open_test_hotspot_jtreg_vmTestbase_nsk_jdi_VirtualMachine_dispose_dispose002_TestDescription_java/tmp' \
>         -Dtest.compiler.opts= \
>         -Dtest.java.opts= \
>         -Dtest.jdk=/home/lmesnik/ws/jdk-vmTestbase/build/linux-x64/images/jdk \
>         -Dcompile.jdk=/home/lmesnik/ws/jdk-vmTestbase/build/linux-x64/images/jdk \
>         -Dtest.timeout.factor=4.0 \
>         -Dtest.nativepath=/home/lmesnik/ws/jdk-vmTestbase/build/linux-x64/images/test/hotspot/jtreg/native \
>         -Dtest.root=/home/lmesnik/ws/jdk-vmTestbase/open/test/hotspot/jtreg \
>         -Dtest.name=vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose002/TestDescription.java \
>         -Dtest.file=/home/lmesnik/ws/jdk-vmTestbase/open/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose002/TestDescription.java \
>         -Dtest.src=/home/lmesnik/ws/jdk-vmTestbase/open/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose002 \
>         -Dtest.src.path=/home/lmesnik/ws/jdk-vmTestbase/open/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose002:/home/lmesnik/ws/jdk-vmTestbase/open/test/hotspot/jtreg/vmTestbase:/home/lmesnik/ws/jdk-vmTestbase/open/test/lib \
>         -Dtest.classes=/home/lmesnik/ws/jdk-vmTestbase/build/linux-x64/test-support/jtreg_open_test_hotspot_jtreg_vmTestbase_nsk_jdi_VirtualMachine_dispose_dispose002_TestDescription_java/classes/0/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose002/TestDescription.d \
>         -Dtest.class.path=/home/lmesnik/ws/jdk-vmTestbase/build/linux-x64/test-support/jtreg_open_test_hotspot_jtreg_vmTestbase_nsk_jdi_VirtualMachine_dispose_dispose002_TestDescription_java/classes/0/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose002/Te...

test/hotspot/jtreg/vmTestbase/nsk/share/jpda/SocketConnection.java line 520:

> 518:             return doReadObject();
> 519:         } catch (EOFException e) {
> 520:             e.printStackTrace(logger.getOutStream());

I don't see this in the .jtr log you provided. Where does it appear?

test/hotspot/jtreg/vmTestbase/nsk/share/jpda/SocketConnection.java line 522:

> 520:             e.printStackTrace(logger.getOutStream());
> 521:             throw new Failure("Caught EOFException while reading an object from " + name + " connection."
> 522:                     + " Check if debugee process is exited (crashed, killed) before responded.\n\t");

Suggestion:

                    + " Check if debuggee process exited prematurely (crashed or killed).\n\t");

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

PR Review Comment: https://git.openjdk.org/jdk/pull/16280#discussion_r1366460412
PR Review Comment: https://git.openjdk.org/jdk/pull/16280#discussion_r1366455309


More information about the serviceability-dev mailing list