Skip to content

Improve crash call stack data.#14555

Open
sean-mcmanus wants to merge 3 commits into
mainfrom
seanmcm/improveCallStackData
Open

Improve crash call stack data.#14555
sean-mcmanus wants to merge 3 commits into
mainfrom
seanmcm/improveCallStackData

Conversation

@sean-mcmanus

Copy link
Copy Markdown
Contributor

The previous crash call stack data was unnecessarily hard to analyze. The separate address data was not necessary.

Fixed by Copilot with Claude Opus 4.8 in VS Code.

@sean-mcmanus sean-mcmanus requested a review from a team as a code owner June 29, 2026 17:03
@github-project-automation github-project-automation Bot moved this to Pull Request in cpptools Jun 29, 2026
@sean-mcmanus sean-mcmanus added this to the 1.33.3 milestone Jun 29, 2026
@sean-mcmanus sean-mcmanus requested a review from Copilot June 29, 2026 17:04

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adjusts how C/C++ crash telemetry is generated in the extension to make crash call stack data easier to read and analyze by removing the separate “offset/address” telemetry field and restructuring the emitted crash header/details.

Changes:

  • Removes the separate CrashingThreadCallStackOffsets telemetry property and simplifies the telemetry logging helpers.
  • Changes the crash telemetry header/signal formatting (adds si_code/si_addr inline) and alters how address/offset data is appended to the call stack text.
  • Updates the “C/C++ Crash Call Stacks” output formatting to include the new signal info.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +1302 to +1304
const isCppToolsSrv2: boolean = crashFile.startsWith("cpptools-srv2");
const isCppToolsSrv: boolean = crashFile.startsWith("cpptools-srv");
const telemetryHeader: string = (isCppToolsSrv2 ? "cpptools-srv2.txt" : isCppToolsSrv ? "cpptools-srv.txt" : crashFile) + "\n";
const telemetryHeader: string = (isCppToolsSrv2 ? "cpptools-srv2 process" : isCppToolsSrv ? "cpptools-srv process" : "cpptools process") + "\n";

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I already have renaming rules in my data queries. Why do we need to change this?

@sean-mcmanus sean-mcmanus Jun 29, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The ".txt" doesn't make any sense (Copilot doesn't understand it, neither do humans). It was a bad idea to use to begin with. The intention is " process".

I don't know what renaming rules you're referring to are.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Regarding the Copilot comment, cpptools-wordexp isn't known to crash.

@bobbrow bobbrow Jun 29, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The line used to mean "this is the file I got it from". In my PowerBI dashboard I have it renamed to remove the .txt for the crashes table. If you are going to do anything with this part of the telemetry, just delete the .txt and have it be the process name only. Adding the word "process" to this string doesn't provide any value for me and actually requires me to go add more renaming logic to my dashboard.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And who else needs to understand the context? This is telemetry that only we see.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Umm...if you really want I can remove " process" and hope the reader can infer that from the context, but keeping ".txt" is confusing.

@bobbrow bobbrow Jun 29, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What reader? Are we logging this to the Output window or something? If the goal is to present this to users and have them understand it, wouldn't we add labels and such for fields in the logging? That would be more effective than printing out raw telemetry payloads don't you think?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bobbrow Copilot.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bobbrow Copilot.

I answered that question earlier. #14555 (comment)

Comment thread Extension/src/LanguageServer/extension.ts Outdated
Comment thread Extension/src/LanguageServer/extension.ts Outdated
Comment thread Extension/src/LanguageServer/extension.ts Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Pull Request

Development

Successfully merging this pull request may close these issues.

3 participants