Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 11 additions & 7 deletions Extension/src/LanguageServer/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ export const CppSourceStr: string = "C/C++";
export const configPrefix: string = "C/C++: ";

let prevMacCrashFile: string;
let prevCppCrashFile: string;
const pendingCppCrashPaths: Set<string> = new Set<string>();
let prevCppCrashCallStackData: string = "";
export let clients: ClientCollection;
let activeDocument: vscode.TextDocument | undefined;
Expand Down Expand Up @@ -1115,7 +1115,6 @@ export function usesCrashHandler(): boolean {

export function watchForCrashes(crashDirectory: string): void {
if (crashDirectory !== "") {
prevCppCrashFile = "";
fs.stat(crashDirectory, (err) => {
const crashObject: Record<string, string> = {};
if (err?.code) {
Expand All @@ -1131,20 +1130,22 @@ export function watchForCrashes(crashDirectory: string): void {
if (event !== "change") {
return;
}
if (!filename || filename === prevCppCrashFile) {
if (!filename || !filename.startsWith("cpptools")) {
return;
}
prevCppCrashFile = filename;
if (!filename.startsWith("cpptools")) {
const crashPath: string = path.resolve(crashDirectory, filename);
if (pendingCppCrashPaths.has(crashPath)) {
return;
}
pendingCppCrashPaths.add(crashPath);
const crashDate: Date = new Date();
isWritingCrashCallStack = true;

// Wait 5 seconds to allow time for the crash log to finish being written.
setTimeout(() => {
isWritingCrashCallStack = false;
fs.readFile(path.resolve(crashDirectory, filename), 'utf8', (err, data) => {
pendingCppCrashPaths.delete(crashPath);
Comment thread
sean-mcmanus marked this conversation as resolved.
isWritingCrashCallStack = pendingCppCrashPaths.size > 0;
fs.readFile(crashPath, 'utf8', (err, data) => {
void handleCrashFileRead(crashDirectory, filename, crashDate, err, data);
});
}, 5000);
Expand Down Expand Up @@ -1323,6 +1324,9 @@ async function handleCrashFileRead(crashDirectory: string, crashFile: string, cr
}
return logCppCrashTelemetry("readFile: " + err.code);
}
if (data.length === 0) {
return;
}

const lines: string[] = data.split("\n");
let signalInfo: string;
Expand Down
Loading