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