AI-generated analysisPublished automatically and not human-verified. Validated context appears in community notes below.
← Watch feed
Low 33 Bitcoin

Merge bitcoin/bitcoin#36218: build: avoid `pipe2` on Darwin (for now)

Public commit record

What the developer wrote

Authored by merge-script

91/100 · Strong
Merge bitcoin/bitcoin#36218: build: avoid `pipe2` on Darwin (for now)

9c7748315d3124d1abe6a4606743cd9274beee66 build: avoid pipe2 on Darwin (for now) (fanquake)

Pull request description:

macOS 27 will support `pipe2` at runtime, and Xcode 27 (and Command Line Tools) support it at compile time. This means a macOS < 27 system will detect support for `pipe2`, but then binaries will crash at runtime, as pipe2 is not available.

Just avoid `pipe2` on macOS for now, and continue using `pipe`. Note that the compilation also produces availability warnings:
```bash
[415/1121] Building CXX object src/util/CMakeFiles/bitcoin_util.dir/tokenpipe.cpp.o
../src/util/tokenpipe.cpp:89:9: warning: 'pipe2' is only available on macOS 27.0 or newer [-Wunguarded-availability-new]
89 | if (pipe2(fds, O_CLOEXEC) != 0) {
| ^~~~~
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/unistd.h:219:9: note: 'pipe2' has been marked as being introduced in macOS 27.0 here, but the deployment target is macOS 26.0.0
219 | int pipe2(int [2], int);
| ^
../src/util/tokenpipe.cpp:89:9: note: enclose 'pipe2' in a __builtin_available check to silence this warning
89 | if (pipe2(fds, O_CLOEXEC) != 0) {
| ^~~~~
90 | return std::nullopt;
91 | }
```
and this will need to be backported. When macOS 27 is released, we could change approach, but wanted to PR something straightforward (and backportable) for `32.x`.

ACKs for top commit:
hebasto:
ACK 9c7748315d3124d1abe6a4606743cd9274beee66, tested on macOS Tahoe 26.6.2 with CLT 27.0:
willcl-ark:
ACK 9c7748315d3124d1abe6a4606743cd9274beee66

Tree-SHA512: 5aa97b93e7038344a5118eef2660b101e443eff52ab94fb4b8eb88ec4e09b8a3000b9b4e2aa59b406d8acbb6d9add8f0c3a2dd5e1db53b1dfc97a0fcbaf48995
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
The short version

What changed, and why it matters

This is a build-system fix for Bitcoin Core on macOS. Apple's upcoming developer tools report that a function called `pipe2` is available, but older macOS versions do not actually provide it at runtime, which would cause Bitcoin Core to crash when run on those systems. The change simply skips the `pipe2` feature check on macOS so the project falls back to the older, widely supported `pipe` function. It is a reliability/stability fix, not a security vulnerability patch.

Recommended action

Treat as a normal build/compat fix. Backport to the 32.x branch as the author intended. No special security response is needed; users building on macOS with Xcode/CLT 27 on older deployment targets will avoid runtime crashes.

Security signals we found

01

No security-relevant code change: only build-system feature detection logic

02

No memory safety, cryptography, network, or consensus code touched

03

Crash-on-launch on older macOS is a denial-of-service-like symptom, but caused by toolchain/SDK availability mismatch, not by an attacker

04

No CVE, advisory, or vendor security disclosure referenced in commit

Risk score

Why this scored 33/100

Our methodology →
Potential impact 12/30
Exploitability 0/25
Stealth signal 0/15
Affected reach 8/15
Confidence 9/10
Evidence quality 4/5
Human-validated context

Community notes

Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.

No validated notes yet.

The AI analysis stands alone for now. Submit a note if you can add evidence or important context.