Replies: 9 comments 6 replies
|
Well, I'll have to figure out another way to test on 27.x, neither Parallels nor UTM will create a 27.x VM without upgrading the host to 27.x, and I'm not doing that. Let's see if I can capture the breakage from building u+m on 26.7 with CLT 27.0. |
|
@McDutchie , I can't create a 26.7 either for some reason, but it fails just as noisily on macOS 26.6.2 with CLT 27.0. Build log attached. ends with... Total errors: 49 |
|
So, just to be clear, it succeeds in building just fine -- it's the regression tests that fail because ksh crashes. Ugh. This is bad news. I'm still on Sequoia and I don't want to upgrade my machine to Tahoe since I depend on it for work. Guess I'll have to spend god knows how many hours trying to get it to work in a VM so I can debug these crashes. :-/ Thanks for the report. |
|
Maybe it's possible to get a stack trace of one of the failing tests? |
|
No need to bother. A stack trace is just the first step to debugging such problems. Update: I've got Tahoe running in a VM now (took some doing, as expected -- had to add "device support" by extracting and installing a MobileDevice.pkg from an Xcode version that otherwise won't even run on my system, and nobody explains this properly anywhere). Developer Command Line Tools installed too. Next problem: the C compiler can't actually compile anything as it links to the wrong SDK and uses an unknown architecture (???) |
|
@McDutchie ... Ok, more testing. I created a new Parallels 26.6.2 VM, and verified I get the
then HEAD builds without error and passes all regression tests. So it is definitely the choice of SDK the compiler is making that is the problem. On my real M1/Tahoe 26.6.2 Mac, where (thanks @tvalenta for showing in #596 (comment) how to specify the SDK to use) |
|
My usual test of a complex program (qemacs) of course has no problem with CLT 27.0 with the 27.x SDK on Tahoe 26.6.2. Grrrr... |
|
Right, long story short: this is Apple's fault. Again. Yes, you're seeing a nice warning in the build log that pipe2() is not available until macOS 27.0. In the meantime, it still does get shipped in the system libraries in Tahoe, where our feature detection system duly detects it. So it gets used. And crashes ksh. Because Apple decided to ship broken, crashing pipe2() code in macOS Tahoe. Sigh. Life is too short. Patch that undoes the feature detection on macOS unless the minimum macOS version we're building for is 27.0. Please test. diff --git a/src/lib/libast/features/lib b/src/lib/libast/features/lib
index 6edb2e5..6af2fbf 100644
--- a/src/lib/libast/features/lib
+++ b/src/lib/libast/features/lib
@@ -403,3 +403,10 @@ tst macos_strxfrm_bug - note{ macOS strxfrm(3) bug }end execute{
return !(strxfrm(NULL,"\xC2\xA7",0) == 0);
}
}end
+
+cat{
+ /* macOS Tahoe ships a broken pipe2() that crashes, thanks apple :-/ */
+ #if _lib_pipe2 && __APPLE__ && __MACH__ && MAC_OS_X_VERSION_MIN_REQUIRED < 270000
+ #undef _lib_pipe2
+ #endif
+}end |

Uh oh!
There was an error while loading. Please reload this page.
Good evening, @McDutchie.
I wanted to throw out that I made the mistake of installing Command Line Tools 27.0 on Tahoe 26.7, and ksh93u+m failed miserably to build. It looks like the SDK for macOS 27.0 is being chosen during the build.
I backed the CLT off to v26.6, and the build succeeds again.
Tomorrow I will spin up 26.7 and 27.0 VM's and do some messing around.
All reactions