On Wed, 10 Jan 2024 20:25:21 GMT, Alan Bateman <al...@openjdk.org> wrote:

> This test was recently dialled down via JDK-8323002 but it still makes slow 
> progress on some test machines, esp. macox-x64-debug builds. The issue is 
> that the sampling of the target thread is skewed towards the unmounted case 
> so the target thread is disabled from being scheduled and doesn't make 
> progress. The test is re-worked to use a barrier so that the main thread and 
> target virtual thread run in lock step. This allows the virtual thread to 
> make progress at each iteration and also increases the chances of sampling 
> the stack trace at around the time that the target thread transitions from 
> being unmounted (due to the Thread.yield) and parking while pinned.

test/jdk/java/lang/Thread/virtual/stress/GetStackTraceALotWhenPinned.java line 
65:

> 63:             for (int i = 0; i < iterations; i++) {
> 64:                 // wait for main thread to arrive
> 65:                 barrier.await();

Given the goal of this test, which is "Stress test Thread.getStackTrace on a 
virtual thread that is pinned", shouldn't this `barrier.await()` be a few lines 
below, inside the `synchronized (GetStackTraceALotWhenPinned.class)` block, 
just before it parks itself? That way, the main thread when it too reaches the 
barrier and when it next issues a getStackTrace() call, the chances of the 
other thread being pinned would be high(er)?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/17353#discussion_r1448894710

Reply via email to