RFR: 8318839: Update test thread factory to catch all exceptions
Leonid Mesnik
lmesnik at openjdk.org
Thu Oct 26 22:37:33 UTC 2023
On Thu, 26 Oct 2023 06:09:34 GMT, Jaikiran Pai <jpai at openjdk.org> wrote:
>> The jtreg starts the main thread in a separate ThreadGroup and checks unhandled exceptions for this group. However, it doesn't catch all unhandled exceptions. There is a jtreg issue for this https://bugs.openjdk.org/browse/CODETOOLS-7903526.
>> Catching such issues for virtual threads is important because they are not included in any groups. So this fix implements the handler for the test thread factory.
>>
>> A few tests start failing.
>>
>> The test
>> serviceability/jvmti/HeapMonitor/MyPackage/HeapMonitorVMEventsTest.java
>> has testcases for platform and virtual threads. So, there is there's no need to run it with the thread factory.
>>
>> The test
>> java/lang/Thread/virtual/ThreadAPI.java
>> tests UncaughtExceptionHandler and virtual threads. No need to run it with a thread factory.
>>
>> Test
>> test/jdk/java/util/concurrent/tck/ThreadTest.java is updated to not check the default empty handler.
>>
>> Probably, we need some common approach about dealing with the UncaughtExceptionHandler in jtreg.
>
> test/jtreg_test_thread_factory/src/share/classes/Virtual.java line 37:
>
>> 35: // The virtual threads don't belong to any group and need global handler.
>> 36: Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
>> 37: if (e instanceof ThreadDeath) {
>
> `ThreadDeath` has been deprecated for removal since Java 20, so this should no longer be needed.
It is still used in tests and we should ignore it like jtreg doing.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/16369#discussion_r1373886743
More information about the core-libs-dev
mailing list