Actions
Bug #22311
closedBuild crashes on macOS 26 with the macOS 27 SDK because pipe2() and dup3() are unavailable
Bug #22311:
Build crashes on macOS 26 with the macOS 27 SDK because pipe2() and dup3() are unavailable
Description
Environment¶
- macOS 26.6.2
- Command Line Tools with MacOSX27.0.sdk (default
MacOSX.sdk) - Apple clang version 21.0.0 (clang-2100.3.34.2)
Steps to reproduce¶
Result¶
The build warns about dup3 and pipe2, and then miniruby crashes:
../io.c:389:19: warning: 'dup3' is only available on macOS 27.0 or newer [-Wunguarded-availability-new]
../io.c:432:18: warning: 'pipe2' is only available on macOS 27.0 or newer [-Wunguarded-availability-new]
../io.c:8141:18: warning: 'pipe2' is only available on macOS 27.0 or newer [-Wunguarded-availability-new]
...
make: *** [uncommon.mk:1331: builtin_binary.rbbin] Segmentation fault: 11
Cause¶
The macOS 27 SDK declares dup3() and pipe2() as available since macOS 27.0.
AC_CHECK_FUNCS links them without including headers, so configure defines HAVE_DUP3 and HAVE_PIPE2.
In io.c, they are weakly linked through the header and are NULL at runtime on macOS 26.
$ nm -m miniruby | grep -E '_(pipe2|dup3) '
(undefined) weak external _dup3 (from libSystem)
(undefined) weak external _pipe2 (from libSystem)
Notes¶
Autoconf 2.73 makes AC_CHECK_DECL report "no" for such functions on macOS.
Actions