On Mon, 17 Jun 2024 09:13:57 GMT, Inigo Mediavilla Saiz <d...@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 1334: > 1332: if (p->is_vthread_mounted()) { > 1333: const oop vt = p->vthread(); > 1334: if (vt != thread_oop) { We need a comment explaining why we have to check for this as without knowing the implementation quirks it seems non-sensical for a thread to have mounted itself! 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? test/hotspot/jtreg/serviceability/dcmd/thread/PrintMountedVirtualThread.java line 43: > 41: public void run(CommandExecutor executor) throws InterruptedException > { > 42: var shouldFinish = new AtomicBoolean(false); > 43: var started = new AtomicBoolean(); Not sure how this change make things better? Why would we want to sleep and poll rather than park until signalled? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/19744#discussion_r1642745542 PR Review Comment: https://git.openjdk.org/jdk/pull/19744#discussion_r1642744456 PR Review Comment: https://git.openjdk.org/jdk/pull/19744#discussion_r1642747708