Skip to content

rc_ok treats mixed sanitizer failures as tolerated leaks #969

Description

@Nitjsefnie

Describe the bug
On current main, rc_ok() returns success for a nonzero command when its captured output contains both a LeakSanitizer report and a hard ASan or UBSan diagnostic. The command is counted as a tolerated leak, so the hard sanitizer failure is masked.

This is distinct from #945/#953, which covered tests/test_doc_examples.py. It was discovered during an independent review of unfiled sanitizer test-harness findings on 2026-08-18.

To reproduce
From the repository root, load the current helper and pass it mixed sanitizer output:

LEAKED=0
source <(sed -n '93,100p' tests/run_all_tests.sh)
output=$'ERROR: LeakSanitizer: detected memory leaks\nSUMMARY: AddressSanitizer: 16 byte(s) leaked in 1 allocation(s).\nruntime error: signed integer overflow'
rc_ok 1 "$output"
printf 'status=%s leaked=%s\n' "$?" "$LEAKED"

The command prints status=0 leaked=1.

Expected behavior
rc_ok() tolerates a nonzero exit only when the captured output represents a leak-only report. Any accompanying ASan or UBSan diagnostic keeps the command failed.

Actual behavior
The LeakSanitizer text is sufficient for rc_ok() to return success even when hard sanitizer diagnostics are present in the same output.

Environment

  • OS: Linux; the classification is shell/grep control flow and is not architecture-specific
  • GCC version: not applicable; the minimal reproduction does not compile the project
  • EigenScript version: main at a916975b765581b6c531174ba28a67a05d5c277f

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions