You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
using System;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Threading;
namespace ConsoleApp8
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
CallMeAlot(true);
for(int i = 0; i < 1000; i++)
{
CallMeAlot(false);
}
CallMeAlot(true);
Console.ReadLine();
}
[MethodImpl(MethodImplOptions.NoInlining)]
static void CallMeAlot(bool takeStackTrace)
{
Thread.Sleep(1);
if(takeStackTrace)
{
Capture();
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
static void Capture()
{
StackTrace trace = new StackTrace(true);
Console.WriteLine(trace);
}
}
}
Compile the app in retail configuration
Run it on .Net Core with tiered compilation enabled (set COMPLUS_EXPERIMENTAL_TieredCompilation=1)
Expected output (what you get without tiered jitting):
Hello World!
at ConsoleApp8.Program.Capture() in c:\users\noahfalk\Source\Repos\ConsoleApp8\Program.cs:line 32
at ConsoleApp8.Program.CallMeAlot(Boolean takeStackTrace) in c:\users\noahfalk\Source\Repos\ConsoleApp8\Program.cs:line 26
at ConsoleApp8.Program.Main(String[] args) in c:\users\noahfalk\Source\Repos\ConsoleApp8\Program.cs:line 12
at ConsoleApp8.Program.Capture() in c:\users\noahfalk\Source\Repos\ConsoleApp8\Program.cs:line 32 at ConsoleApp8.Program.CallMeAlot(Boolean takeStackTrace) in c:\users\noahfalk\Source\Repos\ConsoleApp8\Program.cs:line 26
at ConsoleApp8.Program.Main(String[] args) in c:\users\noahfalk\Source\Repos\ConsoleApp8\Program.cs:line 17
Actual output (what you get with tiered jitting enabled):
Hello World!
at ConsoleApp8.Program.Capture() in c:\users\noahfalk\Source\Repos\ConsoleApp8\Program.cs:line 32
at ConsoleApp8.Program.CallMeAlot(Boolean takeStackTrace) in c:\users\noahfalk\Source\Repos\ConsoleApp8\Program.cs:line 26
at ConsoleApp8.Program.Main(String[] args) in c:\users\noahfalk\Source\Repos\ConsoleApp8\Program.cs:line 12
at ConsoleApp8.Program.Capture() in c:\users\noahfalk\Source\Repos\ConsoleApp8\Program.cs:line 32 at ConsoleApp8.Program.CallMeAlot(Boolean takeStackTrace)
at ConsoleApp8.Program.Main(String[] args) in c:\users\noahfalk\Source\Repos\ConsoleApp8\Program.cs:line 17
Other Notes:
This issue probably has the same underlying cause as #9642, but we fixed that issue with a very tailored fix that wasn't broad enough to activate in this scenario.
This issue is also related to #8296 - the work to resolve this issue is likely necessary but not sufficient to solve #8296. Tiered jitting only requires the native -> IL mapping information to work whereas profiler ReJIT has an additional IL -> IL mapping phase. #8296 requires fixing that additional IL->IL portion too.
The text was updated successfully, but these errors were encountered:
Repro:
Expected output (what you get without tiered jitting):
Actual output (what you get with tiered jitting enabled):
Other Notes:
This issue probably has the same underlying cause as #9642, but we fixed that issue with a very tailored fix that wasn't broad enough to activate in this scenario.
This issue is also related to #8296 - the work to resolve this issue is likely necessary but not sufficient to solve #8296. Tiered jitting only requires the native -> IL mapping information to work whereas profiler ReJIT has an additional IL -> IL mapping phase. #8296 requires fixing that additional IL->IL portion too.
The text was updated successfully, but these errors were encountered: