Skip to content

v0.9.1 — fix: jarvis index no longer crashes natively in the tree-sitter syntax baseline

Choose a tag to compare

@phuongddx phuongddx released this 11 Sep 07:17
· 33 commits to main since this release
v0.9.1
673e1f9

jarvis index was dying with SIGSEGV/SIGBUS before publishing anything: the tree-sitter 0.26.0 runtime corrupts the heap during the syntax-baseline walk. This patch pins the runtime to 0.25.2; every grammar pin is unchanged.

Install

Claude Code plugin:

/plugin marketplace add jarvis-intelligence/jarvis-index
/plugin install jarvis@jarvis

Standalone (uv / uvx):

uvx --from 'jarvis-mcp>=0.9.1' jarvis-server

Fixed

  • Native crash in the syntax baseline (jarvis-index#14). The tree-sitter 0.26.0 binding refactor corrupts memory non-deterministically during the declaration walk — crash sites move between runs (attribute read, GC pass, point construction), and the trigger is allocation-layout dependent: a single added print line in the walk loop makes the same input survive, which is exactly why 0.9.0's wheel-build test gates never caught it. Measured at 12 runs per cell: 8/12 and 11/12 native crashes under 0.26.0 (either grammar version), 0/12 under 0.25.2 with identical grammars — the runtime is the broken side, not the grammar pairing. The exact C-level mechanism is documented as unconfirmed in the issue; the fix doesn't depend on it. A subprocess-isolated regression test now walks a synthetic 300-definition module in five fresh interpreters and fails on any nonzero child exit, so a broken runtime can never ship silently again.
  • Side effect of the crash, now moot with the fix but worth knowing: a natively-crashed indexRepo child left the registry row stuck at outcome: indexing with a 0-byte log (tracked in #14 as a separate, still-open bug).

Upgrade

Anyone on 0.9.0 should upgrade — the crash makes indexing any Python-sized repo a coin flip. Existing indexes are unaffected; only new index runs were at risk.

See CHANGELOG.md.