RFR: JDK-8068225: nsk/jdi/EventQueue/remove_l/remove_l005 intermittently times out

Chris Plummer chris.plummer at oracle.com
Wed Feb 6 17:15:08 UTC 2019


What happens if endDebugee() is called when the caller is not expecting 
a clean exit of the debugeee? Won't waitFor() wait forever in that case? 
I think by having the vm.dispose() first, you avoid that issue.

Chris

On 2/6/19 8:04 AM, Gary Adams wrote:
> Testing an alternate fix that will wait for the debugee process to 
> terminate after processing the "quit"
> command before doing the vm tear down.
>
>
> diff --git a/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/Debugee.java 
> b/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/Debugee.java
> --- a/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/Debugee.java
> +++ b/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/Debugee.java
> @@ -1,5 +1,5 @@
>  /*
> - * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights 
> reserved.
> + * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights 
> reserved.
>   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
>   *
>   * This code is free software; you can redistribute it and/or modify it
> @@ -557,6 +557,7 @@
>       * exit status code.
>       */
>      public int endDebugee() {
> +        int status = waitFor();
>          if (vm != null) {
>              try {
>                  vm.dispose();
> @@ -564,7 +565,7 @@
>              }
>              vm = null;
>          }
> -        return waitFor();
> +        return status;
>      }
>
>
> On 2/6/19, 8:14 AM, Gary Adams wrote:
>> Just a quick update on the failure on shutdown ...
>> I've come across a couple of other tests with a similar failure mode.
>>
>> I'm attempting to get some additional diagnostic information from these
>> tests with "-jdi.trace=all", but the diagnostic output may be 
>> interfering
>> with the timing.
>>
>> My current investigation is around a possible race condition
>> in the Debgugee.quit() processing.
>>    - the "quit" string is sent to the deuggee via the IOpipe
>>    - the vm.dispose() is handled from the JDWP communication
>>
>> If the context switching is not quick enough, the debugee
>> may not have read and processed the "quit" command before
>> tear down is handled.
>>
>> From earlier comments in the bug report the debuggee was observed
>> still at the breakpoint, so the resume and the disabling of the 
>> breakpoint
>> had not been processed, yet.
>>
>> It might be worth having an "ack" returned when the "quit" is
>> processed in the debugee.
>>
>> ...
>>
>> On 2/1/19, 2:15 PM, serguei.spitsyn at oracle.com wrote:
>>> Hi Gary,
>>>
>>> The debugee.quit() is to complete the session.
>>> It makes this call: sendSignal(SGNL_QUIT);
>>>
>>> A call to the debugee.quit() is at the end of execTest() method:
>>>
>>>             display("");
>>>         }
>>>
>>>         display("");
>>>         display("=============");
>>>         display("TEST FINISHES\n");
>>>
>>>         brkpReq.disable();
>>>         debugee.resume();
>>>         debugee.quit();
>>>     }
>>>
>>> Thanks,
>>> Serguei
>>>
>>>
>>> On 2/1/19 10:00, Gary Adams wrote:
>>>> When the remove_l005 runs to completion, it never signals the debuggee
>>>> that all iterations have completed.
>>>>
>>>>   Issue: https://bugs.openjdk.java.net/browse/JDK-8068225
>>>>
>>>> diff --git a/test/hotspot/jtreg/ProblemList.txt 
>>>> b/test/hotspot/jtreg/ProblemList.txt
>>>> --- a/test/hotspot/jtreg/ProblemList.txt
>>>> +++ b/test/hotspot/jtreg/ProblemList.txt
>>>> @@ -163,7 +163,6 @@
>>>>  vmTestbase/nsk/jdi/EventRequest/setEnabled/setenabled003/TestDescription.java 
>>>> 8066993 generic-all
>>>>  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses021/TestDescription.java 
>>>> 8065773 generic-all
>>>>  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses023/TestDescription.java 
>>>> 8065773 generic-all
>>>> -vmTestbase/nsk/jdi/EventQueue/remove_l/remove_l005/TestDescription.java 
>>>> 8068225 generic-all
>>>>
>>>>  vmTestbase/metaspace/gc/firstGC_10m/TestDescription.java 8208250 
>>>> generic-all
>>>>  vmTestbase/metaspace/gc/firstGC_50m/TestDescription.java 8208250 
>>>> generic-all
>>>>
>>>>
>>>> diff --git 
>>>> a/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove_l/remove_l005.java 
>>>> b/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove_l/remove_l005.java 
>>>>
>>>> --- 
>>>> a/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove_l/remove_l005.java
>>>> +++ 
>>>> b/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove_l/remove_l005.java
>>>> @@ -1,5 +1,5 @@
>>>>  /*
>>>> - * Copyright (c) 2002, 2018, Oracle and/or its affiliates. All 
>>>> rights reserved.
>>>> + * Copyright (c) 2002, 2019, Oracle and/or its affiliates. All 
>>>> rights reserved.
>>>>   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
>>>>   *
>>>>   * This code is free software; you can redistribute it and/or 
>>>> modify it
>>>> @@ -134,6 +134,7 @@
>>>>              }
>>>>              display("");
>>>>          }
>>>> +        debugee.sendSignal(SGNL_QUIT);
>>>>
>>>>          display("");
>>>>          display("=============");
>>>
>>
>




More information about the serviceability-dev mailing list