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

[NET Core 3.1] Stack overflow error repeat 24047 times: at Internal.TypeSystem.InstantiatedType.IsCanonicalSubtype(Internal.TypeSystem.CanonicalFormKind) #283

Closed
darkguy2008 opened this issue Nov 2, 2020 · 18 comments
Labels
area-NativeAOT-coreclr .NET runtime optimized for ahead of time compilation

Comments

@darkguy2008
Copy link

darkguy2008 commented Nov 2, 2020

Hey, first of all thanks for this initiative! CoreRT has been great so far and you guys keeping up with it and integrating it into .NET is by far the best (and most expected) feature, as generating native assemblies has been one of my major wishes in .NET! 👍

Now, I get this when using this repo. The same thing also happens if I use the current CoreRT, but it only says it was terminated due to an StackOverflowException, without any details. This means that the bug exists both in CoreRT and RuntimeLab.

Any pointers would be awesome. I'll try to see if I can create a project that has this bug.

Thanks!

  Generating compatible native code. To optimize for size or speed, visit https://aka.ms/OptimizeCoreRT
  Stack overflow.
  Repeat 24047 times:
  --------------------------------
     at Internal.TypeSystem.InstantiatedType.IsCanonicalSubtype(Internal.TypeSystem.CanonicalFormKind)
  --------------------------------
     at ILCompiler.DependencyAnalysis.EETypeNode..ctor(ILCompiler.DependencyAnalysis.NodeFactory, Internal.TypeSystem.TypeDesc)
     at ILCompiler.DependencyAnalysis.NodeFactory.CreateNecessaryTypeNode(Internal.TypeSystem.TypeDesc)
     at System.Collections.Concurrent.ConcurrentDictionary`2[[System.__Canon, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].GetOrAdd(System.__Canon, System.Func`2<System.__Canon,System.__Canon>)
     at ILCompiler.DependencyAnalysis.GenericMethodsHashtableNode.GetGenericMethodsHashtableDependenciesForMethod(DependencyList<ILCompiler.DependencyAnalysis.NodeFactory> ByRef, ILCompiler.DependencyAnalysis.NodeFactory, Internal.TypeSystem.MethodDesc)
     at ILCompiler.DependencyAnalysis.MethodGenericDictionaryNode.ComputeNonRelocationBasedDependencies(ILCompiler.DependencyAnalysis.NodeFactory)
     at ILCompiler.DependencyAnalysis.ObjectNode.GetStaticDependencies(ILCompiler.DependencyAnalysis.NodeFactory)
     at ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[[System.__Canon, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], ILCompiler.DependencyAnalysisFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.__Canon, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].GetStaticDependenciesImpl(ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1<System.__Canon>)
     at ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[[System.__Canon, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], ILCompiler.DependencyAnalysisFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.__Canon, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].ProcessMarkStack()
     at ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[[System.__Canon, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], ILCompiler.DependencyAnalysisFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.__Canon, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].ComputeMarkedNodes()
     at ILCompiler.ILScanner.ILCompiler.IILScanner.Scan()
     at ILCompiler.Program.Run(System.String[])
     at ILCompiler.Program.Main(System.String[])
C:\Users\Dragon\.nuget\packages\microsoft.dotnet.ilcompiler\6.0.0-alpha.1.20552.3\build\Microsoft.NETCore.Native.targets(234,5): error MSB3073: The command ""C:\Users\Dragon\.nuget\packages\runtime.win-x64.microsoft.dotnet.ilcompiler\6.0.0-alpha.1.20552.3\tools\ilc" @"obj\Release\netcoreapp3.1\win-x64\native\API.ilc.rsp"" exited with code -1073741571.
@MichalStrehovsky
Copy link
Member

Try adding:

 <ItemGroup>
    <IlcArg Include="--verbose" />
    <IlcArg Include="--singlethreaded" />
  </ItemGroup>

to your csproj and run publish - it's possible there's a generic recursion going on - there should be a visible pattern in the output from the compiler if that's the case.

@darkguy2008
Copy link
Author

Try adding:

 <ItemGroup>
    <IlcArg Include="--verbose" />
    <IlcArg Include="--singlethreaded" />
  </ItemGroup>

to your csproj and run publish - it's possible there's a generic recursion going on - there should be a visible pattern in the output from the compiler if that's the case.

Thanks for your suggestion - I did so, but I still get the same thing. It seems the arguments are/were ignored?

C:\app>dotnet publish -c Release -o ../../prod/API/bin
Microsoft (R) Build Engine version 16.7.0+7fb82e5b2 for .NET
Copyright (C) Microsoft Corporation. All rights reserved.

  Determining projects to restore...
  All projects are up-to-date for restore.
  API -> C:\app\bin\Release\netcoreapp3.1\win10-x64\API.dll
  Generating compatible native code. To optimize for size or speed, visit https://aka.ms/OptimizeCoreRT
  Stack overflow.
  Repeat 24072 times:
  --------------------------------
     at Internal.TypeSystem.InstantiatedType.IsCanonicalSubtype(Internal.TypeSystem.CanonicalFormKind)
  --------------------------------
     at ILCompiler.DependencyAnalysis.EETypeNode..ctor(ILCompiler.DependencyAnalysis.NodeFactory, Internal.TypeSystem.TypeDesc)
     at ILCompiler.DependencyAnalysis.NodeFactory.CreateNecessaryTypeNode(Internal.TypeSystem.TypeDesc)
     at System.Collections.Concurrent.ConcurrentDictionary`2[[System.__Canon, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].GetOrAdd(System.__Canon, System.Func`2<System.__Canon,System.__Canon>)
     at ILCompiler.DependencyAnalysis.GenericMethodsHashtableNode.GetGenericMethodsHashtableDependenciesForMethod(DependencyList<ILCompiler.DependencyAnalysis.NodeFactory> ByRef, ILCompiler.DependencyAnalysis.NodeFactory, Internal.TypeSystem.MethodDesc)
     at ILCompiler.DependencyAnalysis.MethodGenericDictionaryNode.ComputeNonRelocationBasedDependencies(ILCompiler.DependencyAnalysis.NodeFactory)
     at ILCompiler.DependencyAnalysis.ObjectNode.GetStaticDependencies(ILCompiler.DependencyAnalysis.NodeFactory)
     at ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[[System.__Canon, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], ILCompiler.DependencyAnalysisFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.__Canon, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].GetStaticDependenciesImpl(ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1<System.__Canon>)
     at ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[[System.__Canon, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], ILCompiler.DependencyAnalysisFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.__Canon, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].ProcessMarkStack()
     at ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[[System.__Canon, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], ILCompiler.DependencyAnalysisFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.__Canon, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].ComputeMarkedNodes()
     at ILCompiler.ILScanner.ILCompiler.IILScanner.Scan()
     at ILCompiler.Program.Run(System.String[])
     at ILCompiler.Program.Main(System.String[])
C:\Users\Dragon\.nuget\packages\microsoft.dotnet.ilcompiler\6.0.0-alpha.1.20552.3\build\Microsoft.NETCore.Native.targets(234,5): error MSB3073: The command ""C:\Users\Dragon\.nuget\packages\runtime.win-x64.microsoft.dotnet.ilcompiler\6.0.0-alpha.1.20552.3\tools\ilc" @"obj\Release\netcoreapp3.1\win10-x64\native\API.ilc.rsp"" exited with code -1073741571. [C:\app\API.csproj]

This is my csproj file:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <RuntimeIdentifier>win10-x64</RuntimeIdentifier>
    <PublishSingleFile>true</PublishSingleFile>
  </PropertyGroup>

  <ItemGroup>
    <IlcArg Include="--verbose" />
    <IlcArg Include="--singlethreaded" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.DotNet.ILCompiler" Version="6.0.0-*" />
    <PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" />
    <PackageReference Include="Rotativa.AspNetCore" Version="1.2.0-beta" />
    <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="3.1.2" />
  </ItemGroup>

</Project>

@darkguy2008
Copy link
Author

@MichalStrehovsky I think I may have found something - although maybe not related? Still, a bare console app doesn't compile so I think it may be related. I made a small repro where you can reproduce a similar issue. Maybe it's not compatible with .NET Core 3.1?

https://github.com/darkguy2008/dotnet-runtimelab-issue-283

@MichalStrehovsky
Copy link
Member

Still, a bare console app doesn't compile so I think it may be related.

The output.log in the repo indicates it did compile, but failed to run linker.

Do you have Visual C++ support installed in VS? We need the C runtime libraries.

Try dotnet publish -c Debug instead of -c Release - the logging only happens once we're compiling the Release configuration seems to be running out of stack during pre-compilation analysis.

@MichalStrehovsky MichalStrehovsky added the area-NativeAOT-coreclr .NET runtime optimized for ahead of time compilation label Nov 4, 2020
@darkguy2008
Copy link
Author

darkguy2008 commented Nov 4, 2020

Hello again :) thanks for your reply!

Do you have Visual C++ support installed in VS? We need the C runtime libraries.

Yes, I assume I had those installed when I installed Node.js which installs the VS 2017 Build Tools, right? This is a fresh Windows LTSC install. I also have all the runtimes, installed them from here: https://www.techpowerup.com/download/visual-c-redistributable-runtime-package-all-in-one/ . Since I'm mainly developing on .NET Core I'm avoiding the need to have a full VS install on my machine... considering I have the build tools already, it should be enough, right?

Try dotnet publish -c Debug instead of -c Release - the logging only happens once we're compiling the Release configuration seems to be running out of stack during pre-compilation analysis.

Just did. Same output as well.

So what I did now is to open a "Developer Command Prompt for VS 2017" and ran the dotnet commands from there. Running it from stock says the target machine (x86) was incompatible (x64) so what I did was to open a normal command prompt and run C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars64.bat. Then I ran the same dotnet publish -c Debug command as suggested and got the same output (repo has been updated with the latest logfiles).

Interestingly, I decided to run the linker against the file shown in the log and I get this:

C:\_git\dotnet-runtimelab-issue-283>link "obj\x64\Debug\netcoreapp3.1\win10-x64\native\link.rsp"
Microsoft (R) Incremental Linker Version 14.16.27043.0
Copyright (C) Microsoft Corporation.  All rights reserved.

obj\x64\Debug\netcoreapp3.1\win10-x64\native\link.rsp : fatal error LNK1107: invalid or corrupt file: cannot read at 0x33B

Edit:
So I read that file, it's text. Looking at the 0x33B address, that's EOF 😐

image

The file is like this:

"obj\x64\Debug\netcoreapp3.1\win10-x64\native\app.obj"
/OUT:"bin\x64\Debug\netcoreapp3.1\win10-x64\native\app.exe"
"obj\x64\Debug\netcoreapp3.1\win10-x64\native\app.res"
"C:\Users\Dragon\.nuget\packages\runtime.win-x64.microsoft.dotnet.ilcompiler\6.0.0-alpha.1.20552.3\sdk\bootstrapper.lib"
"C:\Users\Dragon\.nuget\packages\runtime.win-x64.microsoft.dotnet.ilcompiler\6.0.0-alpha.1.20552.3\sdk\Runtime.lib"
"kernel32.lib"
"ntdll.lib"
"user32.lib"
"gdi32.lib"
"winspool.lib"
"comdlg32.lib"
"advapi32.lib"
"shell32.lib"
"ole32.lib"
"oleaut32.lib"
"uuid.lib"
"bcrypt.lib"
"normaliz.lib"
"crypt32.lib"
/NOLOGO /MANIFEST:NO
/DEBUG
/INCREMENTAL:NO
/SUBSYSTEM:CONSOLE
/ENTRY:wmainCRTStartup
/NATVIS:"C:\Users\Dragon\.nuget\packages\microsoft.dotnet.ilcompiler\6.0.0-alpha.1.20552.3\build\CoreRTNatVis.natvis"

Edit 2:
Running those commands manually from the same VS2017 prompt gives me the same output from the logfile:

C:\_git\dotnet-runtimelab-issue-283>link "obj\x64\Debug\netcoreapp3.1\win10-x64\native\app.obj" /OUT:"bin\x64\Debug\netcoreapp3.1\win10-x64\native\app.exe" "obj\x64\Debug\netcoreapp3.1\win10-x64\native\app.res" "C:\Users\Dragon\.nuget\packages\runtime.win-x64.microsoft.dotnet.ilcompiler\6.0.0-alpha.1.20552.3\sdk\bootstrapper.lib" "C:\Users\Dragon\.nuget\packages\runtime.win-x64.microsoft.dotnet.ilcompiler\6.0.0-alpha.1.20552.3\sdk\Runtime.lib" "kernel32.lib" "ntdll.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "bcrypt.lib" "normaliz.lib" "crypt32.lib" /NOLOGO /MANIFEST:NO /DEBUG /INCREMENTAL:NO /SUBSYSTEM:CONSOLE /ENTRY:wmainCRTStartup /NATVIS:"C:\Users\Dragon\.nuget\packages\microsoft.dotnet.ilcompiler\6.0.0-alpha.1.20552.3\build\CoreRTNatVis.natvis"
Runtime.lib(event.obj) : error LNK2001: unresolved external symbol __dyn_tls_on_demand_init
Runtime.lib(stressLog.obj) : error LNK2001: unresolved external symbol __dyn_tls_on_demand_init
Runtime.lib(StackFrameIterator.obj) : error LNK2001: unresolved external symbol __dyn_tls_on_demand_init
Runtime.lib(startup.obj) : error LNK2001: unresolved external symbol __dyn_tls_on_demand_init
Runtime.lib(RestrictedCallouts.obj) : error LNK2001: unresolved external symbol __dyn_tls_on_demand_init
Runtime.lib(eventtrace.obj) : error LNK2001: unresolved external symbol __dyn_tls_on_demand_init
Runtime.lib(RuntimeInstance.obj) : error LNK2001: unresolved external symbol __dyn_tls_on_demand_init
Runtime.lib(thread.obj) : error LNK2001: unresolved external symbol __dyn_tls_on_demand_init
Runtime.lib(FinalizerHelpers.obj) : error LNK2001: unresolved external symbol __dyn_tls_on_demand_init
Runtime.lib(gcrhenv.obj) : error LNK2001: unresolved external symbol __dyn_tls_on_demand_init
Runtime.lib(EHHelpers.obj) : error LNK2001: unresolved external symbol __dyn_tls_on_demand_init
Runtime.lib(MiscHelpers.obj) : error LNK2001: unresolved external symbol __dyn_tls_on_demand_init
Runtime.lib(GCHelpers.obj) : error LNK2001: unresolved external symbol __dyn_tls_on_demand_init
Runtime.lib(threadstore.obj) : error LNK2001: unresolved external symbol __dyn_tls_on_demand_init
Runtime.lib(event.obj) : error LNK2001: unresolved external symbol __tls_guard
Runtime.lib(stressLog.obj) : error LNK2001: unresolved external symbol __tls_guard
Runtime.lib(StackFrameIterator.obj) : error LNK2001: unresolved external symbol __tls_guard
Runtime.lib(startup.obj) : error LNK2001: unresolved external symbol __tls_guard
Runtime.lib(RestrictedCallouts.obj) : error LNK2001: unresolved external symbol __tls_guard
Runtime.lib(eventtrace.obj) : error LNK2001: unresolved external symbol __tls_guard
Runtime.lib(RuntimeInstance.obj) : error LNK2001: unresolved external symbol __tls_guard
Runtime.lib(thread.obj) : error LNK2001: unresolved external symbol __tls_guard
Runtime.lib(FinalizerHelpers.obj) : error LNK2001: unresolved external symbol __tls_guard
Runtime.lib(gcrhenv.obj) : error LNK2001: unresolved external symbol __tls_guard
Runtime.lib(EHHelpers.obj) : error LNK2001: unresolved external symbol __tls_guard
Runtime.lib(MiscHelpers.obj) : error LNK2001: unresolved external symbol __tls_guard
Runtime.lib(GCHelpers.obj) : error LNK2001: unresolved external symbol __tls_guard
Runtime.lib(threadstore.obj) : error LNK2001: unresolved external symbol __tls_guard
Runtime.lib(threadstore.obj) : error LNK2001: unresolved external symbol __GSHandlerCheck_EH4
Runtime.lib(eventtrace.obj) : error LNK2001: unresolved external symbol __GSHandlerCheck_EH4
bin\x64\Debug\netcoreapp3.1\win10-x64\native\app.exe : fatal error LNK1120: 3 unresolved externals

What could be wrong?

@MichalStrehovsky
Copy link
Member

Do you have VS2019? Seems like VS2017 will no longer work.

See e.g. google/filament#2142 that has the same missing symbols.

@darkguy2008
Copy link
Author

Do you have VS2019? Seems like VS2017 will no longer work.

See e.g. google/filament#2142 that has the same missing symbols.

Thanks for your reply! I didn't, so I installed the VS2019 build tools. That helped to compile the console app with CoreRT, so that's one less issue (although unrelated, but it could be helpful to put in the documentation somewhere that the VS2019 Build Tools are required and that the VS2017 Build Tools won't work at all).

Now, I managed to find the culprit and I've updated my repo. It seems to be when you import (and use) the Pomelo.EntityFrameworkCore.MySql reference. So you can try to debug using that repo, I managed to reproduce the issue there.

Hope this can be useful. I'll be waiting. Thanks! :D

@darkguy2008
Copy link
Author

Hello! Any news on this issue? It's still happening :(

@jkotas
Copy link
Member

jkotas commented Nov 14, 2020

It seems to be when you import (and use) the Pomelo.EntityFrameworkCore.MySql reference.

Entity Framework is not compatible with Native AOT: dotnet/efcore#20393. The fix was rejected by the maintainers: dotnet/efcore#20494 .

@darkguy2008
Copy link
Author

darkguy2008 commented Nov 14, 2020

@jkotas wow, I can't believe that such a fix to an error was rejected like that. I don't get how that PR is unmaintainable when it actually fixes a big problem (and to be honest, I've rarely seen Core's source code and I could understand that code!! (though, I agree it could've been refactored a bit)).

I don't think that the .NET team understands the importance of adding CoreRT support to a very important library used in most, if not all, apps that have a database backend, where the native compilation can add a lot of protection to the source code to prying eyes and other people with bad intentions. At least it'll make it harder for them.

It's too bad really. I agree that supporting this in 3.1 might not be a good idea, but what about 5.0 ? It has just been released... maybe for 5.1?

@darkguy2008
Copy link
Author

darkguy2008 commented Nov 16, 2020

So whatever you guys did (if applicable) now, I managed to get the repo app to correctly compile on Linux and Windows, generating a single native .EXE using EF (as of date)

I just had to add:

  <PropertyGroup>
    <RootAllApplicationAssemblies>false</RootAllApplicationAssemblies>
  </PropertyGroup>

And voilá, it worked!

I took that idea from here. Interestingly, also suggested by you @MichalStrehovsky : dotnet/corert#7333 (comment)

While I'm unaware of the internals, I tried to open it with ILSpy and it didn't work, so that's enough for me :) . I'm leaving the repo open though, as I assume I shouldn't be using that flag and the bug should be fixed... but it works for me :)


False alarm though, I applied this fix to the real app I'm working on and it's still happening :(

@hez2010
Copy link

hez2010 commented Feb 21, 2021

I've sent another PR dotnet/efcore#24211 which won't reduce the maintainability like dotnet/efcore#20494 to fix this.

Hoping that this time they could accept the fix.

@roji
Copy link
Member

roji commented Feb 22, 2021

FYI dotnet/efcore#24211 has been merged for EF Core 6.0, thanks @hez2010!

@roji
Copy link
Member

roji commented Feb 22, 2021

@MichalStrehovsky @jkotas I think this can be closed now.

@darkguy2008
Copy link
Author

@MichalStrehovsky @jkotas I think this can be closed now.

Thanks @roji and @hez2010 !! Amazing work!

So this means it's ready now? Or do we have to wait for a binary release of EF6? Or is this in the preview release? Do I have to build EF myself? Sorry for all the questions but I'm wondering how to test this to at least confirm it can be closed, if possible :)

@roji
Copy link
Member

roji commented Feb 22, 2021

@darkguy2008 this should go out as part of EF Core 6.0.0-preview2 - but you can start testing it with our daily builds (probably starting tomorrow).

It's highly recommended that people give this a thorough test; after all, we're not sure that this was the only instance of infinite generic recursion, or other things that may block AOT. If further issues are raised early enough, we can take hopefully take care of them for the 6.0 release.

@jkotas jkotas closed this as completed Feb 22, 2021
@hez2010
Copy link

hez2010 commented Feb 23, 2021

@darkguy2008 There're still some type loading related issues, but it can be resolved by creating a rd.xml.
Also, LazyProxies won't support NativeAOT due to its usage to il emit.

@roji
Copy link
Member

roji commented Feb 23, 2021

@hez2010 yeah. Note that it's definitely possible to set up lazy loading without the proxies (so this should be fine with AOT), but the proxies are probably something that never will be. On the other hand, we generally discourage lazy loading so I won't get too hung up on it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-NativeAOT-coreclr .NET runtime optimized for ahead of time compilation
Projects
None yet
Development

No branches or pull requests

5 participants