RFR: 8308609: java/lang/ScopedValue/StressStackOverflow.java fails with "-XX:-VMContinuations" [v2]

Alan Bateman alanb at openjdk.org
Mon Jun 12 14:30:59 UTC 2023


On Mon, 12 Jun 2023 14:09:59 GMT, Andrew Haley <aph at openjdk.org> wrote:

>> Move `runWith()` from `VirtualThread` to `BaseVirtualThread`.
>> 
>> `BoundVirtualThread` does not use `runWith()` to run its task, so when a VM error occurs it can not recover scoped values.
>> 
>> Moving `runWith()` into the common subclass of both `VirtualThread` and `BoundVirtualThread` fixes the problem.
>
> Andrew Haley has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - Whitespace
>  - Use RunWith in base Thread class & enable testing without VM Continuations.

src/java.base/share/classes/java/lang/ThreadBuilders.java line 436:

> 434:             if (Thread.currentThread() == this && !runInvoked) {
> 435:                 runInvoked = true;
> 436:                 Object bindings = scopedValueBindings();

Would it be possible to make this Thread.scopedValueBindings() to make it more obvious that it's a static method. Maybe the same in VirtualThread.run.

src/java.base/share/classes/java/lang/VirtualThread.java line 27:

> 25: package java.lang;
> 26: 
> 27: import java.lang.ref.Reference;

I think the import of ForceInline can be removed too.

test/jdk/ProblemList-Virtual.txt line 48:

> 46: 
> 47: java/lang/ScopedValue/StressStackOverflow.java 8309646 generic-all
> 48: 

That's the issue for the JTREG_TEST_THREAD_FACTORY=Virtual runs. I think we need to leave it excluded until that issue is diagnosed/fixed. 

However, in jdk/test/ProblemList.txt, it is excluded on linux-s390x as that platform doesn't seem to have, or use, VM continuations and so is using the fallback/alternative implementation. I think this entry can be removed now.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/14399#discussion_r1226766408
PR Review Comment: https://git.openjdk.org/jdk/pull/14399#discussion_r1226767359
PR Review Comment: https://git.openjdk.org/jdk/pull/14399#discussion_r1226764146


More information about the core-libs-dev mailing list