Skip to content

Commit 4b552ec

Browse files
committed
build(macos): toolchain pin llvm@20.1.7 -> 22.1.8; forensics extracts crash termination
Rounds 1-4 never tested llvm 22: mcpp.toml's macos pin kept resolving 20.1.7 (whose lib/ dylibs silently SIGABRT at load — they were never exercised in the static-archive era). Pin the current llvm so mcpp's own macOS build+tests run on it; forensics now parses the .ips crash report (termination + triggered-thread frames) instead of dumping raw JSON.
1 parent d2e10cc commit 4b552ec

2 files changed

Lines changed: 20 additions & 4 deletions

File tree

.github/workflows/ci-macos.yml

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -351,10 +351,26 @@ jobs:
351351
"$BIN" > run.out 2>&1
352352
echo "exit=$?"
353353
head -20 run.out
354-
sleep 3
355-
echo "--- newest crash report ---"
354+
sleep 5
355+
echo "--- newest crash report (termination) ---"
356356
CR=$(ls -t "$HOME/Library/Logs/DiagnosticReports"/*.ips 2>/dev/null | head -1)
357-
[ -n "$CR" ] && head -c 4000 "$CR" || echo "none"
357+
if [ -n "$CR" ]; then
358+
python3 - "$CR" <<'PY'
359+
import json, sys
360+
lines = open(sys.argv[1]).read().splitlines()
361+
meta = json.loads(lines[0]); body = json.loads("\n".join(lines[1:]))
362+
print("proc:", meta.get("app_name"), "| exc:", body.get("exception", {}))
363+
print("termination:", body.get("termination", {}))
364+
t = [th for th in body.get("threads", []) if th.get("triggered")]
365+
for fr in (t[0].get("frames", [])[:12] if t else []):
366+
print(" ", fr.get("imageIndex"), fr.get("symbol", fr.get("imageOffset")))
367+
imgs = body.get("usedImages", [])
368+
for i, im in enumerate(imgs[:12]):
369+
print("img", i, im.get("path"))
370+
PY
371+
else
372+
echo "none"
373+
fi
358374
359375
- name: E2E suite
360376
# See ci-linux.yml — fail-fast on hung tests instead of burning the

mcpp.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ include_dirs = ["src/libs/json"]
1818

1919
[toolchain]
2020
default = "gcc@16.1.0"
21-
macos = "llvm@20.1.7"
21+
macos = "llvm@22.1.8"
2222
windows = "llvm@20.1.7"
2323

2424
# Per-target overrides: `mcpp build --target x86_64-linux-musl` (or the

0 commit comments

Comments
 (0)