dotnet / source-build

A repository to track efforts to produce a source tarball of the .NET Core SDK and all its components
MIT License
265 stars 130 forks source link

[main] Alpine tests fail loading ld-linux-x86-64.so.2 #4585

Closed mthalman closed 1 week ago

mthalman commented 2 weeks ago

Example build (internal link)

Failed to load /vmr/artifacts/bin/Microsoft.DotNet.SourceBuild.SmokeTests/Release/projects-202408281050065243/BasicScenarioTests_Console_VB/bin/publish/libhostpolicy.so, error: Error loading shared library ld-linux-x86-64.so.2: No such file or directory (needed by /vmr/artifacts/bin/Microsoft.DotNet.SourceBuild.SmokeTests/Release/projects-202408281050065243/BasicScenarioTests_Console_VB/bin/publish/libhostpolicy.so)
An error occurred while loading required library libhostpolicy.so from [/vmr/artifacts/bin/Microsoft.DotNet.SourceBuild.SmokeTests/Release/projects-202408281050065243/BasicScenarioTests_Console_VB/bin/publish/]
  Stack Trace:
     at Microsoft.DotNet.SourceBuild.SmokeTests.ExecuteHelper.ValidateExitCode(ValueTuple`3 result, Int32 expectedExitCode) in /vmr/test/Microsoft.DotNet.SourceBuild.SmokeTests/ExecuteHelper.cs:line 129
   at Microsoft.DotNet.SourceBuild.SmokeTests.DotNetHelper.ExecuteCmd(String args, String workingDirectory, Action`1 processConfigCallback, Nullable`1 expectedExitCode, Int32 millisecondTimeout) in /vmr/test/Microsoft.DotNet.SourceBuild.SmokeTests/DotNetHelper.cs:line 110
   at Microsoft.DotNet.SourceBuild.SmokeTests.DotNetHelper.ExecutePublish(String projectName, DotNetTemplate template, Nullable`1 selfContained, String rid, Boolean trimmed, Boolean readyToRun) in /vmr/test/Microsoft.DotNet.SourceBuild.SmokeTests/DotNetHelper.cs:line 201
   at Microsoft.DotNet.SourceBuild.SmokeTests.TestScenario.Execute(DotNetHelper dotNetHelper) in /vmr/test/Microsoft.DotNet.SourceBuild.SmokeTests/TestScenario.cs:line 62
   at Microsoft.DotNet.SourceBuild.SmokeTests.BasicScenarioTests.VerifyScenario(TestScenario scenario) in /vmr/test/Microsoft.DotNet.SourceBuild.SmokeTests/BasicScenarioTests.cs:line 24
   at InvokeStub_BasicScenarioTests.VerifyScenario(Object, Span`1)
   at System.Reflection.MethodBaseInvoker.InvokeWithOneArg(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
  Standard Output Messages:
 Executing: /vmr/artifacts/bin/Microsoft.DotNet.SourceBuild.SmokeTests/Release/extracted-sdk/dotnet new console --name BasicScenarioTests_Console_VB --output /vmr/artifacts/bin/Microsoft.DotNet.SourceBuild.SmokeTests/Release/projects-202408281050065243/BasicScenarioTests_Console_VB --language "VB" 
 Executing: /vmr/artifacts/bin/Microsoft.DotNet.SourceBuild.SmokeTests/Release/extracted-sdk/dotnet build /bl:/vmr/artifacts/TestResults/Release/BasicScenarioTests_Console_VB-build.binlog
 Executing: /vmr/artifacts/bin/Microsoft.DotNet.SourceBuild.SmokeTests/Release/extracted-sdk/dotnet run /bl:/vmr/artifacts/TestResults/Release/BasicScenarioTests_Console_VB-run.binlog
 Executing: /vmr/artifacts/bin/Microsoft.DotNet.SourceBuild.SmokeTests/Release/extracted-sdk/dotnet publish --self-contained false /bl:/vmr/artifacts/TestResults/Release/BasicScenarioTests_Console_VB-publish.binlog -o /vmr/artifacts/bin/Microsoft.DotNet.SourceBuild.SmokeTests/Release/projects-202408281050065243/BasicScenarioTests_Console_VB/bin/publish
 Executing: /vmr/artifacts/bin/Microsoft.DotNet.SourceBuild.SmokeTests/Release/extracted-sdk/dotnet BasicScenarioTests_Console_VB.dll
 Executing: /vmr/artifacts/bin/Microsoft.DotNet.SourceBuild.SmokeTests/Release/extracted-sdk/dotnet publish --self-contained true -r alpine.3.19-x64 /bl:/vmr/artifacts/TestResults/Release/BasicScenarioTests_Console_VB-publish-self-contained-alpine.3.19-x64.binlog -o /vmr/artifacts/bin/Microsoft.DotNet.SourceBuild.SmokeTests/Release/projects-202408281050065243/BasicScenarioTests_Console_VB/bin/publish
 Executing: /vmr/artifacts/bin/Microsoft.DotNet.SourceBuild.SmokeTests/Release/extracted-sdk/dotnet BasicScenarioTests_Console_VB.dll
 Executing: /vmr/artifacts/bin/Microsoft.DotNet.SourceBuild.SmokeTests/Release/extracted-sdk/dotnet publish --self-contained true -r linux-x64 /bl:/vmr/artifacts/TestResults/Release/BasicScenarioTests_Console_VB-publish-self-contained-linux-x64.binlog -o /vmr/artifacts/bin/Microsoft.DotNet.SourceBuild.SmokeTests/Release/projects-202408281050065243/BasicScenarioTests_Console_VB/bin/publish
 Executing: /vmr/artifacts/bin/Microsoft.DotNet.SourceBuild.SmokeTests/Release/extracted-sdk/dotnet BasicScenarioTests_Console_VB.dll

This is a regression caused by https://github.com/dotnet/sdk/pull/42969

Winniexu01 commented 2 weeks ago

Alpine320_Online_MsftSdk_x64 (internal Microsoft link) tests also failed with the same issue:

Failed to load /vmr/artifacts/bin/Microsoft.DotNet.SourceBuild.SmokeTests/Release/projects-202408290823141750/BasicScenarioTests_Console_VB/bin/publish/libhostpolicy.so, error: Error loading shared library ld-linux-x86-64.so.2: No such file or directory (needed by /vmr/artifacts/bin/Microsoft.DotNet.SourceBuild.SmokeTests/Release/projects-202408290823141750/BasicScenarioTests_Console_VB/bin/publish/libhostpolicy.so)
An error occurred while loading required library libhostpolicy.so from [/vmr/artifacts/bin/Microsoft.DotNet.SourceBuild.SmokeTests/Release/projects-202408290823141750/BasicScenarioTests_Console_VB/bin/publish/]
MichaelSimons commented 1 week ago

@mthalman - what is the fix here? Does SB need to be re-bootstrapped?

mthalman commented 1 week ago

Looks like the wrong RID is being used. From the test output: publish --self-contained true -r linux-x64. It should be using linux-musl-x64 instead.

mthalman commented 1 week ago

I don't understand how this ever worked. It's always set the RID to linux-x64 even in past versions when this was working: https://github.com/dotnet/dotnet/blob/0d9fcc105f4c482ebde73e3b513053a53a9792a1/test/Microsoft.DotNet.SourceBuild.SmokeTests/TestScenario.cs#L62

MichaelSimons commented 1 week ago

Did it work because is was just publishing linux-x64 from an alpine alpine environment, it was not actually running the published application? Now something changes which bundles linker library with the app?

mthalman commented 1 week ago

It does run the application and always has in past .NET versions. It's really weird. I tried changing the RID to linux-musl-x64 and it worked. Interestingly, it also worked in the CentOS leg.