• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

vortex-data / vortex / 16891240853 / 2
88%
develop: 88%

Build:
DEFAULT BRANCH: develop
Ran 11 Aug 2025 08:35PM UTC
Files 638
Run time 50s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

11 Aug 2025 08:24PM UTC coverage: 84.553% (+0.4%) from 84.16%
16891240853.2

push

github

web-flow
fix: small resource leak in vortex-io, plus test improvements (#4201)

# Vortex-IO Improvements Summary

## Overview
Comprehensive improvements to the vortex-io crate focusing on safety,
test coverage, and production readiness.

## Statistics
- **Files Modified:** 10
- **Lines Added:** 1,144 
- **Lines Removed:** 19
- **Test Coverage:** Increased from ~40% to comprehensive coverage
- **Tests Added:** 95 high-value tests
- **Critical Bugs Fixed:** 5

## Critical Bugs Fixed

### 1. SizeLimitedStream Permit Leak (CRITICAL - Resource Exhaustion)
**File:** `vortex-io/src/limit.rs`  
**Problem:** Futures dropped before completion leaked semaphore permits,
causing resource exhaustion.
**Solution:** Used `OwnedSemaphorePermit` to automatically return
permits when futures are dropped.
```rust
struct SizedFut<Fut> {
    #[pin]
    inner: Fut,
    /// Owned permit that will be automatically dropped when the future completes or is dropped
    _permits: OwnedSemaphorePermit,
}
```

### 2. OwnedSlice Missing Bounds Validation (CRITICAL - Memory
Corruption)
**File:** `vortex-io/src/io_buf.rs`  
**Problem:** No bounds checking on slice ranges, allowing buffer
overruns and undefined behavior.
**Solution:** Added comprehensive bounds validation and debug
assertions.
```rust
assert!(range.start <= range.end, "Invalid range");
assert!(range.end <= self.bytes_init(), "Range exceeds buffer length");
```

### 3. CompioDispatcher Arbitrary Timeout (HIGH - Query Failures)
**File:** `vortex-io/src/dispatcher/compio.rs`  
**Problem:** 30-second timeout killed long-running queries.  
**Solution:** Removed timeout, added proper shutdown signaling with
`Arc<AtomicBool>`.

### 4. Buffer Size Integer Overflow (MEDIUM - Panic Risk)
**File:** `vortex-io/src/io_buf.rs`  
**Problem:** Unchecked multiplication could overflow for large buffers.
**Solution:** Added checked arithmetic.
```rust
self.len()
    .checked_mul(size_of::<T>())
    .vortex_expect("Buffer size calculation overflow")... (continued)

53085 of 62783 relevant lines covered (84.55%)

400180.16 hits per line

Source Files on job run-tests - 16891240853.2
  • Tree
  • List 638
  • Changed 9
  • Source Changed 7
  • Coverage Changed 9
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 16891240853
  • 74fb7069 on github
  • Prev Job for on develop (#16887380527.2)
  • Next Job for on develop (#16892986016.1)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc