Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JIT: Assertion failed '!compIsForInlining()' during 'Morph - Inlining' in jit64_2 tests #112363

Open
amanasifkhalid opened this issue Feb 10, 2025 · 8 comments
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI blocking-clean-ci-optional Blocking optional rolling runs Known Build Error Use this to report build issues in the .NET Helix tab
Milestone

Comments

@amanasifkhalid
Copy link
Member

amanasifkhalid commented Feb 10, 2025

Build Information

Build: https://dev.azure.com/dnceng-public/public/_build/results?buildId=945874&view=results
Build error leg or test failing:

Error Message

Fill the error message using step by step known issues guidance.

{
  "ErrorMessage": "Assertion failed '!compIsForInlining()'",
  "BuildRetry": false,
  "ExcludeConsoleLog": false
}

Configuration:

set DOTNET_TieredCompilation=0
set DOTNET_JitStress=1a7

Example log. cc @dotnet/jit-contrib

Known issue validation

Build: 🔎 https://dev.azure.com/dnceng-public/public/_build/results?buildId=945874
Error message validated: [Assertion failed '!compIsForInlining()']
Result validation: ✅ Known issue matched with the provided build.
Validation performed at: 2/10/2025 7:39:24 PM UTC

Report

Build Definition Test Pull Request
945874 dotnet/runtime jit64_2.WorkItemExecution

Summary

24-Hour Hit Count 7-Day Hit Count 1-Month Count
0 1 1
@amanasifkhalid amanasifkhalid added area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI blocking-clean-ci-optional Blocking optional rolling runs Known Build Error Use this to report build issues in the .NET Helix tab labels Feb 10, 2025
@amanasifkhalid amanasifkhalid added this to the 10.0.0 milestone Feb 10, 2025
Copy link
Contributor

Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.

@EgorBo
Copy link
Member

EgorBo commented Feb 10, 2025

Looks like the assert complains that a function with varargs was attempted to be inlined

@EgorBo
Copy link
Member

EgorBo commented Feb 10, 2025

Curious if it could be inliner-related changes in #111782 or #111948

@JulieLeeMSFT
Copy link
Member

CC @hez2010 if he can take a quick look at it and guess what might have caused this failure.

@hez2010
Copy link
Contributor

hez2010 commented 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:

[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.

@hez2010
Copy link
Contributor

hez2010 commented Feb 11, 2025

Here is the test binary: jit64_2.zip
To repro, set environment vairables

DOTNET_TieredCompilation=0
DOTNET_JitStress=1a7

and run jit64_2.dll with corerun.

@EgorBo
Copy link
Member

EgorBo commented Feb 11, 2025

@hez2010 was it just exposed by your changes (.e.g. we know inline what we did not) ?

@hez2010
Copy link
Contributor

hez2010 commented Feb 11, 2025

@hez2010 was it just exposed by your changes (.e.g. we know inline what we did not) ?

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI blocking-clean-ci-optional Blocking optional rolling runs Known Build Error Use this to report build issues in the .NET Helix tab
Projects
None yet
Development

No branches or pull requests

4 participants