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, serguei.spit...@oracle.com 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.


Leonid

On Jul 28, 2020, at 2:06 PM, serguei.spit...@oracle.com 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, serguei.spit...@oracle.com 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, serguei.spit...@oracle.com 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.



Leonid











Reply via email to