RFR: 8375046: C2: Incremental inlining step asserts when processing empty late inlines list [v6]
Aleksey Shipilev
shade at openjdk.org
Wed Jan 28 09:43:32 UTC 2026
> Seen this assert in stress CTW runs:
>
>
> # Internal Error (/home/shade/trunks/jdk/src/hotspot/share/utilities/growableArray.hpp:498), pid=2972347, tid=2973775
> # assert(start < end && end <= this->_len) failed: erase called with invalid range (0, 0) for length 0
>
> Stack: [0x00007fd660bea000,0x00007fd660cea000], sp=0x00007fd660ce4fc0, free space=1003k
> Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
> V [libjvm.so+0xc00a41] Compile::inline_incrementally_one()+0x801 (growableArray.hpp:498)
> V [libjvm.so+0xc01650] Compile::inline_incrementally(PhaseIterGVN&)+0x2f0 (compile.cpp:2212)
> V [libjvm.so+0xc04581] Compile::Optimize()+0x7d1 (compile.cpp:2357)
>
>
> It looks innocuous, as `GrowableArray::remove_range` does nothing real on `[0, 0)`. It is still IMO a bug to call it with `[0, 0)`, as it is not clear whether to trust inclusive or exclusive boundary. But for `remove_till`, it looks plausible that `remove_till(0)` should work and be a no-op. Looks like it readily happens in C2 CTW when `_late_inlines` is empty.
>
> Additional testing:
> - [x] Linux x86_64 server fastdebug, additional new gtest to verify `remove_range` works
> - [x] Linux x86_64 server fastdebug, `all`
Aleksey Shipilev 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 13 additional commits since the last revision:
- Alternative fix
- Remove old patch
- Merge branch 'master' into JDK-8375046-growable-array-till-zero
- Missing case
- More tests
- Merge branch 'master' into JDK-8375046-growable-array-till-zero
- Revert
- Leave only the C2 fix
- Merge branch 'master' into JDK-8375046-growable-array-till-zero
- Only clear pos when needed
- ... and 3 more: https://git.openjdk.org/jdk/compare/3ecdecf8...2f755fb5
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/29171/files
- new: https://git.openjdk.org/jdk/pull/29171/files/bbcc37ea..2f755fb5
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=29171&range=05
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=29171&range=04-05
Stats: 23206 lines in 705 files changed: 10204 ins; 4207 del; 8795 mod
Patch: https://git.openjdk.org/jdk/pull/29171.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/29171/head:pull/29171
PR: https://git.openjdk.org/jdk/pull/29171
More information about the hotspot-dev
mailing list