RFR: 8355354: C2 crashed: assert(_callee == nullptr || _callee == m) failed: repeated inline attempt with different callee [v2]

Damon Fenacci dfenacci at openjdk.org
Fri Aug 29 16:52:44 UTC 2025


On Thu, 21 Aug 2025 18:40:22 GMT, Vladimir Ivanov <vlivanov at openjdk.org> wrote:

>> src/hotspot/share/opto/callGenerator.cpp line 487:
>> 
>>> 485:         "repeated inline attempt with different callee");
>>> 486:     }
>>> 487: #endif
>> 
>> I'm wondering if there might be other reasons that the callee might change, like JVMTI class redefinition.  Also, it sounds like the CHA case is really rare, and we check dependencies at the end anyway, so the easiest fix for class redefinition and CHA would be to ignore the new callee and keep the old one here.
>
> I second that. And it aligns with our effort to make CI queries report stable results.  
> 
> (FTR here's what I proposed to Damon privately: "Another alternative is to cache and reuse cg->callee_method() when it becomes non-null. And turn repeated CHA requests (Compile::optimize_inlining) into verification logic.")

> I'm wondering if there might be other reasons that the callee might change, like JVMTI class redefinition

I guess there could be. For JVMTI we could possibly check for `Method::is_old` or `Method::is_obsolete`? But still, it might not be the only reason...

> so the easiest fix for class redefinition and CHA would be to ignore the new callee and keep the old one here.

I'm tempted by setting the callee if it is null and just removing the original assert but @iwanowww suggested moving the assert to the `Ideal` function. I've just pushed a change that should be doing that.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/26441#discussion_r2310651866


More information about the hotspot-compiler-dev mailing list