Skip to content

fix: update ctutils for RUSTSEC-2026-0385 - #10726

Merged
robert3005 merged 1 commit into
developfrom
ad/ctutils-security-update
Oct 23, 2026
Merged

robert3005 merged 1 commit into
developfrom
ad/ctutils-security-update

Conversation

@0ax1

@0ax1 0ax1 commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Problem

The locked ctutils 0.4.3 triggers RUSTSEC-2026-0385, failing dependency audits on develop and the CUDA PRs.

Solution

Update ctutils to the patched 0.4.4 release.

Assessment

Lockfile version and checksum change only. Shared prerequisite for #10711–#10722.

Signed-off-by: Alexander Droste <alexander.droste@protonmail.com>
@robert3005
robert3005 marked this pull request as ready for review October 23, 2026 13:19
@robert3005
robert3005 enabled auto-merge (squash) October 23, 2026 13:20
@codspeed

codspeed Bot commented Oct 23, 2026

Copy link
Copy Markdown

Merging this PR will degrade performance by 2.02%

4 warnings, 1 note

⚠️ Walltime results may be unreliable

Some benchmarks used the Walltime instrument outside CodSpeed Macro Runners, which can make the results inconsistent.

Learn more about Macro Runners

See affected benchmarks

⚠️ Unable to measure the execution of 1 benchmark

This benchmark measured no execution time, so its result is not comparable and counts as unchanged. This usually happens when the compiler removes the code under test.

Prevent compiler optimizations

See affected benchmarks

⚠️ 24 benchmarks are dominated by system calls

System calls cannot be simulated consistently and are left out of the measure. The reported value understates the real cost. Switch to the Walltime instrument to measure them.

Learn more about system calls

See affected benchmarks

⚠️ Base and head ran on different runner types

Some benchmarks with significant performance changes were compared across different runner types, so the changes might not come from the code. Run base and head on the same runner type, or use CodSpeed Macro Runners for more stable results.

Learn more about Macro Runners

Open the report in CodSpeed to investigate

ℹ️ 40 benchmarks have no flamegraph

The flamegraph wasn't generated: the symbols of the profiling trace could not be resolved, because no information about the language frames was collected.

See affected benchmarks

⚡ 3 improved benchmarks
❌ 7 regressed benchmarks
✅ 2398 untouched benchmarks
⏩ 12 skipped benchmarks1

Warning

Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
❌ Walltime threshold_neon[8] 1.3 µs 2.4 µs -46.64%
❌ Walltime filter_neon[64] 1.7 µs 2.6 µs -33.49%
❌ Walltime threshold_neon[64] 2.6 µs 3.4 µs -25.85%
❌ Walltime filter_neon[8] 903 ns 1,204 ns -25%
❌ Walltime filter_neon[80] 2.5 µs 3.3 µs -24.24%
❌ Walltime threshold_neon[80] 3.3 µs 4.3 µs -23.83%
❌ CPU Simulation test_repeated_scan_scalar_at[int_str_float] 492.3 µs 566.1 µs -13.02%
⚡ CPU Simulation bench_compare_sliced_dict_primitive[(2000, 10000)] 67.3 µs 13 µs ×5.2
⚡ CPU Simulation density_sweep_dense_runs[0.001] 62.6 µs 44.5 µs +40.52%
⚡ Walltime bitpack_blocked_compress_avx2 7.6 µs 6.7 µs +12.95%

Tip

Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.


Comparing ad/ctutils-security-update (26633b3) with develop (a1fdb64)2

Open in CodSpeed

Footnotes

  1. 12 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩

  2. No successful run was found on develop (756f1eb) during the generation of this report, so a1fdb64 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report. ↩

@0ax1
0ax1 requested a review from robert3005 October 23, 2026 14:50
@robert3005
robert3005 merged commit e083440 into develop Oct 23, 2026
138 of 145 checks passed
@robert3005
robert3005 deleted the ad/ctutils-security-update branch October 23, 2026 15:34
0ax1 added a commit that referenced this pull request Oct 23, 2026
## Problem

Concurrent first use can create more CUDA streams than the pool's configured capacity.

## Solution

Use `OnceCell::get_or_try_init` for each pool slot, replacing the custom initialization lock and `ArcSwap`.

## Assessment

Initialized access remains lock-free and failed initialization can be retried. Uses `once_cell` because the fallible `std::sync::OnceLock` API is unstable. Based on #10726.

Signed-off-by: Alexander Droste <alexander.droste@protonmail.com>
0ax1 added a commit that referenced this pull request Oct 23, 2026
## Problem

The driver replacement needs a small CUDA binding layer with lazy library loading.

## Solution

Add raw handles, symbols, errors, and fallible call wrappers in `vortex-cuda-driver`.

## Assessment

The crate is excluded from publishing; existing consumers still use cudarc. Based on #10726 and prerequisite for #10720.

Signed-off-by: Alexander Droste <alexander.droste@protonmail.com>
0ax1 added a commit that referenced this pull request Oct 23, 2026
## Problem

Splitting staged file reads into 4 MiB chunks adds per-chunk I/O and transfer overhead.

## Solution

Increase physical read and H2D chunks to 8 MiB, retaining concurrency 32 and existing logical batches.

## Assessment

Uses larger staging buffers per request. Independent of mapped-file copying; based on #10726.

Signed-off-by: Alexander Droste <alexander.droste@protonmail.com>
0ax1 added a commit that referenced this pull request Oct 23, 2026
## Problem

Pinned-transfer completion events record timing that reclamation does not use.

## Solution

Replace `BLOCKING_SYNC` with `DISABLE_TIMING`.

## Assessment

Host event waits become busy-waits, trading CPU usage for different wait behavior. Independent of event reuse; based on #10726.

Signed-off-by: Alexander Droste <alexander.droste@protonmail.com>
0ax1 added a commit that referenced this pull request Oct 23, 2026
## Problem

Cached file pages still pass through pinned staging buffers before reaching the GPU.

## Solution

On supported Linux devices, copy resident mapped-file ranges directly with a CUDA kernel; retain staged reads for other cases.

## Assessment

Hardware-dependent fast path with mapping lifetime and cancellation guards. Keeps 4 MiB chunks, so it is independent of #10715. Based on #10726.

Signed-off-by: Alexander Droste <alexander.droste@protonmail.com>
0ax1 added a commit that referenced this pull request Oct 23, 2026
## Problem

A failed or resubmitted transfer can recycle pinned source memory before its previous DMA completes.

## Solution

Check contexts, wait on the previous source fence, and establish completion before recycling buffers.

## Assessment

If completion cannot be established, retain the allocation rather than risk freeing active DMA memory. Based on #10726; prerequisite for #10713.

Signed-off-by: Alexander Droste <alexander.droste@protonmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog/fix A bug fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants