Skip to content

Conversation

@MichalStrehovsky
Copy link
Member

We broke outerloops in #122012. Looks like the outerloop run was already broken in that PR but nobody went over the results.

  Process terminated. Assertion failed.
  !owningType.IsCanonicalSubtype(CanonicalFormKind.Any)
     at System.Diagnostics.DebugProvider.Fail(String, String) + 0x37
     at System.Diagnostics.Debug.Fail(String, String) + 0x49
     at ILCompiler.DependencyAnalysis.TypeGenericDictionaryNode..ctor(TypeDesc, NodeFactory) + 0x4c

...

D:\a\_work\1\s\artifacts\bin\coreclr\windows.x64.Checked\build\Microsoft.NETCore.Native.targets(332,5): error MSB3073: The command ""D:\a\_work\1\s\artifacts\bin\coreclr\windows.x64.Checked\x64\ilc\\ilc" @"D:\a\_work\1\s\artifacts\obj\Microsoft.Extensions.Logging.Tests\Release\net11.0-windows\native\Microsoft.Extensions.Logging.Tests.ilc.rsp"" exited with code 57005. [D:\a\_work\1\s\src\libraries\Microsoft.Extensions.Logging\tests\Common\Microsoft.Extensions.Logging.Tests.csproj::TargetFramework=net11.0-windows]

This is because we're trying to obtain generic dictionaries of something in a canonical form from here. The callsite identifier parameter is not necessary when referencing from NonConcrete methods because we're not going to build an associated generic dictionary anyway.

…nericLookupResult`

Native AOT outerloop builds are broken:

```
  Process terminated. Assertion failed.
  !owningType.IsCanonicalSubtype(CanonicalFormKind.Any)
     at System.Diagnostics.DebugProvider.Fail(String, String) + 0x37
     at System.Diagnostics.Debug.Fail(String, String) + 0x49
     at ILCompiler.DependencyAnalysis.TypeGenericDictionaryNode..ctor(TypeDesc, NodeFactory) + 0x4c

...

D:\a\_work\1\s\artifacts\bin\coreclr\windows.x64.Checked\build\Microsoft.NETCore.Native.targets(332,5): error MSB3073: The command ""D:\a\_work\1\s\artifacts\bin\coreclr\windows.x64.Checked\x64\ilc\\ilc" @"D:\a\_work\1\s\artifacts\obj\Microsoft.Extensions.Logging.Tests\Release\net11.0-windows\native\Microsoft.Extensions.Logging.Tests.ilc.rsp"" exited with code 57005. [D:\a\_work\1\s\src\libraries\Microsoft.Extensions.Logging\tests\Common\Microsoft.Extensions.Logging.Tests.csproj::TargetFramework=net11.0-windows]
```

This is because we're trying to obtain generic dictionaries of something in a canonical form from here. The callsite identifier parameter is not necessary when referencing from NonConcrete methods because we're not going to build an associated generic dictionary anyway.
@dotnet-policy-service
Copy link
Contributor

Tagging subscribers to this area: @agocke, @dotnet/ilc-contrib
See info in area-owners.md if you want to be subscribed.

@MichalStrehovsky
Copy link
Member Author

/azp run runtime-nativeaot-outerloop

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes a regression introduced in PR #122012 that caused outerloop test failures. The issue manifested as an assertion failure when attempting to create generic dictionaries for canonical types.

Changes:

  • Fixed VirtualDispatchCellGenericLookupResult.GetTarget to avoid creating generic dictionaries for non-concrete instantiations
  • Added conditional logic to only create dictionary nodes when isConcreteInstantiation is true

Copy link
Member

@sbomer sbomer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks for taking care of this!

@jkotas
Copy link
Member

jkotas commented Jan 24, 2026

/ba-g remaining native aot failures are fixed by other PRs

@jkotas jkotas merged commit 833e132 into dotnet:main Jan 24, 2026
128 of 138 checks passed
@MichalStrehovsky MichalStrehovsky deleted the nonconcrete branch January 24, 2026 06:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants