dotnet / dotnet/sdk

'dotnet tool install' command fails for platform linux/arm64 - Unhandled exception: System.NullReferenceException: Object reference not set to an instance of an object.

Open
#44,051 5 comments 0 reactions 1 assignee Claimed by @joeloff View on GitHub
Area-Tools untriaged
Dominant language
C#
Stars
3.2k
Forks
1.3k
PR merge metrics
PR metrics pending

Description

Hello,

First of all, I want to note that about 5 weeks ago, the problem was not observed.
But something has changed.

Dockerfile (part of):
```FROM mcr.microsoft.com/dotnet/sdk:${CORE_VERSION:-8.0}
RUN dotnet --info \
&& dotnet tool install --global dotnet-sonarscanner \
&& dotnet tool install --global coverlet.console --version 6.0.0 \
&& dotnet tool install --global dotnet-gcdump --version 8.0.452401 \
&& dotnet tool install --global trx2junit \
&& ln -s ~/.dotnet/tools/trx2junit /usr/local/bin/trx2junit
```
Gitlab pipeline (part of):
```
image: docker:25.0.5
services:
- name: docker-dind:25.0.5
alias: docker
```
Gitlab runner host Host:
```
PLATFORM_ID="platform:al2023"
PRETTY_NAME="Amazon Linux 2023.5.20240819"
CPU Model name: AMD EPYC 7571
```
Command to build image:
```
docker buildx build --build_arg ... --platform linux/amd64,linux/arm64 -t ... --push --progress plain -f ... .
```

platform linux/amd64 succeed:

```text
#13 [linux/amd64 4/4] RUN dotnet --info && dotnet tool install --global dotnet-sonarscanner && dotnet tool install --global coverlet.console --version 6.0.0 && dotnet tool install --global dotnet-gcdump --version 8.0.452401 && dotnet tool install --global trx2junit && ln -s ~/.dotnet/tools/trx2junit /usr/local/bin/trx2junit
#13 0.568 .NET SDK:
#13 0.568 Version: 8.0.403
#13 0.568 Commit: c64aa40a71
#13 0.688 Workload version: 8.0.400-manifests.18f19b92
#13 0.690 MSBuild version: 17.11.9+a69bbaaf5
#13 0.690
#13 0.690 Runtime Environment:
#13 0.692 OS Name: debian
#13 0.692 OS Version: 12
#13 0.697 OS Platform: Linux
#13 0.710 RID: linux-x64
#13 0.710 Base Path: /usr/share/dotnet/sdk/8.0.403/
#13 0.710
#13 0.710 .NET workloads installed:
#13 0.715 Configured to use loose manifests when installing new manifests.
#13 0.715 There are no installed workloads to display.
#13 0.716
#13 0.716 Host:
#13 0.716 Version: 8.0.10
#13 0.716 Architecture: x64
#13 0.716 Commit: 81cabf2857
#13 0.716
#13 0.716 .NET SDKs installed:
#13 0.716 8.0.403 [/usr/share/dotnet/sdk]
#13 0.716
#13 0.716 .NET runtimes installed:
#13 0.716 Microsoft.AspNetCore.App 8.0.10 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
#13 0.716 Microsoft.NETCore.App 8.0.10 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
#13 0.716
#13 0.716 Other architectures found:
#13 0.716 None
#13 0.716
#13 0.716 Environment variables:
#13 0.716 Not set
#13 0.716
#13 0.716 global.json file:
#13 0.716 Not found
#13 0.716
#13 0.716 Learn more:
#13 0.716 https://aka.ms/dotnet/info
#13 0.716
#13 0.716 Download .NET:
#13 0.716 https://aka.ms/dotnet/download
#13 3.725 You can invoke the tool using the following command: dotnet-sonarscanner
#13 3.725 Tool 'dotnet-sonarscanner' (version '9.0.0') was successfully installed.
#13 5.652 You can invoke the tool using the following command: coverlet
#13 5.652 Tool 'coverlet.console' (version '6.0.0') was successfully installed.
```

platform linux/arm64 failed:

```text
#14 [linux/arm64 4/4] RUN dotnet --info && dotnet tool install --global dotnet-sonarscanner && dotnet tool install --global coverlet.console --version 6.0.0 && dotnet tool install --global dotnet-gcdump --version 8.0.452401 && dotnet tool install --global trx2junit && ln -s ~/.dotnet/tools/trx2junit /usr/local/bin/trx2junit
#14 6.996 .NET SDK:
#14 6.999 Version: 8.0.403
#14 6.999 Commit: c64aa40a71
#14 8.578 Workload version: 8.0.400-manifests.18f19b92
#14 8.590 MSBuild version: 17.11.9+a69bbaaf5
#14 8.591
#14 8.592 Runtime Environment:
#14 8.622 OS Name: debian
#14 8.622 OS Version: 12
#14 8.681 OS Platform: Linux
#14 8.848 RID: linux-arm64
#14 8.850 Base Path: /usr/share/dotnet/sdk/8.0.403/
#14 8.850
#14 8.851 .NET workloads installed:
#14 8.906 Configured to use loose manifests when installing new manifests.
#14 8.906 There are no installed workloads to display.
#14 8.954
#14 8.954 Host:
#14 8.954 Version: 8.0.10
#14 8.954 Architecture: arm64
#14 8.954 Commit: 81cabf2857
#14 8.954
#14 8.954 .NET SDKs installed:
#14 8.954 8.0.403 [/usr/share/dotnet/sdk]
#14 8.954
#14 8.954 .NET runtimes installed:
#14 8.954 Microsoft.AspNetCore.App 8.0.10 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
#14 8.954 Microsoft.NETCore.App 8.0.10 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
#14 8.954
#14 8.954 Other architectures found:
#14 8.954 None
#14 8.954
#14 8.954 Environment variables:
#14 8.954 Not set
#14 8.954
#14 8.954 global.json file:
#14 8.954 Not found
#14 8.954
#14 8.954 Learn more:
#14 8.954 https://aka.ms/dotnet/info
#14 8.954
#14 8.954 Download .NET:
#14 8.954 https://aka.ms/dotnet/download
#14 38.21 Unhandled exception: System.NullReferenceException: Object reference not set to an instance of an object.
#14 38.45 at CreateNuGet.Protocol.Model.RegistrationIndex()
#14 38.45 at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateNewObject(JsonReader reader, JsonObjectContract objectContract, JsonProperty containerMember, JsonProperty containerProperty, String id, Boolean& createdFromNonDefaultCreator)
#14 38.45 at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
#14 38.45 at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
#14 38.45 at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
#14 38.45 at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
#14 38.45 at Newtonsoft.Json.JsonSerializer.Deserialize[T](JsonReader reader)
#14 38.45 at NuGet.Protocol.PackageMetadataResourceV3.DeserializeStreamDataAsync[T](Stream stream, CancellationToken token)
#14 38.45 at NuGet.Protocol.PackageMetadataResourceV3.<>c__DisplayClass9_0.<b__0>d.MoveNext()
#14 38.45 --- End of stack trace from previous location ---
#14 38.45 at NuGet.Protocol.HttpSource.<>c__DisplayClass15_0`1.<b__0>d.MoveNext()
#14 38.45 --- End of stack trace from previous location ---
#14 38.45 at NuGet.Common.ConcurrencyUtilities.ExecuteWithFileLockedAsync[T](String filePath, Func`2 action, CancellationToken token)
#14 38.45 at NuGet.Common.ConcurrencyUtilities.ExecuteWithFileLockedAsync[T](String filePath, Func`2 action, CancellationToken token)
#14 38.45 at NuGet.Protocol.HttpSource.GetAsync[T](HttpSourceCachedRequest request, Func`2 processAsync, ILogger log, CancellationToken token)
#14 38.45 at NuGet.Protocol.PackageMetadataResourceV3.LoadRegistrationIndexAsync(HttpSource httpSource, Uri registrationUri, String packageId, SourceCacheContext cacheContext, Func`2 processAsync, ILogger log, CancellationToken token)
#14 38.45 at NuGet.Protocol.PackageMetadataResourceV3.GetMetadataAsync(String packageId, Boolean includePrerelease, Boolean includeUnlisted, VersionRange range, SourceCacheContext sourceCacheContext, ILogger log, CancellationToken token)
#14 38.45 at NuGet.Protocol.PackageMetadataResourceV3.GetMetadataAsync(String packageId, Boolean includePrerelease, Boolean includeUnlisted, SourceCacheContext sourceCacheContext, ILogger log, CancellationToken token)
#14 38.45 at Microsoft.DotNet.Cli.NuGetPackageDownloader.NuGetPackageDownloader.GetPackageMetadataAsync(PackageSource source, String packageIdentifier, Boolean includePrerelease, Boolean includeUnlisted, CancellationToken cancellationToken)
#14 38.45 at Microsoft.DotNet.Cli.NuGetPackageDownloader.NuGetPackageDownloader.GetMatchingVersionInternalAsync(String packageIdentifier, IEnumerable`1 packageSources, VersionRange versionRange, CancellationToken cancellationToken)
#14 38.45 at Microsoft.DotNet.Cli.NuGetPackageDownloader.NuGetPackageDownloader.GetBestPackageVersionAsync(PackageId packageId, VersionRange versionRange, PackageSourceLocation packageSourceLocation)
#14 38.45 at Microsoft.DotNet.Cli.ToolPackage.ToolPackageDownloader.<>c__DisplayClass8_0.b__0()
#14 38.45 at Microsoft.DotNet.Cli.TransactionalAction.Run[T](Func`1 action, Action commit, Action rollback)
#14 38.45 at Microsoft.DotNet.Tools.Tool.Install.ToolInstallGlobalOrToolPathCommand.<>c__DisplayClass23_0.b__1()
#14 38.45 at Microsoft.DotNet.Tools.Tool.Install.ToolInstallGlobalOrToolPathCommand.RunWithHandlingInstallError(Action installAction, PackageId packageId)
#14 38.45 at Microsoft.DotNet.Tools.Tool.Install.ToolInstallGlobalOrToolPathCommand.ExecuteInstallCommand(PackageId packageId)
#14 38.45 at Microsoft.DotNet.Tools.Tool.Install.ToolInstallGlobalOrToolPathCommand.Execute()
#14 38.45 at System.CommandLine.Invocation.InvocationPipeline.Invoke(ParseResult parseResult)
#14 38.45 at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, TimeSpan startupTime, ITelemetry telemetryClient)
#14 ERROR: process "/bin/sh -c dotnet --info && dotnet tool install --global dotnet-sonarscanner && dotnet tool install --global coverlet.console --version 6.0.0 && dotnet tool install --global dotnet-gcdump --version 8.0.452401 && dotnet tool install --global trx2junit && ln -s ~/.dotnet/tools/trx2junit /usr/local/bin/trx2junit" did not complete successfully: exit code: 1
------
> [linux/arm64 4/4] RUN dotnet --info && dotnet tool install --global dotnet-sonarscanner && dotnet tool install --global coverlet.console --version 6.0.0 && dotnet tool install --global dotnet-gcdump --version 8.0.452401 && dotnet tool install --global trx2junit && ln -s ~/.dotnet/tools/trx2junit /usr/local/bin/trx2junit:
38.45 at Microsoft.DotNet.Cli.NuGetPackageDownloader.NuGetPackageDownloader.GetMatchingVersionInternalAsync(String packageIdentifier, IEnumerable`1 packageSources, VersionRange versionRange, CancellationToken cancellationToken)
38.45 at Microsoft.DotNet.Cli.NuGetPackageDownloader.NuGetPackageDownloader.GetBestPackageVersionAsync(PackageId packageId, VersionRange versionRange, PackageSourceLocation packageSourceLocation)
38.45 at Microsoft.DotNet.Cli.ToolPackage.ToolPackageDownloader.<>c__DisplayClass8_0.b__0()
38.45 at Microsoft.DotNet.Cli.TransactionalAction.Run[T](Func`1 action, Action commit, Action rollback)
38.45 at Microsoft.DotNet.Tools.Tool.Install.ToolInstallGlobalOrToolPathCommand.<>c__DisplayClass23_0.b__1()
38.45 at Microsoft.DotNet.Tools.Tool.Install.ToolInstallGlobalOrToolPathCommand.RunWithHandlingInstallError(Action installAction, PackageId packageId)
38.45 at Microsoft.DotNet.Tools.Tool.Install.ToolInstallGlobalOrToolPathCommand.ExecuteInstallCommand(PackageId packageId)
38.45 at Microsoft.DotNet.Tools.Tool.Install.ToolInstallGlobalOrToolPathCommand.Execute()
38.45 at System.CommandLine.Invocation.InvocationPipeline.Invoke(ParseResult parseResult)
38.45 at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, TimeSpan startupTime, ITelemetry telemetryClient)
```

Could you help to solve this issue?

Regards,
Serhiy.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.