Skip to content

fix(ci): force tarpaulin LLVM engine to end the recurring coverage segfault#163

Merged
hyperpolymath merged 1 commit into
mainfrom
claude/neurophone-repo-setup-envzix
Jul 1, 2026
Merged

fix(ci): force tarpaulin LLVM engine to end the recurring coverage segfault#163
hyperpolymath merged 1 commit into
mainfrom
claude/neurophone-repo-setup-envzix

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

Fixes the recurring rust-ci / Coverage (tarpaulin + codecov) red (failed on #161,
#162, …) with a locally-verified repo-side change.

Root cause: the standards rust-ci reusable runs cargo tarpaulin --out Xml with the
default ptrace engine, which segfaults on the CI runners while instrumenting the
property-test binary ("Failed to run tests: A segfault occurred while executing tests").
It's a tarpaulin instrumentation flake — the suite passes under cargo test, and the
ptrace engine doesn't even reproduce the segfault locally.

Fix: tarpaulin.toml selecting the LLVM (source-based) engine, which avoids
ptrace entirely. The reusable's cargo tarpaulin --out Xml reads this [default]
profile, so no standards-reusable change is needed.

Verified locally (I installed tarpaulin and reproduced the setup):

  • default engine locally → passes (segfault is CI-runner-specific);
  • [default] engine = "Llvm" + cargo tarpaulin --out Xml → activates
    LLVM_PROFILE_FILE coverage across 26 test binaries, exits 0, writes a valid
    cobertura.xml.
  • Note: the value must be capitalized "Llvm" — serde is case-sensitive; lowercase
    silently falls back to ptrace.

This clears the last repo-side-fixable CI red. Remaining reds are genuinely external:
governance / Validate Hypatia Baseline is pre-existing #41 debt (needs the hypatia
CLI, out of session scope, or a baseline-regen decision), which the owner has merged past.

FLAGS (unchanged)

🤖 Generated with Claude Code

https://claude.ai/code/session_0172RBMz3qYjb1ttzD2i7RNh


Generated by Claude Code

The `rust-ci / Coverage (tarpaulin + codecov)` job has failed on every recent PR
(#161/#162) with "Failed to run tests: A segfault occurred while executing tests"
— cargo-tarpaulin's default ptrace engine segfaulting while instrumenting the
property-test binary on the CI runners. It is a tarpaulin instrumentation flake,
not a real failure: the suite passes under `cargo test`, and the ptrace engine
does not even reproduce the segfault locally.

Add tarpaulin.toml selecting the LLVM (source-based) engine, which avoids ptrace
entirely. The standards rust-ci reusable runs `cargo tarpaulin --out Xml`, which
reads this [default] profile — so no reusable change is needed.

Verified locally: with this config, `cargo tarpaulin --out Xml` activates
LLVM_PROFILE_FILE coverage (26 profiled test binaries), exits 0, and writes a
valid cobertura.xml. (The engine value must be capitalized "Llvm" — serde is
case-sensitive; lowercase silently falls back to ptrace.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0172RBMz3qYjb1ttzD2i7RNh
@sonarqubecloud

sonarqubecloud Bot commented Jul 1, 2026

Copy link
Copy Markdown

@hyperpolymath
hyperpolymath marked this pull request as ready for review July 1, 2026 13:08
@hyperpolymath
hyperpolymath merged commit 250eea8 into main Jul 1, 2026
29 of 30 checks passed
@hyperpolymath
hyperpolymath deleted the claude/neurophone-repo-setup-envzix branch July 1, 2026 13:08
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.

2 participants