From a7bf26dea052e1c1aa8a74d8322e728e366ee3d7 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Wed, 13 Aug 2025 19:37:56 -0700 Subject: [PATCH 1/3] Process sigCode and sigAddr for crashes. --- Extension/src/LanguageServer/extension.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index 445edc009..5d7c8800e 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -1177,7 +1177,7 @@ async function handleCrashFileRead(crashDirectory: string, crashFile: string, cr } const lines: string[] = data.split("\n"); - let addressData: string = ".\n"; + let addressData: string; const isCppToolsSrv: boolean = crashFile.startsWith("cpptools-srv"); const telemetryHeader: string = (isCppToolsSrv ? "cpptools-srv.txt" : crashFile) + "\n"; const filtPath: string | null = which.sync("c++filt", { nothrow: true }); @@ -1207,17 +1207,20 @@ async function handleCrashFileRead(crashDirectory: string, crashFile: string, cr crashStackStartLine = ++crashLogLine; } if (lines[crashStackStartLine].startsWith("SIG")) { - signalType = lines[crashStackStartLine] + "\n"; + signalType = `${lines[crashStackStartLine]}\n`; + addressData = `${lines[crashStackStartLine + 1]}:${lines[crashStackStartLine + 2]}\n`; // signalCode:signalAddr + crashStackStartLine += 3; } else { // The signal type may fail to be written. // Intentionally different from SIGUNKNOWN from cpptools, // and not SIG-? to avoid matching the regex in containsFilteredTelemetryData. signalType = "SIGMISSING\n"; + addressData = ".\n"; } data = telemetryHeader + signalType; let crashCallStack: string = ""; let validFrameFound: boolean = false; - for (let lineNum: number = crashStackStartLine + 1; lineNum < lines.length - 3; ++lineNum) { // skip last lines + for (let lineNum: number = crashStackStartLine; lineNum < lines.length - 3; ++lineNum) { // skip last lines const line: string = lines[lineNum]; const startPos: number = line.indexOf(startStr); let pendingCallStack: string = ""; From f95521b242e57c3507e49366f4f167fe4311391d Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Thu, 14 Aug 2025 12:54:03 -0700 Subject: [PATCH 2/3] Change to handle early crash file creation. --- Extension/src/LanguageServer/extension.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index 5d7c8800e..2f302df8f 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -952,7 +952,7 @@ function reportMacCrashes(): void { // vscode.workspace.createFileSystemWatcher only works in workspace folders. try { fs.watch(crashFolder, (event, filename) => { - if (event !== "rename") { + if (event !== "change") { return; } if (!filename || filename === prevMacCrashFile) { From 76ae3ff676e32da09d127e4e32681fa2d2215bbf Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Thu, 14 Aug 2025 13:03:35 -0700 Subject: [PATCH 3/3] Fix wrong change. --- Extension/src/LanguageServer/extension.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index 2f302df8f..db96623bf 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -952,7 +952,7 @@ function reportMacCrashes(): void { // vscode.workspace.createFileSystemWatcher only works in workspace folders. try { fs.watch(crashFolder, (event, filename) => { - if (event !== "change") { + if (event !== "rename") { return; } if (!filename || filename === prevMacCrashFile) { @@ -1012,7 +1012,7 @@ export function watchForCrashes(crashDirectory: string): void { // vscode.workspace.createFileSystemWatcher only works in workspace folders. try { fs.watch(crashDirectory, (event, filename) => { - if (event !== "rename") { + if (event !== "change") { return; } if (!filename || filename === prevCppCrashFile) {