On Mon, 17 Jun 2024 12:34:25 GMT, David Holmes <dhol...@openjdk.org> wrote:

>> Follow up to https://github.com/openjdk/jdk/pull/19482 that was causing 
>> issues when the PrintMountedVirtualTest.java was
>> running with `JTREG_TEST_THREAD_FACTORY=Virtual` in the loom repo. 
>> 
>> - Fixes issues where the test observes the thread during transitions.
>> - Fixes a potential issue in the test where CountDownLatch.countDown unparks 
>> the main (virtual) thread and the main thread observes the dummy thread is 
>> transition .
>
> src/hotspot/share/runtime/threads.cpp line 1335:
> 
>> 1333:             const oop vt = p->vthread();
>> 1334:             if (vt != thread_oop) {
>> 1335:               assert(vt != nullptr, "vthread should not be null when 
>> vthread is mounted");
> 
> I think the assert still belongs in the original position doesn't it? Or 
> could the problem we hit here cause a transient null to appear as well?

I think that, even if based on 
[this](https://github.com/openjdk/jdk/pull/19482#issuecomment-2166116062) 
comment from @AlanBateman's in some cases the virtual thread can be mounted but 
`_vthread` can refer to the carrier thread, what you're saying is correct and 
in both cases `_vthread` should still not be a null pointer:

- Either it's equal to `thread_oop` and we've already checked that it's not 
`nullptr`.
- Or it's different to `thread_oop` and it refers to an actual virtual thread 
that should not be null.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/19744#discussion_r1642794256

Reply via email to