RFR: 8344935: [ubsan]: javaThread.hpp:1241:52: runtime error: load of value 9831830, which is not a valid value for type 'freeze_result' [v4]

Patricio Chilano Mateo pchilanomate at openjdk.org
Mon Dec 2 17:10:40 UTC 2024


On Wed, 27 Nov 2024 08:33:16 GMT, Matthias Baesken <mbaesken at openjdk.org> wrote:

>> Seems we miss initialization of  _last_freeze_fail_result in the  JavaThread constructor, this should be added.
>> Causes otherwise ubsan issues in the test  java/lang/Thread/virtual/MonitorEnterExit.java#Xcomp-TieredStopAtLevel1-LM_LEGACY 
>> 
>> /priv/jenkins/client-home/workspace/openjdk-jdk-weekly-linux_x86_64-opt/jdk/src/hotspot/share/runtime/javaThread.hpp:1241:52: runtime error: load of value 9831830, which is not a valid value for type 'freeze_result'
>>     #0 0x7f5edef378eb in JavaThread::last_freeze_fail_result() src/hotspot/share/runtime/javaThread.hpp:1241
>>     #1 0x7f5edef378eb in JVM_VirtualThreadPinnedEvent src/hotspot/share/prims/jvm.cpp:3805
>
> Matthias Baesken has updated the pull request incrementally with one additional commit since the last revision:
> 
>   add parenthesis, rename variables

Looks good, thanks for fixing it.

src/hotspot/share/runtime/continuationFreezeThaw.cpp line 1686:

> 1684: static freeze_result preempt_epilog(JavaThread* current, ContinuationWrapper& cont, freeze_result res, frame& old_last_frame) {
> 1685:   if (UNLIKELY(res != freeze_ok)) {
> 1686:     JFR_ONLY(current->set_last_freeze_fail_result(res);)

Note that we don’t need to save the result when unmounting from the VM, i.e the preempt case. We return it from `Continuation::try_preempt()` so it is already available when we call `post_vthread_pinned_event()` [1][2]. When unmounting from Java we do need to save it because the call to `post_vthread_pinned_event()` will be done later in `VirtualThread.postPinnedEvent()`, where the return value from the freeze call is not available anymore. 

[1] https://github.com/openjdk/jdk/blob/30b8bbe255c1653d25961c3fe79096b2b8d62bd6/src/hotspot/share/runtime/objectMonitor.cpp#L603
[2] https://github.com/openjdk/jdk/blob/30b8bbe255c1653d25961c3fe79096b2b8d62bd6/src/hotspot/share/runtime/objectMonitor.cpp#L1824

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

PR Review: https://git.openjdk.org/jdk/pull/22361#pullrequestreview-2473346537
PR Review Comment: https://git.openjdk.org/jdk/pull/22361#discussion_r1866249487


More information about the hotspot-runtime-dev mailing list