RFR: 8367725: Incorrect reading of oop in SuspendResumeManager::suspend while thread is blocked [v9]
Serguei Spitsyn
sspitsyn at openjdk.org
Wed Sep 17 19:16:30 UTC 2025
On Wed, 17 Sep 2025 14:56:47 GMT, Leonid Mesnik <lmesnik at openjdk.org> wrote:
>> The
>> `SuspendResumeManager::suspend(bool register_vthread_SR)`
>> has an issue while suspend current virtual thread. The suspend tries to access vthread oop field to read vthread id after thread is blocked.
>>
>> Seems, that this case is not used by our debugger and was not covered by tests. I found it using jtreg test thread virtual factory plugin. I updated existing test to reproduce this problem. The easiest way is to suspend current virtual thread using plain SuspendThread.
>>
>> The fix added some "asymmetry" in suspend/resume mechanism which is required because self-suspend doesn't have resume counterpart.
>
> Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision:
>
> updated after David's feedback
src/hotspot/share/runtime/suspendResumeManager.cpp line 104:
> 102: ThreadBlockInVM tbivm(self);
> 103: MutexLocker ml(_state_lock, Mutex::_no_safepoint_check_flag);
> 104: set_suspended_with_id(id, register_vthread_SR);
Nit: I'd prefer to have the same function name overloaded with a different parameter type.
There can be different opinions here, of course.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/27317#discussion_r2356512510
More information about the serviceability-dev
mailing list