From 9db0aff845be672f20a70864d444041c88179c53 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Sun, 26 Jul 2026 20:15:47 +0000 Subject: [PATCH 1/2] Fix si_code=, si_addr=undefined. --- Extension/src/LanguageServer/extension.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index 91584f13c..03542ce13 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -1362,7 +1362,16 @@ async function handleCrashFileRead(crashDirectory: string, crashFile: string, cr } if (lines[crashStackStartLine].startsWith("SIG")) { signalType = `${lines[crashStackStartLine]}\n`; - signalInfo = `si_code=${lines[crashStackStartLine + 1]}, si_addr=${bucketSignalAddress(lines[crashStackStartLine + 2])}\n`; + const siCode: string = lines[crashStackStartLine + 1] ?? ""; + const siAddr: string = lines[crashStackStartLine + 2] ?? ""; + const signalInfoParts: string[] = []; + if (siCode.length > 0) { + signalInfoParts.push(`si_code=${siCode}`); + } + if (siAddr.length > 0) { + signalInfoParts.push(`si_addr=${bucketSignalAddress(siAddr)}`); + } + signalInfo = signalInfoParts.length > 0 ? `${signalInfoParts.join(", ")}\n` : ""; crashStackStartLine += 3; } else { // The signal type may fail to be written. From 248c44bdbc5b9d15784116090ca5e5a89ec084a3 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Sun, 26 Jul 2026 20:33:30 +0000 Subject: [PATCH 2/2] Code review feedback. --- Extension/src/LanguageServer/extension.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index 03542ce13..1c4367c49 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -1362,8 +1362,10 @@ async function handleCrashFileRead(crashDirectory: string, crashFile: string, cr } if (lines[crashStackStartLine].startsWith("SIG")) { signalType = `${lines[crashStackStartLine]}\n`; - const siCode: string = lines[crashStackStartLine + 1] ?? ""; - const siAddr: string = lines[crashStackStartLine + 2] ?? ""; + const siCodeRaw: string | undefined = lines[crashStackStartLine + 1]; + const siAddrRaw: string | undefined = lines[crashStackStartLine + 2]; + const siCode: string = siCodeRaw?.trim() ?? ""; + const siAddr: string = siAddrRaw?.trim() ?? ""; const signalInfoParts: string[] = []; if (siCode.length > 0) { signalInfoParts.push(`si_code=${siCode}`); @@ -1372,7 +1374,9 @@ async function handleCrashFileRead(crashDirectory: string, crashFile: string, cr signalInfoParts.push(`si_addr=${bucketSignalAddress(siAddr)}`); } signalInfo = signalInfoParts.length > 0 ? `${signalInfoParts.join(", ")}\n` : ""; - crashStackStartLine += 3; + // Only advance past the header lines that actually exist so a missing si_code/si_addr + // line does not cause the first stack frame to be skipped. + crashStackStartLine += 1 + (siCodeRaw !== undefined ? 1 : 0) + (siAddrRaw !== undefined ? 1 : 0); } else { // The signal type may fail to be written. // Intentionally different from SIGUNKNOWN from cpptools,