RFR: 8374807: Crash in MethodData::extra_data_lock()+0x0 when running -XX:+TraceDeoptimization -XX:-ProfileTraps -XX:-TieredCompilation -Xcomp -version [v4]
Guanqiang Han
ghan at openjdk.org
Sat Jan 17 13:31:43 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
Guanqiang Han has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains seven additional commits since the last revision:
- revert
- Merge remote-tracking branch 'upstream/master' into 8374807
- narrow lock scope
- Merge remote-tracking branch 'upstream/master' into 8374807
- split long line
- Merge remote-tracking branch 'upstream/master' into 8374807
- fix 8374807
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/29147/files
- new: https://git.openjdk.org/jdk/pull/29147/files/cdc88af1..e065ae56
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=29147&range=03
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=29147&range=02-03
Stats: 4227 lines in 70 files changed: 2638 ins; 859 del; 730 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-compiler-dev
mailing list