On Thu, 21 Apr 2022 20:14:49 GMT, Chris Plummer <cjplum...@openjdk.org> wrote:

> The test is testing that EventSets for ThreadStartEvents have the proper 
> suspendPolicy. When there is more than one ThreadStartRequest and a thread is 
> started, each ThreadStartRequest results in a ThreadStartEvent being created, 
> and they all are grouped into the same EventSet. The suspendPolicy on this 
> EventSet should come from the ThreadStartRequest suspend policy that suspends 
> the most threads. The test is testing for all possible combinations of the 3 
> suspend polices (NONE, THREAD, and ALL). For example, if NONE and ALL are 
> used, the resulting suspend policy should be ALL.
> 
> The following 3 issues are being addressed. These all turned up in loom as a 
> result of carrier threads being created while the test was running, but 
> potentially could happen with other threads that the jvm starts up.
> 
> 1. When the test calls getEventSet() for the next ThreadStartEvent, it 
> sometimes gets one that is for a carrier thread. In general this is not a 
> problem because the test will accept any thread, but sometimes this carrier 
> thread is generated between setting up two different `ThreadStartRequests`, 
> and as a result has the wrong suspend policy, so the test fails with:
> 
>  nsk.share.TestFailure: ##> debugger: ERROR: eventSet.suspendPolicy() != 
> policyExpected 
> 
> This is fixed by using getEventSetForThreadStartDeath(<threadName>) instead 
> of getEventSet(), so carrier threads (and any other spuriously created 
> thread) can be ignored.
> 
> 2. The ThreadStartRequests used a filterCount of 1, which meant they would 
> only produce one ThreadStartEvent. This meant that after fix (1) was in 
> place, I started seeing issues with not even seeing the expected 
> ThreadStartEvent, because the 1 count was used up by the carrier thread 
> starting. I don't see any reason for this filterCount (other than the issue 
> described in 3), so I just removed it.
> 
> 3. After (1) and (2) were in place, I then noticed issues with sometimes 
> getting a ThreadStartEvent when the BreakpointEvent was expected. This is 
> because sometime a carrier thread was being created after receiving the 
> expected ThreadStartEvent, but before the ThreadStartRequests could be 
> disabled (this is the result of getting rid of the counterFiler). This was 
> fixed by having breakpointForCommunication() filter out unexpected 
> ThreadStartEvents by calling EventFilters.filtered(). I also had to add 
> carrier threads that EventFilters.filtered() filters out.

Ping! Still need two reviews for this PR. Thanks!

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

PR: https://git.openjdk.java.net/jdk/pull/8350

Reply via email to