Skip to content

Validate instrumented MSan runtime together with the CI fixes - #573

Open
Krilliac wants to merge 6 commits into
fix/ci-release-evidencefrom
release/msan-validation
Open

Validate instrumented MSan runtime together with the CI fixes#573
Krilliac wants to merge 6 commits into
fix/ci-release-evidencefrom
release/msan-validation

Conversation

@Krilliac

@Krilliac Krilliac commented Sep 7, 2026

Copy link
Copy Markdown
Owner

The latest #569 MSan run still uses the system libc++ and fails with uninitialized std::string data before completing. The earlier instrumented-libc++ run in #568 verified its runtime linkage and then exposed the ReplicatedEntity initialization bug fixed in #569.

This integration preserves #568 and #570 history and combines them with #569: instrumented libc++/libc++abi, bounded sanitizer failure reporting, initialized replication ownership, logger/world isolation, and honest canary skips. Generated merge conflicts were regenerated. Cache save additionally requires successful cache restore to avoid masking earlier infrastructure failures.

Validation: 129 sanitizer wrapper tests, 9 sanitizer evidence tests, 47 workflow tests, source census, full documentation generation, and independent review passed. Parity suite passed all checks except its nonmutation snapshot raced concurrent documentation generation; that single check passed when rerun after generation stopped. Local full SparkTests build passed and the 58 affected logger/wiring/network tests passed with shuffle123. Full local suite cannot run here because Unix sockets return EPERM.

Hosted combined MSan validation and canary negative proof remain pending. MSan remains advisory and no release gate is weakened. This is an integration candidate stacked on #569, not release certification.

Krilliac and others added 3 commits September 6, 2026 18:22
build-linux-msan compiled the engine with -fsanitize=memory but linked
the distribution's libc++, which is not instrumented, so every
std::string written inside libc++.so.1 read as uninitialized: 732
reports in the first 25 tests, a 16 MiB sanitizer log that hit the
wrapper's file-size limit, SparkTests killed by SIGXFSZ with no
completion evidence, and a lane red on Working for months at 18-26
runner minutes per push.

The job now fetches the LLVM 18.1.3 source release matching the runner's
clang-18 (size, SHA-256 and SHA-512 pinned), builds libc++/libc++abi
with LLVM_USE_SANITIZER=MemoryWithOrigins from the checked-in recipe
.github/msan/libcxx-runtime.cmake, caches the install prefix through
split actions/cache restore/save keyed by recipe hash, LLVM tag and
compiler package version, and verifies the prefix on every run before it
is used or saved. SparkTests is compiled with -nostdinc++/-isystem and
linked with -L/-rpath/-lc++abi against that prefix; libc++-dev is no
longer installed so a lost flag fails the link. A verification step
walks every ELF under build/bin and build/lib and checks which libc++
it resolves, its RUNPATH, its direct libc++abi dependency and that it
is MSan-linked (executables define the runtime symbols, shared objects
import them). Tests/TestMSanCanary.cpp proves at run time that this
translation unit is instrumented and that libc++ stores update shadow
memory.

The shared sanitizer wrapper ignores SIGXFSZ so an over-cap write
truncates the log instead of killing the suite (harness fixture added);
the lane runs with halt_on_error=1 so each run yields one deduplicated
signature; a new step labels pre-test infrastructure failures so they
are never mistaken for findings; ENABLE_VULKAN=OFF removes the last
uninstrumented library the tests could reach; the ignorelist loses dead
patterns and the /usr/* entry. Parity expects the extra configure
record, inventory regenerated last, readiness status, the reproducible
recipe and both copies of the build/CI and validation skills updated.
The lane stays continue-on-error and outside the required gate until a
run classifies clean.

Static and repository validators only (workflow shape, exact gate,
privilege boundaries, sanitizer evidence and pipeline harness, parity,
inventory, docs contract, wiki, site data, registration): all pass. The
SIGXFSZ fixture and the canary's RED side need Linux; the first CI run
of this branch is their proof.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 7, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-07T01:54:04.402939Z 6c332e9 PR opened
🔒 Security Review Completed 2026-09-07T01:53:53.286514Z 6c332e9 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

⏳ CodeQL Report Pending

The pull-request head changed. Results from earlier commits do not apply while the new head is being scanned.

Current PR head: ed61b893689ebd1f45201f77cf66a1bad079accd

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6c332e9c5c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/readiness/build-matrix-inventory.json Outdated
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