diff options
author | 2022-11-15 00:13:09 -0800 | |
---|---|---|
committer | 2022-11-15 00:13:09 -0800 | |
commit | c7e3b4aaa6d0ffdcaca3cadd79fe9ef3d96d3ef6 (patch) | |
tree | 95c18a00a89ac0df66bccd9e0559d9eb7205fb08 /packages/bun-crash-report-symbolizer/index.ts | |
parent | 44babb9ce5a4e26fc43b002dedbf194c31331a0e (diff) | |
download | bun-jarred/dump.tar.gz bun-jarred/dump.tar.zst bun-jarred/dump.zip |
wipjarred/dump
Diffstat (limited to '')
-rw-r--r-- | packages/bun-crash-report-symbolizer/index.ts | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/packages/bun-crash-report-symbolizer/index.ts b/packages/bun-crash-report-symbolizer/index.ts new file mode 100644 index 000000000..671322547 --- /dev/null +++ b/packages/bun-crash-report-symbolizer/index.ts @@ -0,0 +1,42 @@ +import { which } from "bun"; + +const symbolizerPath = ["llvm-symbolizer-13", "llvm-symbolizer"].find((a) => + which(a), +); + +if (!symbolizerPath) { + throw new Error("llvm-symbolizer not found in $PATH"); +} + +export const symbolizer = symbolizerPath; + +function readCrashReport(text: string) { + const lines = text + .split("\n") + .map((a) => a.trim()) + .filter((a) => a.length > 0); + + const metaOffset = lines.findIndex((a) => a.includes(" bun meta ")); + let lastMetaLine = metaOffset + 1; + for (; lastMetaLine < lines.length; lastMetaLine++) { + const line = lines[lastMetaLine]; + if (line.includes(" bun meta ")) break; + } + + const meta = lines.slice(metaOffset, lastMetaLine); + console.log(metaOffset, lastMetaLine); + const version = /v(\d+\.\d+\.\d+)/.exec(meta[0])?.[1]; + var stack = lines + .slice(lastMetaLine + 1) + .filter((a) => a.length > 0 && !a.includes("ask for")); + + return { version, stack }; +} + +console.log( + readCrashReport( + await Bun.file( + "/Users/jarred/.bun/.bun-crash/v0.2.3-1668157348119.crash", + ).text(), + ), +); |