-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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 'Contains(ancestor) && Contains(descendant)' during 'SSA: liveness' #110957
Comments
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
I cannot reproduce this on win-x64. What platform is this supposed to repro on? |
This is from osx/arm64 or any other arm64 platform
|
Ah thanks, not sure how I missed that. |
This one is on linux/arm64 that reproed on Saturday's run // Found by Antigen
// Reduced from 53.36 KB to 3.11 KB.
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
using System.Runtime.Intrinsics.Arm;
using System.Runtime.Intrinsics.X86;
using System.Numerics;
public class TestClass
{
public struct S1
{
}
public struct S2
{
public struct S2_D1_F1
{
}
}
static uint s_uint_16 = 5;
static Vector64<ulong> s_v64_ulong_26 = Vector64.Create((ulong)0);
static Vector<byte> s_v_byte_39 = Vector.Create((byte)5);
static S1 s_s1_52 = new S1();
static S2.S2_D1_F1 s_s2_s2_d1_f1_53 = new S2.S2_D1_F1();
Vector64<ulong> v64_ulong_77 = Vector64<ulong>.AllBitsSet;
Vector128<sbyte> v128_sbyte_81 = Vector128<sbyte>.Zero;
Vector<byte> v_byte_90 = Vector.Create((byte)5);
S2 s2_105 = new S2();
private static List<string> toPrint = new List<string>();
public uint Method4(out Vector<byte> p_v_byte_186, S2.S2_D1_F1 p_s2_s2_d1_f1_187, S1 p_s1_188, out S1 p_s1_189, Vector64<ulong> p_v64_ulong_190, S2 p_s2_191, out S2 p_s2_192, long p_long_193)
{
unchecked
{
int int_200 = 5;
uint uint_206 = 1;
p_v_byte_186 = s_v_byte_39 *= 15|4;
try
{
p_v_byte_186 += p_v_byte_186;
}
catch (System.AggregateException)
{
}
finally
{
switch (int_200 % 15|4)
{
case 0:
{
break;
}
case 73:
{
break;
}
case 2:
{
if (15<=4)
{
}
else
{
if (Vector128.GreaterThanAll(v128_sbyte_81, v128_sbyte_81 *= 15-4))
{
}
else
{
do
{
}
while (true);
}
}
break;
}
default:
{
break;
}
}
}
return uint_206 ^= 15&4;
}
}
public void Method0()
{
unchecked
{
long long_220 = 2;
S2 s2_230 = new S2();
s_uint_16 = Method4(out v_byte_90, s_s2_s2_d1_f1_53, s_s1_52, out s_s1_52, Vector64.IsPositiveInfinity(v64_ulong_77 += Vector64.ClampNative(s_v64_ulong_26, s_v64_ulong_26, s_v64_ulong_26) - s_v64_ulong_26 & v64_ulong_77), s2_230, out s2_105, long_220 *= 15^4);
return;
}
}
public static void Main(string[] args)
{
Antigen();
}
public static int Antigen()
{
new TestClass().Method0();
return string.Join(Environment.NewLine, toPrint).GetHashCode();
}
}
/*
Environment:
set DOTNET_JitFakeProcedureSplitting=1
set DOTNET_TieredCompilation=0
set DOTNET_MaxVectorTBitWidth=128
set DOTNET_PreferredVectorBitWidth=0
set DOTNET_JitStress=0
set DOTNET_JitStressRegs=1
set DOTNET_JitThrowOnAssertionFailure=1
set DOTNET_LegacyExceptionHandling=1
Debug: -184101551
Release: 0
JIT assert failed:
Assertion failed 'Contains(ancestor) && Contains(descendant)' in 'TestClass:Method4(byref,TestClass+S2+S2_D1_F1,TestClass+S1,byref,System.Runtime.Intrinsics.Vector64`1[ulong],TestClass+S2,byref,long):uint:this' during 'SSA: liveness' (IL size 121; hash 0x90884810; FullOpts)
File: /__w/1/s/src/coreclr/jit/flowgraph.cpp Line: 4288
*/ |
And here is windows/x64, repros on 6045e29 with // Found by Antigen
// Reduced from 18.96 KB to 1.82 KB.
public class TestClass
{
public struct S1
{
public struct S1_D1_F1
{
}
}
static bool s_bool_2 = true;
static long s_long_9 = 5;
int int_27 = 3;
uint uint_33 = 39;
S1.S1_D1_F1 s1_s1_d1_f1_36 = new S1.S1_D1_F1();
static int s_loopInvariant = 8;
public bool LeafMethod0()
{
unchecked
{
return s_bool_2;
}
}
public S1.S1_D1_F1 LeafMethod15()
{
unchecked
{
return s1_s1_d1_f1_36;
}
}
public long Method1(uint p_uint_40, out long p_long_41)
{
unchecked
{
p_long_41 = int_27 %= 15 | 4;
try
{
LeafMethod15();
}
catch (System.MethodAccessException)
{
}
finally
{
int __loopvar0 = s_loopInvariant, __loopSecondaryVar0_0 = s_loopInvariant;
do
{
__loopSecondaryVar0_0++;
if (__loopSecondaryVar0_0 > 15 + 4)
break;
}
while (LeafMethod0());
}
return 5;
}
}
public void Method0()
{
unchecked
{
s_long_9 = Method1(uint_33, out s_long_9);
return;
}
}
public static void Main(string[] args) => Antigen();
public static void Antigen()
{
new TestClass().Method0();
}
} |
This is on osx/arm64, but I have seen failures in other platforms like linux/arm and windows/x64
The text was updated successfully, but these errors were encountered: