[jdk21u] RFR: 8319137: release _object in ObjectMonitor dtor to avoid races

Aleksey Shipilev shade at openjdk.org
Fri Nov 24 19:34:21 UTC 2023


This effectively reverts [JDK-8256302](https://bugs.openjdk.org/browse/JDK-8256302), which introduced race condition in JDK 21. The patch does not apply cleanly for two reasons:
 1. Deleted `release_object()` has a different form in JDK 21 due to slight WeakHandle API change. This is not relevant for this patch, just a backporting conflict. I removed `release_object()` by hand.
 2. Without [JDK-8319896](https://bugs.openjdk.org/browse/JDK-8319896) we cannot do `JavaThread::cast` in the incoming changeset, because we can be called by a non-Java thread. I suspect JDK-8319896 would come with its own bugtail, so I would prefer not to backport it now. I have replaced the code back to original pre- JDK 21 form in a separate commit: [Modifications to fit JDK 21](https://github.com/openjdk/jdk21u/commit/17477d8fca6f4e8f9c8ae2732cfb42f0ce887897)

Additional testing:
 - [x] MacOS AArch64 server fastdebug, `runtime/Monitor` passes
 - [ ] Linux AArch64 server fastdebug, `tier1 tier2 tier3 tier4`
 - [ ] Linux x86_64 server fastdebug, `tier1 tier2 tier3 tier4`

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

Commit messages:
 - Modifications to fit JDK 21
 - Backport c39d001c7a1ae9eb322a7bb621a03e18c9bf02a1

Changes: https://git.openjdk.org/jdk21u/pull/401/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk21u&pr=401&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8319137
  Stats: 48 lines in 3 files changed: 6 ins; 36 del; 6 mod
  Patch: https://git.openjdk.org/jdk21u/pull/401.diff
  Fetch: git fetch https://git.openjdk.org/jdk21u.git pull/401/head:pull/401

PR: https://git.openjdk.org/jdk21u/pull/401


More information about the jdk-updates-dev mailing list