On Thu, 11 Dec 2025 02:36:12 GMT, Serguei Spitsyn <[email protected]> wrote:

>> This fixes the test which is unreliable and fails intermittently from time 
>> to time.
>> The test was failing in the method `checkReentrantLock()` when comparing the 
>> expected state with result from `vt.getState()`. The issue is that the call 
>> to `ThreadListStackTracesTest.reentrantLock.lock()` in a 
>> `ReentrantLockTestTask` can reach waiting state on some class loading but 
>> not on the ReentrantLock. Please see the first comment for test sources 
>> details.
>> The fix is to add a big enough sleep before call to the checkStates().
>> 
>> Testing:
>>  - submitted about thousands of mach5 runs of the 
>> `ThreadListStackTracesTest` test runs before and after the fix
>>  - TBD: submit mach5 tiers 1-3 to be completely safe
>
> Serguei Spitsyn has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   review: use ReentrantLock.hasQueuedThread()

Changes requested by lmesnik (Reviewer).

test/hotspot/jtreg/serviceability/jvmti/vthread/ThreadListStackTracesTest/ThreadListStackTracesTest.java
 line 49:

> 47:     public void ensureReadyAndWaiting(Thread vt, Thread.State expState, 
> ReentrantLock rlock) {
> 48:         // wait while the thread is not ready or thread state is 
> unexpected
> 49:         while (!threadReady || (vt.getState() != expState) || 
> !rlock.hasQueuedThreads()) {

Small nit. 
The comment is incomplete. And code duplication is unneded. 

You can make  


task.ensureReady(vt, expState);
// Ensure that thread waiting on the rlock
while (!rlock.hasQueuedThreads()) {   
  sleep(1);
}

to reduce code duplication. 

Really,

task.ensureReady(vt, expState);

Shouldn't be needed. We can't have lock.hasQueuedThreads() == true until
we update `threadReady` and hit  `vt.getState()`. 
But I think it is fine to check all conditions.

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

PR Review: https://git.openjdk.org/jdk/pull/28734#pullrequestreview-3565479172
PR Review Comment: https://git.openjdk.org/jdk/pull/28734#discussion_r2609008674

Reply via email to