diff options
| author | Gabriel Schneider <[email protected]> | 2026-07-06 22:00:39 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-08-01 15:02:07 -0300 |
| commit | b2cdd8ee719961b2f037f20bf0f88fad94ca73b4 (patch) | |
| tree | c206553a2600467532ec259400c0d57efb3e80b5 /next-steps.txt | |
| parent | a373fdda0102a99cde988f87f822fc451e0f4391 (diff) | |
| download | pardes-b2cdd8ee719961b2f037f20bf0f88fad94ca73b4.tar.gz pardes-b2cdd8ee719961b2f037f20bf0f88fad94ca73b4.zip | |
fix: every external-scanner grammar crashed pardes on parse (rust/cpp/python/...; e.g. opening agave cpi.rs or any tracy .cpp), Debug AND ReleaseSafe. Root cause: clang -fsanitize=function (in zig's default C UBSan set) traps at the runtime's indirect call of the scanner because grammars declare external_scanner_create() with EMPTY PARENS — a K&R non-prototype whose type hash differs from the void*(*)(void) pointer type. The ud1 trap lands on a bogus inlined line (stack.c:746), which cost the diagnosis a detour through rr (its gdbserver dies replaying past the task exit — core dump + coredumpctl worked; ud1 0x6(%eax) = SanitizerHandler kind 6 = function_type_mismatch; scanner-less c/zig grammars never crashed). Fix per review direction: -fno-sanitize=function on the grammar TUs in build.zig — uninstrumented callees make the runtime's call-site checks skip; the rest of UBSan stays live. Second half: fatal signals (SIGILL/SEGV/BUS/FPE) never run defers and bypassed the panic hook, leaving the terminal raw after a crash — root.debug.handleSegfault override now runs vaxis.recover() before std.debug.defaultHandleSegfault, verified in a raw pty (kill -ILL $PPID: rmcup + mouse resets precede the trace). Verified: rust/cpp/python opens work with real highlighting (snapstyle: keywords/strings/comments colored), agave cpi.js 2.7k-line open fine, suite 30/30, ReleaseSafe build opens rust identically.
Diffstat (limited to 'next-steps.txt')
| -rw-r--r-- | next-steps.txt | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/next-steps.txt b/next-steps.txt index ef7b06a2..686f21b8 100644 --- a/next-steps.txt +++ b/next-steps.txt @@ -17,3 +17,4 @@ - initial layout: one pane, not three - focusing a file at a line also moves the modal cursor to that line (not just the scroll) - let's implement file searching, pardes philosophy is that what you do and the texts you read are sacred, so we don't want to implement file search with popups or information that will just dissapear. How I want you to do this is to: when I search something with / (in a text file, leave tty for later), we'll call grep -n on the current file with the search text. so far very simple, the neat thing is when I press n/N pardes will use the semantic tty access we have to select grep's result next line up or down and LOOK it (note we aren't introducing a new search concept or anything, just hooking modal editing, with semantic tty info from ghostty, and look semantics from acme). +- crash: illegal instruction in ts_parser_parse opening agave cpi.rs with full treesitter (0.26 zig bindings + 0.27 C runtime linked together); terminal left broken after non-panic crashes (SIGILL/SIGSEGV need recover in the signal path) |
