RFR: 8376405: Virtual thread crash: assert(!_current->is_suspended()) failed: must be

David Holmes dholmes at openjdk.org
Fri Jan 30 04:39:23 UTC 2026


On Wed, 28 Jan 2026 21:56:00 GMT, Patricio Chilano Mateo <pchilanomate at openjdk.org> wrote:

> Please review this small fix. In 8375362 we skipped the suspend check in `MountUnmountDisabler::start_transition` for transition disablers to avoid deadlocks, but that means we also need to update the assert in `~UnmountBeginMark()`. I was able to reproduce the crash locally using ThreadStateTest2.java and confirmed it is now fixed.
> 
> Thanks,
> Patricio

Seems reasonable. One suggestion that may not be worthwhile so feel free to ignore.

Thanks

src/hotspot/share/runtime/continuation.cpp line 92:

> 90:     assert(!_current->is_suspended() ||
> 91:            (_current->is_vthread_transition_disabler() && _result != freeze_ok), "must be");
> 92: #endif

Suggestion:

    assert(!_current->is_suspended() 
           JVMTI_ONLY(|| (_current->is_vthread_transition_disabler() && _result != freeze_ok))
           , "must be");

Is this a worthwhile distinction? I guess these days the only way to suspend is through JVMTI. ??

-------------

Marked as reviewed by dholmes (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/29473#pullrequestreview-3726282698
PR Review Comment: https://git.openjdk.org/jdk/pull/29473#discussion_r2744568340


More information about the serviceability-dev mailing list