On Thu, 26 Oct 2023 06:09:34 GMT, Jaikiran Pai <j...@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

Reply via email to