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
Recent runs that observed the failure: first, second. Test in question.
To diagnose the cause, I used the following snippet:
Release runtime + Release Jit were tested (since that's what the CI was using), with tiered compilation off.
git bisectshowed the following:- Commits before d435388 only needeed
Xof 65 to succeed.- Commits after and including d435388 needed
Xof 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