Skip to content

ci: add ASan and UBSan CI jobs#354

Draft
abhinavagarwal07 wants to merge 1 commit into
libfuse:masterfrom
abhinavagarwal07:ci-sanitizers
Draft

ci: add ASan and UBSan CI jobs#354
abhinavagarwal07 wants to merge 1 commit into
libfuse:masterfrom
abhinavagarwal07:ci-sanitizers

Conversation

@abhinavagarwal07
Copy link
Copy Markdown
Collaborator

@abhinavagarwal07 abhinavagarwal07 commented May 19, 2026

New sanitizers.yml with separate AddressSanitizer, UndefinedBehaviorSanitizer, and ASan+LeakSanitizer jobs, all built with clang using -Db_sanitize and -Db_lundef=false. All jobs run on every push/PR.

Includes SSH setup, hard-fail FUSE preflight, pytest timeouts, JUnit XML, and sanitizer log capture via log_path to workspace-local paths (uploaded as artifacts). All actions SHA-pinned to Node 24-capable versions, runner pinned to ubuntu-24.04.

Suppressed failures:

  • PR-triggered ASan runs with detect_leaks=0 because libfuse teardown leaks cause false positives during FUSE session teardown.
  • ASan+LSan job runs with detect_leaks=1 and continue-on-error: true — it surfaces real sshfs leaks without blocking PRs. Promote to required once leaks are fixed.

ASan and UBSan catch memory errors and undefined behavior that compilers cannot detect statically. Both should be required PR checks once merged. Leak detection runs separately with continue-on-error because libfuse's teardown allocations produce false positives; once sshfs-owned leaks are fixed, the LSan job can be promoted to required.

A weekly schedule trigger also runs these jobs on master even without pushes, catching regressions from runner image updates or dependency changes that would otherwise go undetected between active development periods.

- New sanitizers.yml with separate ASan, UBSan, and ASan+LSan jobs, all built with clang
- Uses -Db_sanitize and -Db_lundef=false for proper sanitizer runtime linking
- ASan runs with detect_leaks=0 (libfuse teardown false positives); ASan+LSan runs with detect_leaks=1 and continue-on-error: true
- Sanitizer logs written to workspace-local log_path files and uploaded as artifacts
- Hard-fail FUSE preflight, explicit SSH setup, pytest timeouts, JUnit XML
- All actions pinned to Node 24-capable SHAs, runner pinned to ubuntu-24.04
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.

1 participant