From ad88de1f963e97126c28c7449ead9a10b6c16e84 Mon Sep 17 00:00:00 2001 From: RodgeFu Date: Thu, 20 Jun 2024 10:50:02 +0800 Subject: [PATCH 1/4] avoid break from Error.captureStackTrace --- packages/compiler/src/server/file-system-cache.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/compiler/src/server/file-system-cache.ts b/packages/compiler/src/server/file-system-cache.ts index 87818e2abb..3122ef72c4 100644 --- a/packages/compiler/src/server/file-system-cache.ts +++ b/packages/compiler/src/server/file-system-cache.ts @@ -48,9 +48,17 @@ export function createFileSystemCache({ changes = []; const r = cache.get(path); if (!r) { - const target: any = {}; - Error.captureStackTrace(target); - const callstack = target.stack.substring("Error\n".length); + let callstack: string | undefined; + try { + const target: any = {}; + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(target); + callstack = target.stack.substring("Error\n".length); + } + } catch { + // some browser doesn't support Error.captureStackTrace (i.e. Firefox) + // just ignore the stacktrace if the function doesn't exist + } log({ level: "trace", message: `FileSystemCache miss for ${path}`, detail: callstack }); } return r; From 45262f8c3e1bcb5b5aefd8a4d5ed4fda050a4443 Mon Sep 17 00:00:00 2001 From: RodgeFu Date: Thu, 20 Jun 2024 11:02:16 +0800 Subject: [PATCH 2/4] refine comments --- packages/compiler/src/server/file-system-cache.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/compiler/src/server/file-system-cache.ts b/packages/compiler/src/server/file-system-cache.ts index 3122ef72c4..92e5acd089 100644 --- a/packages/compiler/src/server/file-system-cache.ts +++ b/packages/compiler/src/server/file-system-cache.ts @@ -51,13 +51,13 @@ export function createFileSystemCache({ let callstack: string | undefined; try { const target: any = {}; + // some browser doesn't support Error.captureStackTrace (i.e. Firefox) if (typeof Error.captureStackTrace === "function") { Error.captureStackTrace(target); callstack = target.stack.substring("Error\n".length); } } catch { - // some browser doesn't support Error.captureStackTrace (i.e. Firefox) - // just ignore the stacktrace if the function doesn't exist + // just ignore the error, we don't want tracing error to impact normal functionality } log({ level: "trace", message: `FileSystemCache miss for ${path}`, detail: callstack }); } From 0ba085b8635ed1c5d4e1d9bf634dbf34183cb781 Mon Sep 17 00:00:00 2001 From: RodgeFu Date: Thu, 20 Jun 2024 11:21:25 +0800 Subject: [PATCH 3/4] add change log --- .../avoid-break-from-stacktrace-2024-5-20-11-21-0.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .chronus/changes/avoid-break-from-stacktrace-2024-5-20-11-21-0.md diff --git a/.chronus/changes/avoid-break-from-stacktrace-2024-5-20-11-21-0.md b/.chronus/changes/avoid-break-from-stacktrace-2024-5-20-11-21-0.md new file mode 100644 index 0000000000..5e3c87f33e --- /dev/null +++ b/.chronus/changes/avoid-break-from-stacktrace-2024-5-20-11-21-0.md @@ -0,0 +1,7 @@ +--- +changeKind: fix +packages: + - "@typespec/compiler" +--- + +Handle errors from trace to avoid it breaking normal functionality \ No newline at end of file From cbfcae0a472329e6fd71963754af503d19cff202 Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Thu, 20 Jun 2024 17:44:51 -0700 Subject: [PATCH 4/4] Update .chronus/changes/avoid-break-from-stacktrace-2024-5-20-11-21-0.md --- .../changes/avoid-break-from-stacktrace-2024-5-20-11-21-0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.chronus/changes/avoid-break-from-stacktrace-2024-5-20-11-21-0.md b/.chronus/changes/avoid-break-from-stacktrace-2024-5-20-11-21-0.md index 5e3c87f33e..ee508d404c 100644 --- a/.chronus/changes/avoid-break-from-stacktrace-2024-5-20-11-21-0.md +++ b/.chronus/changes/avoid-break-from-stacktrace-2024-5-20-11-21-0.md @@ -4,4 +4,4 @@ packages: - "@typespec/compiler" --- -Handle errors from trace to avoid it breaking normal functionality \ No newline at end of file +Fix crash of language server on firefox \ No newline at end of file