diagnostics
diagnostics copied to clipboard
dotnet symbols halts downloads on various DLLs
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
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?
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.
@hoyosjs I'm hitting this while attempting to download the arm64 symbols from a recent VMR build.
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).