diagnostics icon indicating copy to clipboard operation
diagnostics copied to clipboard

dotnet symbols halts downloads on various DLLs

Open danielo-unity3d opened this issue 11 months ago • 2 comments

Description

We wish to download any and all symbol files for our published application, in advance of a profiling run, but some of the symbols encounter issues, and the tool aborts with, for example, the following error:

ERROR: Unable to read beyond the end of the stream.

There is a workaround: we loop on each and every DLL, and ignore the errors as we go, but it would be nice if the tool didn't abort when given a wildcard, and some of the DLLs hit issues.

Configuration

Is this related to a specific tool?

dotnet-symbol tool (installed globally)

What OS and version, and what distro if applicable?

Windows 11

> [System.Environment]::OSVersion.Version

Major  Minor  Build  Revision
-----  -----  -----  --------
10     0      26100  0
What is the architecture (x64, x86, ARM, ARM64)?

x64

> [Environment]::Is64BitOperatingSystem  
True
Is it a self-contained published application?

We publish the application for net7.0 (a global.json file with sdk version set to 7.0.400), and we set the PublishReadyToRun flag in our csproj.

What's the output of dotnet info
> dotnet --info
SDK .NET :
 Version:           9.0.101
 Commit:            eedb237549
 Workload version:  9.0.100-manifests.3068a692
 MSBuild version:   17.12.12+1cce77968

Environnement d'exécution :
 OS Name:     Windows
 OS Version:  10.0.26100
 OS Platform: Windows
 RID:         win-x64
 Base Path:   C:\Program Files\dotnet\sdk\9.0.101\

Charges de travail .NET installées :
 [maui-windows]
   Source de l’installation: VS 17.11.35327.3
   Version de manifeste:    9.0.0-rc.2.24503.2/9.0.100-rc.2
   Chemin d'accès au Manifeste:       C:\Program Files\dotnet\sdk-manifests\9.0.100-rc.2\microsoft.net.sdk.maui\9.0.0-rc.2.24503.2\WorkloadManifest.json
   Type d'installation:              Msi

 [android]
   Source de l’installation: VS 17.11.35327.3
   Version de manifeste:    35.0.0-rc.2.152/9.0.100-rc.2
   Chemin d'accès au Manifeste:       C:\Program Files\dotnet\sdk-manifests\9.0.100-rc.2\microsoft.net.sdk.android\35.0.0-rc.2.152\WorkloadManifest.json
   Type d'installation:              Msi

 [maccatalyst]
   Source de l’installation: VS 17.11.35327.3
   Version de manifeste:    18.0.9600-net9-rc2/9.0.100-rc.2
   Chemin d'accès au Manifeste:       C:\Program Files\dotnet\sdk-manifests\9.0.100-rc.2\microsoft.net.sdk.maccatalyst\18.0.9600-net9-rc2\WorkloadManifest.json
   Type d'installation:              Msi

 [ios]
   Source de l’installation: VS 17.11.35327.3
   Version de manifeste:    18.0.9600-net9-rc2/9.0.100-rc.2
   Chemin d'accès au Manifeste:       C:\Program Files\dotnet\sdk-manifests\9.0.100-rc.2\microsoft.net.sdk.ios\18.0.9600-net9-rc2\WorkloadManifest.json
   Type d'installation:              Msi

Configuré pour utiliser loose manifests lors de l’installation de nouveaux manifestes.

Host:
  Version:      9.0.0
  Architecture: x64
  Commit:       9d5a6a9aa4

.NET SDKs installed:
  7.0.410 [C:\Program Files\dotnet\sdk]
  8.0.403 [C:\Program Files\dotnet\sdk]
  8.0.404 [C:\Program Files\dotnet\sdk]
  9.0.101 [C:\Program Files\dotnet\sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 8.0.10 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 8.0.11 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 9.0.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 8.0.10 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 8.0.11 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 9.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 8.0.10 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 8.0.11 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 9.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

Other architectures found:
  x86   [C:\Program Files (x86)\dotnet]
    registered at [HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x86\InstallLocation]

Environment variables:
  Not set

global.json file: <=== this was temporarily removed for experiments
  Not found

Learn more:
  https://aka.ms/dotnet/info

Download .NET:
  https://aka.ms/dotnet/download

Other information

Here is the output of the command:

> dotnet symbol *.dll
Downloading from https://msdl.microsoft.com/download/symbols/
ERROR: Not Found: BouncyCastle.Cryptography.pdb - 'https://msdl.microsoft.com/download/symbols/bouncycastle.cryptography.pdb/1f4d23c744e44bf58a4fc914b3518c1fFFFFFFFF/bouncycastle.cryptography.pdb'
.\clretwrc.pdb already exists, file not written
.\clrgc.pdb already exists, file not written
.\clrjit.pdb already exists, file not written
ERROR: Not Found: CommandLine.pdb - 'https://msdl.microsoft.com/download/symbols/commandline.pdb/c219acf84a704d7bb7d1bdaafb70c358FFFFFFFF/commandline.pdb'
.\coreclr.pdb already exists, file not written
.\hostfxr.pdb already exists, file not written
.\hostpolicy.pdb already exists, file not written
ERROR: Not Found: ICSharpCode.SharpZipLib.pdb - 'https://msdl.microsoft.com/download/symbols/icsharpcode.sharpziplib.pdb/deb1ba28b23e47ec8ff994d0a3ba6c99FFFFFFFF/icsharpcode.sharpziplib.pdb'
ERROR: Unable to read beyond the end of the stream.
ERROR: Unable to read beyond the end of the stream.

The tool aborts (with no error code):

> echo $?
True
> $LastExitCode
0

danielo-unity3d avatar Dec 16 '24 14:12 danielo-unity3d

The Not Found errors are that the symbol files are not on the server. Since for a given dump or set of DLLs in this case, there are always symbol files not found, the exit code is 0 (no failures).

The "ERROR: Unable to read beyond..." error messages are something else like the something about the DLL isn't supported.

We might great more info about the error and the DLL names with the -d option.

Can I get a zip of these DLLs?

mikem8361 avatar Jan 06 '25 21:01 mikem8361

I get the same errors for some DLLs when trying to download symbols for DLLs from .NET runtime, e.g. for "C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\9.0.2\System.CodeDom.dll":

ERROR: Unable to read beyond the end of the stream.

There is no additional information with -d option.

So maybe that can be used to diagnose the error.

matherm-aboehm avatar Feb 17 '25 10:02 matherm-aboehm

@hoyosjs I'm hitting this while attempting to download the arm64 symbols from a recent VMR build.

mmitche avatar May 29 '25 15:05 mmitche

We know that ReadyToRun will mangle either some, or most of, the DLL files (not sure what is occurring TBH). Many issues I might have had were resolved by using PublishReadyToRunEmitSymbols, which produces the symbols for the mangled DLLs (with extension .ni.pdb). So this is more about getting the tool to work past the error, and to continue to try to download the symbols from all the other file (that are untouched by ReadyToRun).

danielo-unity3d avatar May 29 '25 17:05 danielo-unity3d