Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch symbols output to snupkg format #6940

Closed
natemcmaster opened this issue Jan 22, 2019 · 13 comments
Closed

Switch symbols output to snupkg format #6940

natemcmaster opened this issue Jan 22, 2019 · 13 comments
Labels
area-infrastructure Includes: MSBuild projects/targets, build scripts, CI, Installers and shared framework blocked The work on this issue is blocked due to some dependency External This is an issue in a component not contained in this repository. It is open for tracking purposes. question severity-minor This label is used by an internal tool
Milestone

Comments

@natemcmaster
Copy link
Contributor

The .snupgk format is more efficient than the .symbols.nupkg format because it only includes .pdbs. It doesn't also include the .dll files and source code, which are unnecessary in most usages due to source-link and the way .symbols.nupkg files are actually handled by our CI.

Changing formats should be a matter adding <SymbolPackageFormat>snupkg</SymbolPackageFormat> to Directory.Build.props and ensuring that the .snupkg files end up in the right locations (blob storage, drop shares, symbols servers, etc.)

@natemcmaster natemcmaster added the area-infrastructure Includes: MSBuild projects/targets, build scripts, CI, Installers and shared framework label Jan 22, 2019
@natemcmaster natemcmaster added this to the Backlog milestone Jan 23, 2019
@natemcmaster
Copy link
Contributor Author

Triage team: let's discuss first with Arcade about how we should handle symbols.

@JunTaoLuo JunTaoLuo added question severity-minor This label is used by an internal tool labels Dec 10, 2020
@JunTaoLuo
Copy link
Contributor

@dotnet/dnceng Is there a concerted effort to do this across all teams?

@mmitche
Copy link
Member

mmitche commented Dec 10, 2020

/cc @tmat @markwilkie I don't think there is one yet, but getting it on the schedule would be good.

@michellemcdaniel
Copy link
Contributor

We will also need to update all of our symbols/sourcelink validation scripts at the same time, so that we look for the right file types.

@riarenas
Copy link
Member

One consideration is that some internal Microsoft tooling require the dlls to be submitted to the symbol servers for indexing. If the new format does not include the dlls, we'll have to tweak the publishing infra to keep submitting them.

@dougbu dougbu added External This is an issue in a component not contained in this repository. It is open for tracking purposes. blocked The work on this issue is blocked due to some dependency labels Feb 8, 2021
@dougbu
Copy link
Member

dougbu commented Feb 8, 2021

External and blocked until Arcade does the needful

@dougbu
Copy link
Member

dougbu commented May 10, 2021

@markwilkie @riarenas are there any plans to do the needful in Arcade❔ If not, we should close this issue…

@markwilkie
Copy link
Member

Can someone describe the value again for me? Efficiency? Is there a customer scenario that's currently being missed?

@dougbu
Copy link
Member

dougbu commented May 10, 2021

I don't remember the whole history but believe .snupkg packages were smaller, perhaps not containing the assemblies as well as the symbol files❔ @aortiz-msft @DoRonMotter was this a NuGet push and is it still the direction we should be moving❔

@mmitche
Copy link
Member

mmitche commented May 11, 2021

I believe the .snupkgs are also pushed to the nuget server, in addition to the normal symbol servers. Note that this appears to be only applicable to nuget.org servers.

https://docs.microsoft.com/en-us/nuget/create-packages/symbol-packages-snupkg

I think we should identify whether there is an experience gap for our customers before we go off and implement this. @hoyosjs who might be an expert in this area?

@hoyosjs
Copy link
Member

hoyosjs commented May 11, 2021

snupkg is an advantage in the sense that they are indexed to NuGet and that they are lighter. There are a few problems with them right now for our use:

  • They don't support full Windows PDBS - so they don't support native code, only managed portable PDBS.
  • We need DLLs indexed into our symbol servers. From a debugging perspective, sourcelink-enabled PDBs with embedded untracked source do the work for debugging, but this is just source debugging. For dump debugging, DLLs are often needed as they contain metadata that's needed but that is often not available in the dumps (comming from desire to avoid collecting full dumps for file size reasons and some PII protected scenarios where most info is stripped). This is crucial for things like Watson and SOS. Currently, as @riarenas pointed out, V3 publishing only tries to publish the symbol packages so this would need to change.

Microsoft Symbol servers (symweb and MSDL) index all of this for us and they have public accessibility as needed. NuGet symbol servers make a lot of sense if you are an external customer/OSS project that wants to index symbols. Unless I am missing something the only thing they provide for us is cost savings on the per-repo payload size. If this is a concern, or if there's a customer scenario that I am missing we should consider this. Otherwise, I am not sure this gives us much of a benefit and requires quite a few changes in the overall dotnet infra. I know #dotnet/arcade#1959 has some recent feedback, so maybe @ViktorHofer and @tmat can chime in if they have any further info.

@markwilkie
Copy link
Member

Thanks @hoyosjs !

Unless someone thinks differently on this, I'm inclined to close this issue as won't fix for now. Thoughts?

@dougbu
Copy link
Member

dougbu commented May 11, 2021

WFM @markwilkie

we can always reopen if the arithmetic changes or we get new information

@dougbu dougbu closed this as completed May 11, 2021
@ghost ghost locked as resolved and limited conversation to collaborators Jun 10, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-infrastructure Includes: MSBuild projects/targets, build scripts, CI, Installers and shared framework blocked The work on this issue is blocked due to some dependency External This is an issue in a component not contained in this repository. It is open for tracking purposes. question severity-minor This label is used by an internal tool
Projects
None yet
Development

No branches or pull requests

8 participants