Repository navigation
Description
Fuzzing Crash Report
Analysis
Crash Location: fuzz/src/array/mod.rs:assert_scalar_eq
Error Message:
Scalar mismatch: expected decimal256(27897708223554751832957193840191214563962497566384571035819434488814200889077, precision=76, scale=75), got null in step 1
Stack Trace:
3: assert_scalar_eq
at ./fuzz/src/array/mod.rs:705:13
4: run_fuzz_action
at ./fuzz/src/array/mod.rs:587:17
5: __libfuzzer_sys_run
at ./fuzz/fuzz_targets/array_ops.rs:14:11
6: rust_fuzzer_test_input
at /home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/libfuzzer-sys-0.4.10/src/lib.rs:363:60
7: {closure#0}
at /home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/libfuzzer-sys-0.4.10/src/lib.rs:62:9
Root Cause:
The fuzzer discovered a case where summing decimal values in a ChunkedArray results in an i256 overflow. When this happens, the sum implementation correctly returns null (as documented in vortex-array/src/compute/sum.rs:44 and tested in vortex-array/src/arrays/decimal/compute/sum.rs:363-377). However, the fuzzer's expectation logic doesn't account for this overflow behavior, causing a mismatch between the expected decimal value and the actual null result.
The issue occurs when:
- A ChunkedArray contains DecimalArray chunks with very large i256 values
- Multiple Sum operations are performed sequentially
- The accumulated sum exceeds i256::MAX, causing CheckedAdd to return None
- The sum function correctly returns Scalar::null() on overflow
- The fuzzer expects the computed sum but gets null instead
This is a test infrastructure issue rather than a bug in the sum implementation. The fuzzer should either:
- Detect when overflow would occur and adjust expectations
- Verify that null is returned when overflow happens
- Generate input values that won't overflow
Debug Output
FuzzArrayAction {
array: ChunkedArray {
dtype: Decimal(
DecimalDType {
precision: 76,
scale: 75,
},
Nullable,
),
len: 12,
chunks: [
DecimalArray { ... values_type: I256, validity: AllValid ... },
DecimalArray { ... values_type: I256, validity: AllValid ... }
]
},
actions: [
(Sum, Scalar { value: decimal256(27897708223554751832957193840191214563962497566384571035819434488814200889077, precision=76, scale=75) }),
(Sum, Scalar { value: decimal256(27897708223554751832957193840191214563962497566384571035819434488814200889077, precision=76, scale=75) }),
(Sum, Scalar { value: decimal256(27897708223554751832957193840191214563962497566384571035819434488814200889077, precision=76, scale=75) }),
(Sum, Scalar { value: decimal256(27897708223554751832957193840191214563962497566384571035819434488814200889077, precision=76, scale=75) })
]
}
Summary
- Target:
array_ops - Crash File:
crash-0171cbd8eede2afdec81571443c1aa8ff4e52032 - Branch: develop
- Commit: 265f29a
- Crash Artifact: https://github.com/vortex-data/vortex/actions/runs/20425809503/artifacts/4941338081
Reproduction
-
Download the crash artifact:
- Direct download: https://github.com/vortex-data/vortex/actions/runs/20425809503/artifacts/4941338081
- Or find
operations-fuzzing-crash-artifactsat: https://github.com/vortex-data/vortex/actions/runs/20425809503 - Extract the zip file
-
Reproduce locally:
# The artifact contains array_ops/crash-0171cbd8eede2afdec81571443c1aa8ff4e52032
cargo +nightly fuzz run -D --sanitizer=none array_ops array_ops/crash-0171cbd8eede2afdec81571443c1aa8ff4e52032 -- -rss_limit_mb=0- Get full backtrace:
RUST_BACKTRACE=full cargo +nightly fuzz run -D --sanitizer=none array_ops array_ops/crash-0171cbd8eede2afdec81571443c1aa8ff4e52032 -- -rss_limit_mb=0Auto-created by fuzzing workflow with Claude analysis
Activity
github-actions commentedon Dec 23, 2025
Related Crash Detected
A similar crash was detected in the
array_opstarget.Crash Details
Crash Location:
fuzz/src/array/mod.rs:705:13inassert_scalar_eqError Message:
Stack Trace:
Similarities to Original Issue:
fuzz/src/array/mod.rs:705:13inassert_scalar_eqDifferences:
10335731459288881875449326843340756734051447447459996202947475384727173595149vs original27897708223554751832957193840191214563962497566384571035819434488814200889077Debug Output
Occurrence Details
crash-5cfde2ab95fefd556db99b91e278d1a8287db26fReproduction
Auto-detected by fuzzing workflow with Claude analysis
github-actions commentedon Dec 23, 2025
Related Crash Detected
A similar crash was detected in the
array_opstarget, but affecting Primitive I64 arrays instead of Decimal arrays.Crash Details
Crash Location:
fuzz/src/array/mod.rs:assert_scalar_eqError Message:
Stack Trace:
Similarities to Original Issue:
nullwhen a non-null value is expectedDifferences:
The debug output shows a ChunkedArray with 5 I64 elements split into 2 chunks. The first sum returns null (suggesting overflow), but after slicing to range 2..5, the fuzzer expects the sum of those 3 elements to be valid. However, the sum still returns null, which could indicate:
Debug Output
Occurrence Details
crash-491d2a05d019c49e609745380763afd4d7b80602Reproduction
Auto-detected by fuzzing workflow with Claude analysis
github-actions commentedon Dec 24, 2025
Related Crash Detected
A similar crash was detected in the
array_opstarget.Crash Details
Crash Location:
fuzz/src/array/mod.rs:assert_scalar_eqError Message:
Stack Trace:
Similarities to Original Issue:
Differences:
Debug Output
Occurrence Details
crash-0d8aeb14963da4afc4401079e49875e553965561Reproduction
Auto-detected by fuzzing workflow with Claude analysis
github-actions commentedon Dec 24, 2025
Related Crash Detected
A similar crash was detected in the
array_opstarget.Crash Details
Crash Location:
fuzz/src/array/mod.rs:assert_scalar_eqError Message:
Stack Trace:
Similarities to Original Issue:
fuzz/src/array/mod.rs:assert_scalar_eqDifferences:
Debug Output
Occurrence Details
crash-c58ca683ff935e7aceca1e9f8a9494249978e61dReproduction
Auto-detected by fuzzing workflow with Claude analysis
github-actions commentedon Dec 24, 2025
Related Crash Detected
A similar crash was detected in the
array_opstarget.Crash Details
Crash Location:
fuzz/src/array/mod.rs:721(assert_scalar_eq)Error Message:
Stack Trace:
Similarities to Original Issue:
fuzz/src/array/mod.rs:assert_scalar_eqDifferences:
Debug Output
Occurrence Details
crash-3e2479dda749a0e47d12bb8a6d6d684abc78fed3Reproduction
Auto-detected by fuzzing workflow with Claude analysis
github-actions commentedon Dec 25, 2025
Related Crash Detected
A similar crash was detected in the
array_opstarget.Crash Details
Crash Location:
fuzz/fuzz_targets/array_ops.rs:18:13Error Message:
Stack Trace:
Similarities to Original Issue:
array_opsDifferences:
22788677031727905534389020372008541805690046682389818069128268972095001472584vs27897708223554751832957193840191214563962497566384571035819434488814200889077Debug Output
Occurrence Details
crash-535804df37d55e2e5e156cb7f0b78c7594f41e61Reproduction
Auto-detected by fuzzing workflow with Claude analysis
gatesn commentedon Dec 25, 2025
@claude take a day off for Christmas
claude commentedon Dec 25, 2025
Claude finished @gatesn's task in 16s —— View job
Happy Holidays! 🎄
Thank you for the holiday greeting! I'll stand down and not work on this issue today as requested.
Enjoy your Christmas! 🎁
github-actions commentedon Dec 26, 2025
Related Crash Detected
A similar crash was detected in the
array_opstarget.Crash Details
Crash Location:
fuzz/src/array/mod.rs:721(assert_scalar_eq)Error Message:
Stack Trace:
Similarities to Original Issue:
fuzz/src/array/mod.rs:assert_scalar_eq)array_opsDifferences:
Debug Output
Occurrence Details
crash-5c7cd24ed1749c9f852d1a91a1ef9a60be2b560cReproduction
Auto-detected by fuzzing workflow with Claude analysis
github-actions commentedon Dec 28, 2025
Related Crash Detected
A similar crash was detected in the
array_opstarget.Crash Details
Crash Location:
fuzz/src/array/mod.rs:assert_scalar_eqError Message:
Stack Trace:
Similarities to Original Issue:
fuzz/src/array/mod.rs:assert_scalar_eqDifferences:
Debug Output
Occurrence Details
crash-6739e47f66cedae0857241e6471e229053a54e99Reproduction
Auto-detected by fuzzing workflow with Claude analysis
connortsui20 commentedon Jan 15, 2026
Closing in favor of #5820