TestStackTraceInFilter();
[MethodImpl(MethodImplOptions.NoInlining)]
static void TestStackTraceInFilter()
{
StackTrace st = TestStackTraceInFilterCallee();
Console.WriteLine(st);
}
[MethodImpl(MethodImplOptions.NoInlining)]
static StackTrace TestStackTraceInFilterCallee()
{
StackTrace st = null;
try
{
throw new Exception();
}
catch (Exception e) when ((st = new StackTrace(fNeedFileInfo: true)) != null)
{
}
return st;
}
dotnet run -f net8.0:
at RyuJitReproduction.Program.TestStackTraceInFilterCallee() in C:\Users\Accretion\source\dotnet\RyuJit\RyuJitReproduction\Program.cs:line 94
at RyuJitReproduction.Program.TestStackTraceInFilterCallee() in C:\Users\Accretion\source\dotnet\RyuJit\RyuJitReproduction\Program.cs:line 92
at RyuJitReproduction.Program.TestStackTraceInFilter() in C:\Users\Accretion\source\dotnet\RyuJit\RyuJitReproduction\Program.cs:line 76
at RyuJitReproduction.Program.Main() in C:\Users\Accretion\source\dotnet\RyuJit\RyuJitReproduction\Program.cs:line 70
dotnet run -f net9.0:
at RyuJitReproduction.Program.TestStackTraceInFilterCallee() in C:\Users\Accretion\source\dotnet\RyuJit\RyuJitReproduction\Program.cs:line 94
at System.Runtime.EH.FindFirstPassHandler(Object exception, UInt32 idxStart, StackFrameIterator& frameIter, UInt32& tryRegionIdx, Byte*& pHandler)
at System.Runtime.EH.DispatchEx(StackFrameIterator& frameIter, ExInfo& exInfo)
at System.Runtime.EH.RhThrowEx(Object exceptionObj, ExInfo& exInfo)
at RyuJitReproduction.Program.TestStackTraceInFilterCallee() in C:\Users\Accretion\source\dotnet\RyuJit\RyuJitReproduction\Program.cs:line 92
at RyuJitReproduction.Program.TestStackTraceInFilter() in C:\Users\Accretion\source\dotnet\RyuJit\RyuJitReproduction\Program.cs:line 76
at RyuJitReproduction.Program.Main() in C:\Users\Accretion\source\dotnet\RyuJit\RyuJitReproduction\Program.cs:line 70
I would also slightly question the double appearance of TestStackTraceInFilterCallee where other funclets get collapsed, but I suppose that has been this way for a long time.
Reproduction:
dotnet run -f net8.0
:dotnet run -f net9.0
:I would also slightly question the double appearance of
TestStackTraceInFilterCallee
where other funclets get collapsed, but I suppose that has been this way for a long time.