RFR: 8374807: Crash in MethodData::extra_data_lock()+0x0 when running -XX:+TraceDeoptimization -XX:-ProfileTraps -XX:-TieredCompilation -Xcomp -version

Guanqiang Han ghan at openjdk.org
Sat Jan 10 00:15:16 UTC 2026


Please review this change. Thanks!

Description:

This change fixes a crash in Deoptimization::uncommon_trap_inner when running with -XX:+TraceDeoptimization -XX:-ProfileTraps -XX:-TieredCompilation -Xcomp.

With -XX:-ProfileTraps, create_if_missing is set to false.
https://github.com/openjdk/jdk/blob/74faf033127ab3a5e28be75b91e662c589f81084/src/hotspot/share/runtime/deoptimization.cpp#L2121-L2122

When create_if_missing is false, new mdo can not be created when m()->method_data() return null, so get_method_data() may return null .
https://github.com/openjdk/jdk/blob/74faf033127ab3a5e28be75b91e662c589f81084/src/hotspot/share/runtime/deoptimization.cpp#L1911-L1912

and trap_mdo can be null as a result
https://github.com/openjdk/jdk/blob/74faf033127ab3a5e28be75b91e662c589f81084/src/hotspot/share/runtime/deoptimization.cpp#L2134-L2136

The crash happens here because trap_mdo is null
https://github.com/openjdk/jdk/blob/74faf033127ab3a5e28be75b91e662c589f81084/src/hotspot/share/runtime/deoptimization.cpp#L2157

Fix:

The fix makes acquisition of extra_data_lock conditional on trap_mdo being non-null, preserving the required lock ordering (extra_data_lock before ttyLocker) when an MDO exists.

Test:

GHA

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

Commit messages:
 - fix 8374807

Changes: https://git.openjdk.org/jdk/pull/29147/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=29147&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8374807
  Stats: 42 lines in 2 files changed: 41 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/29147.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/29147/head:pull/29147

PR: https://git.openjdk.org/jdk/pull/29147


More information about the hotspot-dev mailing list