RFR: 8314225: SIGSEGV in JavaThread::is_lock_owned [v3]

Kevin Walls kevinw at openjdk.org
Wed May 1 13:12:52 UTC 2024


On Wed, 1 May 2024 12:08:31 GMT, Coleen Phillimore <coleenp at openjdk.org> wrote:

>> Kevin Walls has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Remove JavaThread's is_lock_owned
>
> src/hotspot/share/runtime/vframeArray.cpp line 55:
> 
>> 53:      MonitorChunk* chunk = _monitors;
>> 54:      _monitors = nullptr;
>> 55:      delete chunk;
> 
> Is there just one monitor now on the vframeArrayElement?  All of these functions imply there are more than one but if I'm reading this right only one gets deleted.

Thanks Coleen -

There is one MonitorChunk, created with new MonitorChunk(list->length());  where list is vf->monitors()
and it creates its _monitors member as a NEW_C_HEAP_ARRAY sized by number of monitors.

~MonitorChunk() calls FreeHeap(monitors());  so all the info for possibly multiple monitors is freed in one call as before.


JavaThread had possibly a linked list of MonitorChunks, that is being removed  (if we ever used that list, wouldn't that imply multiple deopts in the same JavaThread at the same time??)

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

PR Review Comment: https://git.openjdk.org/jdk/pull/18940#discussion_r1586275883


More information about the hotspot-dev mailing list