You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* fix(wasm): resolve incremental edge loss, unnecessary reparses, and V8 crash
Three WASM-engine bugs fixed:
1. Edge loss (#932): purgeAndAddReverseDeps deleted ALL outgoing edges from
reverse-dep files, then relied on reparsing to rebuild them — but reparsed
data was incomplete. Now saves edge topology before purge and reconnects
to new node IDs after insert, preserving all edges without reparsing.
2. Unnecessary reparses (#933): reverse-dep files were added to parseChanges
and fully reparsed even though only their edge targets changed. The new
save-and-reconnect approach eliminates all reverse-dep reparsing — only
actually-changed files are parsed.
3. V8 crash (#931): WASM tree objects stored in symbols._tree were never
cleaned up on error paths, causing V8 to crash during GC of orphaned
WASM objects (~40% of builds). Added error-path tree cleanup in the
pipeline catch block. Also added a depth guard (MAX_WALK_DEPTH=500) in
walkWithVisitors to prevent stack overflow during deep AST recursion.
Closes#931, closes#932, closes#933
Impact: 8 functions changed, 28 affected
* fix: filter stale source IDs, add depth-limit debug log, free WASM trees on success path (#938)
Impact: 4 functions changed, 26 affected
* fix: use proximity-based ORDER BY for deterministic edge reconnection (#938)
Add ORDER BY ABS(line - ?) to the reconnectReverseDepEdges node lookup
so duplicate (name, kind, file) nodes (e.g. TypeScript overloads) pick
the closest match by line number instead of relying on non-deterministic
LIMIT 1 behavior.
Impact: 1 functions changed, 3 affected
0 commit comments