On Tue, 26 Apr 2022 19:25:44 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.
>
> Chris Plummer has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Add comment

Thanks for the reviews Alex and Serguei!

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

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

Reply via email to