Skip to content
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

[libraries-jitstress] JIT: Assertion failed 'doesMethodHaveRecursiveTailcall()' during 'Morph - Global' #93844

Closed
jakobbotsch opened this issue Oct 23, 2023 · 2 comments · Fixed by #93892
Assignees
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI blocking-clean-ci-optional Blocking optional rolling runs Known Build Error Use this to report build issues in the .NET Helix tab
Milestone

Comments

@jakobbotsch
Copy link
Member

jakobbotsch commented Oct 23, 2023

Error Blob

{
  "ErrorMessage": "Assertion failed 'doesMethodHaveRecursiveTailcall()'",
  "BuildRetry": false,
  "ErrorPattern": "",
  "ExcludeConsoleLog": false
}

Reproduction Steps

See e.g. pipeline run https://dev.azure.com/dnceng-public/public/_build/results?buildId=447196&view=results linux-x64 run.

export DOTNET_TieredCompilation=1
export DOTNET_JitStress=1
...
----- start Sun Oct 22 22:05:16 UTC 2023 =============== To repro directly: =====================================================
pushd .
/root/helix/work/correlation/dotnet exec --runtimeconfig System.Runtime.Tests.runtimeconfig.json --depsfile System.Runtime.Tests.deps.json xunit.console.dll System.Runtime.Tests.dll -xml testResults.xml -nologo -nocolor -notrait category=AdditionalTimezoneChecks -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing 
popd
===========================================================================================================
/root/helix/work/workitem/e /root/helix/work/workitem/e
  Discovering: System.Runtime.Tests (method display = ClassAndMethod, method display options = None)
  Discovered:  System.Runtime.Tests (found 9235 of 9282 test cases)
  Starting:    System.Runtime.Tests (parallel test collections = on, max threads = 2)
    System.Tests.IntPtrTests.TestExplicitCast [SKIP]
      Condition(s) not met: "Is64Bit"
    System.Tests.IntPtrTests.Size [SKIP]
      Condition(s) not met: "Is64Bit"
    System.Tests.IntPtrTests.Add [SKIP]
      Condition(s) not met: "Is64Bit"
    System.Tests.IntPtrTests.Subtract [SKIP]
      Condition(s) not met: "Is64Bit"
    System.Tests.IntPtrTests.GetHashCodeRespectAllBits [SKIP]
      Condition(s) not met: "Is64Bit"
    System.Tests.IntPtrTests.Ctor_VoidPointer_ToPointer [SKIP]
      Condition(s) not met: "Is64Bit"
    System.Tests.IntPtrTests.Ctor_Long [SKIP]
      Condition(s) not met: "Is64Bit"
    System.Tests.ArgIteratorTests.ArgIterator_GetNextArgType [SKIP]
      Condition(s) not met: "IsArgIteratorSupported"
    System.Tests.ArgIteratorTests.ArgIterator_GetRemainingCount_GetNextArg [SKIP]
      Condition(s) not met: "IsArgIteratorSupported"

Assert failure(PID 29 [0x0000001d], Thread: 217 [0x00d9]): Assertion failed 'doesMethodHaveRecursiveTailcall()' in 'System.Reflection.SignatureType:GetHashCode():int:this' during 'Morph - Global' (IL size 7; hash 0xe30863bc; Instrumented Tier1)

    File: /__w/1/s/src/coreclr/jit/morph.cpp Line: 7459
    Image: /root/helix/work/correlation/dotnet

Known issue validation

Build: 🔎 https://dev.azure.com/dnceng-public/public/_build/results?buildId=447196
Error message validated: Assertion failed 'doesMethodHaveRecursiveTailcall()'
Result validation: ✅ Known issue matched with the provided build.
Validation performed at: 10/23/2023 7:23:13 AM UTC

Report

Build Definition Test Pull Request
447327 dotnet/runtime System.Runtime.Tests.WorkItemExecution #93830
447196 dotnet/runtime System.Runtime.Tests.WorkItemExecution #93835
447127 dotnet/runtime System.ComponentModel.TypeConverter.Tests.WorkItemExecution

Summary

24-Hour Hit Count 7-Day Hit Count 1-Month Count
2 3 3
@jakobbotsch jakobbotsch added blocking-clean-ci-optional Blocking optional rolling runs Known Build Error Use this to report build issues in the .NET Helix tab labels Oct 23, 2023
@dotnet-issue-labeler dotnet-issue-labeler bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Oct 23, 2023
@ghost ghost added the untriaged New issue has not been triaged by the area owner label Oct 23, 2023
@ghost
Copy link

ghost commented Oct 23, 2023

Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.

Issue Details

Error Blob

{
  "ErrorMessage": "Assertion failed 'doesMethodHaveRecursiveTailcall()'",
  "BuildRetry": false,
  "ErrorPattern": "",
  "ExcludeConsoleLog": false
}

Reproduction Steps

See e.g. pipeline run https://dev.azure.com/dnceng-public/public/_build/results?buildId=447196&view=results.

export DOTNET_TieredCompilation=1
export DOTNET_JitStress=1
...
----- start Sun Oct 22 22:05:16 UTC 2023 =============== To repro directly: =====================================================
pushd .
/root/helix/work/correlation/dotnet exec --runtimeconfig System.Runtime.Tests.runtimeconfig.json --depsfile System.Runtime.Tests.deps.json xunit.console.dll System.Runtime.Tests.dll -xml testResults.xml -nologo -nocolor -notrait category=AdditionalTimezoneChecks -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing 
popd
===========================================================================================================
/root/helix/work/workitem/e /root/helix/work/workitem/e
  Discovering: System.Runtime.Tests (method display = ClassAndMethod, method display options = None)
  Discovered:  System.Runtime.Tests (found 9235 of 9282 test cases)
  Starting:    System.Runtime.Tests (parallel test collections = on, max threads = 2)
    System.Tests.IntPtrTests.TestExplicitCast [SKIP]
      Condition(s) not met: "Is64Bit"
    System.Tests.IntPtrTests.Size [SKIP]
      Condition(s) not met: "Is64Bit"
    System.Tests.IntPtrTests.Add [SKIP]
      Condition(s) not met: "Is64Bit"
    System.Tests.IntPtrTests.Subtract [SKIP]
      Condition(s) not met: "Is64Bit"
    System.Tests.IntPtrTests.GetHashCodeRespectAllBits [SKIP]
      Condition(s) not met: "Is64Bit"
    System.Tests.IntPtrTests.Ctor_VoidPointer_ToPointer [SKIP]
      Condition(s) not met: "Is64Bit"
    System.Tests.IntPtrTests.Ctor_Long [SKIP]
      Condition(s) not met: "Is64Bit"
    System.Tests.ArgIteratorTests.ArgIterator_GetNextArgType [SKIP]
      Condition(s) not met: "IsArgIteratorSupported"
    System.Tests.ArgIteratorTests.ArgIterator_GetRemainingCount_GetNextArg [SKIP]
      Condition(s) not met: "IsArgIteratorSupported"

Assert failure(PID 29 [0x0000001d], Thread: 217 [0x00d9]): Assertion failed 'doesMethodHaveRecursiveTailcall()' in 'System.Reflection.SignatureType:GetHashCode():int:this' during 'Morph - Global' (IL size 7; hash 0xe30863bc; Instrumented Tier1)

    File: /__w/1/s/src/coreclr/jit/morph.cpp Line: 7459
    Image: /root/helix/work/correlation/dotnet
Author: jakobbotsch
Assignees: -
Labels:

area-CodeGen-coreclr, blocking-clean-ci-optional, Known Build Error

Milestone: -

@jakobbotsch jakobbotsch removed the untriaged New issue has not been triaged by the area owner label Oct 23, 2023
@jakobbotsch jakobbotsch added this to the 9.0.0 milestone Oct 23, 2023
@jakobbotsch
Copy link
Member Author

Seems likely to be related to #93764, cc @AndyAyersMS

@AndyAyersMS AndyAyersMS self-assigned this Oct 23, 2023
AndyAyersMS added a commit to AndyAyersMS/runtime that referenced this issue Oct 23, 2023
We now require that recursive tail calls be noted before morph by setting
method and block flags. Add missing flag setting when devirtualization creates
a recursive tail call candidate.

Also add a diagnosic post-phase check to catch cases like this earlier.

Fixes dotnet#93844.
@ghost ghost added the in-pr There is an active PR which will close this issue when it is merged label Oct 23, 2023
AndyAyersMS added a commit that referenced this issue Oct 23, 2023
We now require that recursive tail calls be noted before morph by setting
method and block flags. Add missing flag setting when devirtualization creates
a recursive tail call candidate.

Also add a diagnosic post-phase check to catch cases like this earlier.

Fixes #93844.
@ghost ghost removed the in-pr There is an active PR which will close this issue when it is merged label Oct 23, 2023
@ghost ghost locked as resolved and limited conversation to collaborators Nov 23, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI blocking-clean-ci-optional Blocking optional rolling runs Known Build Error Use this to report build issues in the .NET Helix tab
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants