Closed MichalStrehovsky closed 2 years ago
I must be doing something wrong - the above repro steps don't hang. ILC successfully process the input in about 20 seconds (maybe a tiny bit more). This is on very recent main
branch - no local changes.
Tried enabling the test in #73104.
The CI has been locked up like this for 20 minutes.
System.Runtime.Serialization.Formatters.Tests -> /__w/1/s/artifacts/bin/System.Runtime.Serialization.Formatters.Tests/Release/net7.0-linux/System.Runtime.Serialization.Formatters.Tests.dll
Optimizing assemblies for size may change the behavior of the app. Be sure to test after publishing. See: https://aka.ms/dotnet-illink
Generating compatible native code. To optimize for size or speed, visit https://aka.ms/OptimizeNativeAOT
It's possible the repro steps don't repro it. I'm still trying to figure out what is the right way to dotnet build a single test. What I wrote above has worked for me in the past but maybe it requires some previous artifacts leftover from a previous build attempt. Not sure.
What I always do locally is I change the definition of SmokeTestProject
in src/libraries/tests.proj to only have the test of interest to me and run build.cmd libs.tests -rc Debug -lc Release /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:UseNativeAotCoreLib=true
. It's not nice but it works :/
It's probably not a lockup - I just don't have enough patience. Extracted a repro to https://github.com/dotnet/linker/pull/2977.
It's possible this is an illinker bug, but I'm not ready to spend time extracting an IL Linker repro:
To repro, build the repo how you build it (e.g.
build.cmd clr.aot+libs -rc Debug -lc Release
). Then:Once it tells you it's generating native code, taskkill ilc.exe and find the response file to invoke ilc.exe under artifacts\obj\System.Runtime.Serialization.Formatters.Tests\Release\net7.0-windows\native. Open src\coreclr\tools\aot\ilc.sln in VS, set configuration to the one you built (
Debug
in my case from the-rc Debug
argument), and set the response file as the command line argument. You might want to append--parallelism:1
to make things not multithreaded.The method we're stuck on is
[System.Runtime.Serialization.Formatters.Tests]System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests.SerializableObjects()
Example callstack:
Cc @vitek-karas @sbomer