On Thu, 31 Aug 2023 17:31:34 GMT, Patricio Chilano Mateo <pchilanom...@openjdk.org> wrote:
>> src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp line 415: >> >>> 413: } else { >>> 414: assert(NATIVE_SAMPLE == type, "invariant"); >>> 415: if (thread_state_in_native(thread) && >>> !is_vthread_in_transition(thread)) { >> >> Is this possible? I assume the thread is in _thread_in_Java during the >> transition? > > There are some native methods that we execute during mount/unmount > transitions. From what I see they all seem to be defined as > `@IntrinsicCandidate`, but if for some reason we don't execute the intrinsic > version (interp only mode for instance) then we would call a normal native > method. Just to ad that Patricio suggested today to run the stress tests with -Xint and that does lead to triggered the assert quickly when the thread is sampled in native. There are several native methods that are @IntrinsicCandidate that are invoked after the thread identity has changed to the virtual thread and before the continuation is mounted. Probably less likely on the unmount as the only native method is the one that reverts the thread identity. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/15492#discussion_r1312128046