LGTM

--alex

On 07/28/2020 23:26, Leonid Mesnik wrote:
ok, let change it to following

diff -r f489d5d13a51 test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/setEnabled/setenabled002.java --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/setEnabled/setenabled002.java  Thu Jul 23 16:36:44 2020 -0400 +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/setEnabled/setenabled002.java  Tue Jul 28 23:17:22 2020 -0700
@@ -368,6 +368,7 @@
                       throw new JDITestRuntimeException("** default case 2 **");
              }

+            vm.suspend();
              if (eventRequest1 instanceof StepRequest) {
                  try {
                     log2("......eventRequest1.setEnabled(true);  IllegalThreadStateException is expected");
@@ -405,6 +406,7 @@
              } catch ( InvalidRequestStateException e ) {
                      log2("       InvalidRequestStateException");
              }
+            vm.resume();

              //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          }

webrev: http://cr.openjdk.java.net/~lmesnik/8244537/webrev.04/
Leonid

On Jul 28, 2020, at 11:06 PM, [email protected] <mailto:[email protected]> wrote:

http://cr.openjdk.java.net/~lmesnik/8244537/webrev.03/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/setEnabled/setenabled002.java.frames.html

I'd suggest to simplify it:

 - insert suspend before the line:
  371             if (eventRequest1 instanceof StepRequest) {
 - keep resume at the line:
411 vm.resume();
 - these lines are not needed:
389 vm.resume(); 394 vm.suspend();

Thanks,
Serguei


On 7/28/20 21:15, Leonid Mesnik wrote:
Included in webrev.03
http://cr.openjdk.java.net/~lmesnik/8244537/webrev.03

Leonid

On Jul 28, 2020, at 6:44 PM, [email protected] <mailto:[email protected]> wrote:

http://cr.openjdk.java.net/~lmesnik/8244537/webrev.01/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/setEnabled/setenabled002.java.frames.html
  371             if (eventRequest1 instanceof StepRequest) {
  372                 try {
  373                     log2("......eventRequest1.setEnabled(true);  
IllegalThreadStateException is expected");
  374                     eventRequest1.setEnabled(true);
  375                     testExitCode = FAILED;
  376                     log3("ERROR:  NO  IllegalThreadStateException for 
StepRequest");
  377                 } catch ( IllegalThreadStateException e ) {
  378                     log2("       IllegalThreadStateException");
  379                 }
  380                 try {
  381                     log2("......eventRequest1.setEnabled(false);  
IllegalThreadStateException is not expected");
  382                     eventRequest1.setEnabled(false);
  383                     log2("       no  IllegalThreadStateException for 
StepRequest");
  384                 } catch ( IllegalThreadStateException e ) {
  385                     testExitCode = FAILED;
  386                     log3("ERROR:    IllegalThreadStateException");
  387                 }
  388             }
Above is one more case where suspend/resume is needed, I guess.

Thanks,
Serguei


On 7/28/20 17:45, [email protected] wrote:
http://cr.openjdk.java.net/~lmesnik/8244537/webrev.01/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/setEnabled/setenabled003.java.frames.html
  288               case 0:
  289                      thread1 = (ThreadReference)
  290                                
debuggeeClass.getValue(debuggeeClass.fieldByName(threadName1));
  291
  292                      log2("......setting up StepRequest");
  293                      eventRequest1 = eventRManager.createStepRequest
  294                                      (thread1, StepRequest.STEP_MIN, 
StepRequest.STEP_INTO);
  295
*296 vm.suspend();* ...
  360               default:
  361                       throw new JDITestRuntimeException("** default case 2 
**");
  362             }
363 vm.resume();

Sorry, the fix is not going to work correctly.
The first vm.suspend() has to be before the switch statement to work for all 3 cases.

Thanks,
Serguei


On 7/28/20 16:49, Leonid Mesnik wrote:
I've update to suspend/resume in all cases.

new webrev: http://cr.openjdk.java.net/~lmesnik/8244537/webrev.01/

Leonid

On Jul 28, 2020, at 2:06 PM, [email protected] <mailto:[email protected]> wrote:

I prefer to suspend/resume in all cases, so we avoid all these unexpected failures.

Thanks,
Serguei


On 7/28/20 13:59, Leonid Mesnik wrote:
It should be failure anyway if we managed to enable events, so we don't expect to really enable anything in these cases. However I agree that adding suspend/resume shouldn't make it worse, just possible cleaner log (in very rare cases also). If you feel it is need I will just add suspension for all cases.

Leonid

On Jul 28, 2020, at 1:54 PM, [email protected] <mailto:[email protected]> wrote:

Does it mean, you did not fix cases 0 and 2 because the related failures have never been observed?

Thanks,
Serguei


On 7/28/20 13:51, Leonid Mesnik wrote:
Test should fail in cases 0 and 2 with IllegalThreadStateException if we can enable events. Such failures should be easily identified by reading logs.

Leonid


On Jul 27, 2020, at 10:28 PM, [email protected] <mailto:[email protected]> wrote:

Hi Leonid,

The fix looks good in general.
You missed to explain that the suspend/resume are added to avoid actual generation of event that cause this issue.
The reason is that these events are not actually required.


http://cr.openjdk.java.net/~lmesnik/8244537/webrev.00/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/setEnabled/setenabled003.java.frames.html
  316               case 1:
317 vm.suspend(); ... 336 vm.resume();

Q: Why is only in case 1 suspend/resume used?
   What about cases 0 and 2?

Thanks,
Serguei


On 7/27/20 18:08, Leonid Mesnik wrote:
Hi

Could you please review following fix which suspends debugger VM while enabling/disabling events.

All changed tests fail intermittently getting unexpected events instead of breakpoint used for communication between debugger/debuggee VM. The tests request different events and verify request's properties but don't process/verify events themselves. Test doesn't aware if events are generated or not. The vm suspension doesn't affect JDWP native agent and it still should get and verify JDWP commands.

webrev: http://cr.openjdk.java.net/~lmesnik/8244537/webrev.00/
bug: https://bugs.openjdk.java.net/browse/JDK-8244537


Leonid











Reply via email to