Skip to content

Assertion failed 'codeGen->isFramePointerUsed() || varDsc->GetStackOffset() >= 0' #67488

Closed
@BruceForstall

Description

@BruceForstall

I see several of these in the SPMI replay job (https://dev.azure.com/dnceng/public/_build?definitionId=1055&_a=summary):

ISSUE: <ASSERT> #48953 C:\gh\runtime6\src\coreclr\jit\lclvars.cpp (5360) - Assertion failed 'codeGen->isFramePointerUsed() || varDsc->GetStackOffset() >= 0' in '<>c:<EmitMatchCharacterClass>b__130_1(Span1,ValueTuple2):this' during 'Generate code' (IL size 88; hash 0x34b0649e; Tier1-OSR)

Specifically, for JitStressRegs=1/2/3/8, in the aspnet collection.

Note that this is a Tier1-OSR compilation.

If I attempt to repro just the one compilation:

C:\gh\runtime6\artifacts\tests\coreclr\windows.x64.Checked\Tests\Core_Root\superpmi.exe -c 48953 -jitoption JitStressRegs=1 -jitoption TieredCompilation=0 C:\gh\runtime6\artifacts\tests\coreclr\windows.x64.Checked\Tests\Core_Root\clrjit.dll c:\spmi\mch\b2d3c86f-87fd-4724-9e5d-4c44905eba91.windows.x64\aspnet.run.windows.x64.checked.mch

The failure doesn't repro.

If I run a set of compilations, -c 48900-48953, then it repros. That indicates that either SPMI replay or the JIT is storing data between SPMI replays, which is bad. Possibly environment settings or compilation flags?

One thing to note: superpmi_replay.py is forcing passing -jitoption TieredCompilation=0. This doesn't make sense, as it's overriding the SPMI collection, which will affect OSR playback (and probably lead to "MISSING" data). We should remove this. It was probably done because the replay job mostly invokes JitStressRegs, which wouldn't do anything in MinOpts compilations. But it seems likely forcing TieredCompilation=0 won't work for replays anyway.

In fact, removing -jitoption TieredCompilation=0, -c 48900-48953 succeeds. However, a full run still leads to this assert.

@AndyAyersMS
cc @dotnet/jit-contrib

Metadata

Metadata

Assignees

Labels

area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions