Integrated: 8354523: runtime/Monitor/SyncOnValueBasedClassTest.java triggers SIGSEGV
Roman Kennke
rkennke at openjdk.org
Mon Apr 21 17:45:59 UTC 2025
On Tue, 15 Apr 2025 12:47:47 GMT, Roman Kennke <rkennke at openjdk.org> wrote:
> When DiagnoseSyncOnValueBasedClasses is != 0, then we can take the slow-path without having cleared the monitor cache in the BasicLock. This would later lead to a crash or other unexpected behaviour. This can happen with C1 or the interpreter, C2 has the DiagnoseSyncOnValueBasedClasses-block after clearing the cache, and the native-entry in sharedRuntime_x86_64.cpp does not have a DiagnoseSyncOnValueBasedClasses-block at all.
>
> The proposed fix so far is a bit ugly because it repeats the clearing code in 3 places. The alternative would be to move the DiagnoseSyncOnValueBasedClasses-block into MA::lightweight_lock(), but this would bring DiagnoseSyncOnValueBasedClasses-handling into the native entry in sharedRuntime_x86_64.cpp, which is currently not the case. Also, we don't have enough regs for that, but we can probably use rscratch1 now that 32-bit is gone (as is already done in C1 and interpreter paths anyway).
>
> I'd first settle on the structure, and then implement the same thing for aarch64.
> ping @xmas92
This pull request has now been integrated.
Changeset: ecb54a05
Author: Roman Kennke <rkennke at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/ecb54a05c6774e1a93d76b1181bda734129b6ace
Stats: 189 lines in 18 files changed: 110 ins; 68 del; 11 mod
8354523: runtime/Monitor/SyncOnValueBasedClassTest.java triggers SIGSEGV
Co-authored-by: Martin Doerr <mdoerr at openjdk.org>
Co-authored-by: Fei Yang <fyang at openjdk.org>
Co-authored-by: Amit Kumar <amitkumar at openjdk.org>
Reviewed-by: coleenp, aboldtch
-------------
PR: https://git.openjdk.org/jdk/pull/24660
More information about the hotspot-dev
mailing list