What changed, and why it matters
This commit adds a new continuous integration (CI) test job to Bitcoin Core's GitHub Actions workflow. It enables ThreadSanitizer (TSan) testing with the depends build system and disables the GUI. It also adds a system setting tweak (vm.mmap_rnd_bits=28) specifically for that TSan job to prevent crashes caused by high address space layout randomization (ASLR) entropy. This is a testing infrastructure change, not a change to Bitcoin Core's runtime code, consensus rules, wallet, networking, or any user-facing functionality.
No security action required. This is a benign CI infrastructure addition. Reviewers may optionally verify that the new TSan job passes and that the mmap_rnd_bits setting is only applied within the CI environment.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff modifies .github/workflows/ci.yml to add a new matrix entry named ‘TSan, depends, no gui’ using the existing ./ci/test/00_setup_env_native_tsan.sh environment file. It also adds a step that sets vm.mmap_rnd_bits=28 when the container name is ci_native_tsan, with a comment explaining this prevents crashes due to high ASLR entropy. The change is purely CI configuration and does not alter source code, build scripts consumed by end users, or runtime behavior of the Bitcoin Core software.
Changed components
.github/workflows/ci.ymlInspect captured patch +11 / −0
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 088b1bd9..946fff1a 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -481,6 +481,12 @@ jobs:
timeout-minutes: 120
file-env: './ci/test/00_setup_env_native_tidy.sh'
+ - name: 'TSan, depends, no gui'
+ cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-lg'
+ fallback-runner: 'ubuntu-24.04'
+ timeout-minutes: 120
+ file-env: './ci/test/00_setup_env_native_tsan.sh'
+
steps:
- name: Checkout
uses: actions/checkout@v5
@@ -503,6 +509,11 @@ jobs:
# so any settings will need to be written to the settings env file:
run: sed -i "s|\${INSTALL_BCC_TRACING_TOOLS}|true|g" ./ci/test/00_setup_env_native_asan.sh
+ - name: Set mmap_rnd_bits
+ if: ${{ env.CONTAINER_NAME == 'ci_native_tsan' }}
+ # Prevents crashes due to high ASLR entropy
+ run: sudo sysctl -w vm.mmap_rnd_bits=28
+
- name: CI script
run: ./ci/test_run_all.sh
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.