-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
Assertion failed '!foundDiff' during 'Linear scan register alloc' #69659
Comments
Tagging subscribers to this area: @JulieLeeMSFT Issue Details// Generated by Fuzzlyn v1.5 on 2022-05-22 15:46:22
// Run on X64 Windows
// Seed: 6568846458402286114
// Reduced from 194.5 KiB to 0.5 KiB in 00:02:48
// Hits JIT assert in Release:
// Assertion failed '!foundDiff' in 'Program:M27(int,System.UInt64[][])' during 'Linear scan register alloc' (IL size 35; hash 0xf8af49d2; FullOpts)
//
// File: D:\a\_work\1\s\src\coreclr\jit\lsra.cpp Line: 2264
//
public class Program
{
public static ulong[] s_14;
public static uint s_34;
public static void Main()
{
var vr2 = new ulong[][]{new ulong[]{0}};
M27(s_34, vr2);
}
public static void M27(uint arg4, ulong[][] arg5)
{
arg5[0][0] = arg5[0][0];
for (int var7 = 0; var7 < 1; var7++)
{
return;
}
try
{
s_14 = arg5[0];
}
finally
{
arg4 = arg4;
}
}
} Introduced by c190f6b, cc @kunalspathak
|
Also the following: // Generated by Fuzzlyn v1.5 on 2022-05-22 17:02:08
// Run on X64 Windows
// Seed: 16100522673054002921
// Reduced from 69.8 KiB to 0.8 KiB in 00:01:02
// Hits JIT assert in Release:
// Assertion failed 'cookie != nullptr' in 'Program:M47():bool' during 'Emit GC+EH tables' (IL size 66; hash 0x6cdf4e90; FullOpts)
//
// File: D:\a\_work\1\s\src\coreclr\jit\jiteh.cpp Line: 1086
//
public class Program
{
public static bool[][, ] s_2;
public static short[, ][] s_8;
public static bool[] s_10;
public static ushort[][] s_29;
public static void Main()
{
bool vr1 = M47();
}
public static bool M47()
{
bool var0 = default(bool);
try
{
if (var0)
{
try
{
if (s_10[0])
{
return s_2[0][0, 0];
}
}
finally
{
s_8[0, 0][0] = 0;
}
}
}
finally
{
s_29 = s_29;
}
return true;
}
} |
We are hitting the |
This one is happening because we detect certain block is dead and remove the code inside it but we sometimes might decide to not delete the block. In those cases, we need to still make sure that we update liveness of variables. In #69421, I was only updating the liveness if we deleted the actual blocks.
This one is interesting. We have chain of try-finally that looks like this. During dead block elimination, we eliminate
|
Introduced by c190f6b, cc @kunalspathak
The text was updated successfully, but these errors were encountered: