RFR: 8354523: runtime/Monitor/SyncOnValueBasedClassTest.java triggers SIGSEGV [v6]

Coleen Phillimore coleenp at openjdk.org
Fri Apr 18 11:51:51 UTC 2025


On Fri, 18 Apr 2025 09:24:34 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
>
> Roman Kennke has updated the pull request incrementally with one additional commit since the last revision:
> 
>   RISCV parts

This looks good.  The s390 could go in as a new patch, or with this when it's done.  It seems pretty simple, could almost do it yourself if Amit is unavailable to push it.

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

Marked as reviewed by coleenp (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/24660#pullrequestreview-2778393198


More information about the hotspot-dev mailing list