You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
JIT: Assertion failed '!compIsForInlining()' during 'Morph - Inlining' in jit64_2 tests #112363
It seems to be unrelated to my change.
The assertion here is to assert any callee of a method that being inlined cannot be vararg, which seems to be incorrect.
Here we are inlining:
[000030] I-C-G------ * CALL int MCCTest.MyClass:Main():int (exactContextHandle=0x00007FFB4FC2AEC1)
which makes perfect sense, but then in the body of MCCTest.MyClass:Main we have a
[000193] --CXG------ * CALL ind struct
[000192] ----------- calli tgt \--* FTN_ADDR long MCCTest.MyClass:Sum(double,int,long,float,short,double):MCCTest.VType3
which is vararg, so the assertion triggers while importing MCCTest.MyClass:Sum during inlining MCCTest.MyClass:Main.
I don't think we have any way to detect whether a method call inside an inlinee is vararg or not before actually import it, so this check seems wrong to me. Maybe we should simply remove this check and instead block inlining vararg calls.
Activity
dotnet-policy-service commentedon Feb 10, 2025
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.
EgorBo commentedon Feb 10, 2025
Looks like the assert complains that a function with varargs was attempted to be inlined
EgorBo commentedon Feb 10, 2025
Curious if it could be inliner-related changes in #111782 or #111948
JulieLeeMSFT commentedon Feb 10, 2025
CC @hez2010 if he can take a quick look at it and guess what might have caused this failure.
hez2010 commentedon Feb 11, 2025
It seems to be unrelated to my change.
The assertion here is to assert any callee of a method that being inlined cannot be
vararg, which seems to be incorrect.Here we are inlining:
which makes perfect sense, but then in the body of
MCCTest.MyClass:Mainwe have awhich is vararg, so the assertion triggers while importing
MCCTest.MyClass:Sumduring inliningMCCTest.MyClass:Main.I don't think we have any way to detect whether a method call inside an inlinee is vararg or not before actually import it, so this check seems wrong to me. Maybe we should simply remove this check and instead block inlining vararg calls.
hez2010 commentedon Feb 11, 2025
Here is the test binary: jit64_2.zip
To repro, set environment vairables
and run
jit64_2.dllwith corerun.EgorBo commentedon Feb 11, 2025
@hez2010 was it just exposed by your changes (.e.g. we know inline what we did not) ?
hez2010 commentedon Feb 11, 2025
Yeah, it seems to be a new valid inlinee that we didn't inline before. The actual issue should already exist in the JIT before my change.
AndyAyersMS commentedon Feb 12, 2025
I have a Jan 22 build lying around that also fails this way. Could just be random inline stress working its magic.
JIT: remove asserts about inlining methods that call varargs methods
JIT: remove asserts about inlining methods that call varargs methods (d…