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