On Thu, 21 Mar 2024 07:11:33 GMT, Serguei Spitsyn <sspit...@openjdk.org> wrote:

> This PR fixes a synchronization issue in the test:
>   `test/hotspot/jtreg/serviceability/jvmti/vthread/PopFrameTest`
>   
> The method `notifyAtBreakpoint()` can notify the `TestTask` thread when it 
> has not reached an expected breakpoint yet.
> The fix is to add a call to the method `ensureAtBreakpoint()` one more time 
> in the `B2` sub-test. It is needed after the top-most frame was popped with 
> the JVMTI `PopFrame`, and the target thread needs to reach the breakpoint 
> again after its execution was resumed.
> 
> The time is very intermittent. At least, I was not able to reproduce the 
> timeout failure in thousands of mach5 runs with the `-Xcomp` option.
> 
> Testing:
>  - Run the test 
> `test/hotspot/jtreg/serviceability/jvmti/vthread/PopFrameTest` thousands 
> times in mach5

Changes requested by lmesnik (Reviewer).

test/hotspot/jtreg/serviceability/jvmti/vthread/PopFrameTest/PopFrameTest.java 
line 148:

> 146:             log("Main #B.2: got expected JVMTI_ERROR_NONE");
> 147:             resumeThread(testTaskThread);
> 148:             ensureAtBreakpoint();

Not sure if it should work. 
Thevariable  `bp_sync_reached` is reset in notifyAtBreakpoint(). 
I see the previous call to  ensureAtBreakpoint(); in line 131. So it means that 
bp_sync_reached is true in this line and never rest after it between 131 and 
148.
So I expect that this check in 148 is just return always without waiting 
anything. So it is not clear for me what is expected here.

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

PR Review: https://git.openjdk.org/jdk/pull/18419#pullrequestreview-1952525795
PR Review Comment: https://git.openjdk.org/jdk/pull/18419#discussion_r1534110512

Reply via email to