Skip to content

fix(storage): harden checkpoint crash recovery (fixes #1098) - #1107

Merged
adsharma merged 1 commit into
mainfrom
fix-1098-checkpoint-recovery-hardening
Oct 5, 2026
Merged

adsharma merged 1 commit into
mainfrom
fix-1098-checkpoint-recovery-hardening

Conversation

@adsharma

@adsharma adsharma commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

Validates and fixes #1098 (SIGSEGV opening preserved interrupted-checkpoint journal).

Three native-crash sites now throw catchable exceptions so recovery discards the torn tail:

  • ValueVector::deSerialize rejects num_values > capacity (OOB null-mask/buffer writes)
  • node/rel table insertion replay rejects empty/null vectors (UB operator[] on torn tail)
  • 0-byte/truncated .shadow sidecar rejected before header read (uninitialized buffer -> garbage page count)

Validation: full release build passes; FrozenWALRecoveryTest green. Minimal local testing per policy — CI owns the rest.

@adsharma
adsharma force-pushed the fix-1098-checkpoint-recovery-hardening branch from da6ffb3 to 55cba22 Compare October 5, 2026 16:56
Three native-crash sites on the interrupted-checkpoint open path
now fail with catchable exceptions so recovery discards the torn
tail instead of segfaulting:

- ValueVector::deSerialize rejects num_values above capacity
- table insertion replay rejects empty/null vector state
- shadow sidecar smaller than one page is rejected before the
  header read (covers the 0-byte .shadow fixture)
@adsharma
adsharma force-pushed the fix-1098-checkpoint-recovery-hardening branch from 55cba22 to 170f02c Compare October 5, 2026 17:37
@adsharma
adsharma merged commit 5d3975b into main Oct 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: SIGSEGV opening a preserved interrupted-checkpoint journal on Linux ARM64 (0.19.0 and 0.21.2)

1 participant