Skip to content

System.Linq.Expressions CompileDeepTree_NoStackOverflowFast fails with Stack Overflow #53309

@SingleAccretion

Description

@SingleAccretion

Recent runs that observed the failure: first, second. Test in question.

To diagnose the cause, I used the following snippet:

var flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance;
var t = new Thread(x => RuntimeHelpers.PrepareMethod(typeof(Program).GetMethod("Problem", flags).MethodHandle), X * 1024);
t.Start();

class Program
{
    // Pseudo syntax, I used InlineIL.Fody
    static int Problem()
    {
        ldc.i4.0
    
        // Repeated 100 times
        ldc.i4.1
        add
    
        ret
    }
}

Release runtime + Release Jit were tested (since that's what the CI was using), with tiered compilation off.

git bisect showed the following:
- Commits before d435388 only needeed X of 65 to succeed.
- Commits after and including d435388 needed X of 129 and above to succeed, matching the timing of the failures in CI (this test succeeded on 21st of May).

This test has a history of failing on Debug Jits (indeed, an attribute pointing to just that) - see #21374. But now, apparently, it needs 129 KB of stack even in Release. I am not sure what is the proper fix for this.

cc @AndyAyersMS

Metadata

Metadata

Assignees

Labels

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

Type

No type

Projects

Status

Done

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions