> [JDK-8368159](https://bugs.openjdk.org/browse/JDK-8368159) added > `JvmtiExport::has_frame_pops(JavaThread* thread)` > which calls `JvmtiExport::get_jvmti_thread_state();` which may safepoint. > > Example stack trace: > > V [libjvm.dylib+0x125f888] VMError::report(outputStream*, bool)+0x1b68 > (javaThread.cpp:375) > V [libjvm.dylib+0x1263184] VMError::report_and_die(int, char const*, char > const*, char*, Thread*, unsigned char*, void const*, void const*, char > const*, int, unsigned long)+0x55c > V [libjvm.dylib+0x5de268] print_error_for_unit_test(char const*, char const*, > char*)+0x0 > V [libjvm.dylib+0x9427ec] JavaThread::check_for_valid_safepoint_state()+0x120 > V [libjvm.dylib+0xe7e4e4] Mutex::lock(Thread*)+0x48 > V [libjvm.dylib+0xbbb198] JvmtiThreadState::state_for(JavaThread*, > Handle)+0x200 > V [libjvm.dylib+0xc462ec] > JvmtiEventControllerPrivate::thread_started(JavaThread*)+0x1a0 > V [libjvm.dylib+0xc493a4] JvmtiExport::get_jvmti_thread_state(JavaThread*, > bool)+0xc0 > V [libjvm.dylib+0xc5078c] JvmtiExport::has_frame_pops(JavaThread*)+0x24 > V [libjvm.dylib+0x59c398] freeze_epilog(JavaThread*, ContinuationWrapper&, > freeze_result)+0xf8 > V [libjvm.dylib+0x59b6e8] Config<(oop_kind)0, > CardTableBarrierSet>::freeze(JavaThread*, long*)+0x6f4 > V [libjvm.dylib+0x59a4d4] int freeze<Config<(oop_kind)0, > CardTableBarrierSet>>(JavaThread*, long*)+0x108 > > > I suggest we do double checked on `JvmtiExport::can_post_frame_pop()` and > move the `ContinuationWrapper::SafepointOp` scope.
Axel Boldt-Christmas has updated the pull request incrementally with one additional commit since the last revision: Check !cont.entry()->is_virtual_thread() ------------- Changes: - all: https://git.openjdk.org/jdk/pull/27716/files - new: https://git.openjdk.org/jdk/pull/27716/files/4ec7ce98..d5a2cc0c Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=27716&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=27716&range=01-02 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/27716.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/27716/head:pull/27716 PR: https://git.openjdk.org/jdk/pull/27716
