commit 95213a8defde4ff69e4111a7ffc7c6d6fd00e7bd
parent 8fc49b4af4a755acf9db8a53cdf6224c6cde7f5c
Author: umhau <umhau@example.invalid>
Date: Wed, 21 Oct 2026 12:00:15 +0000
Docs: 1001 is kCGErrorIllegalArgument; SkyLight wait root cause still unknown
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat:
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/NOTES.md b/NOTES.md
@@ -52,8 +52,10 @@ Run `tools/verify.sh` (boot-args + log summaries only; no ioreg/system_profiler)
connection_fetch_updated_event_queue). Not triggered by our code; IMU callbacks on main stall with it.
- Fix: recovery state machine on its own serial queue, fed directly from the CG callback before the main hop;
rendering on a dedicated CAMetalDisplayLink thread. Forced outage 14.4 s -> 4.4 s.
-- REFUTED hypothesis (vr1): "the window server waits for us to release the captured display". CGDisplayRelease inside
- the REMOVE callback returns 1001 (display already gone) and outages stayed ~4.6 s. Removed.
+- Tested, not supported (vr1 hypothesis): "the window server waits for us to release the captured display".
+ CGDisplayRelease inside the REMOVE callback returns 1001 = kCGErrorIllegalArgument (the id is no longer valid there)
+ and outages stayed ~4.6 s, so that release was removed. This does NOT conclusively rule out every capture-related
+ cause; the root cause of the ~10 s SkyLight wait remains unknown.
- Helper result: DATA1 byte0 = 0x04 observed after a DRST whose IOReturn was 0 and after which the display returned.
Meaning of 0x04 unknown (TI documents 0 = success, 1 = timeout/abort, 3 = rejected). The helper conservatively
exits 1; the app relies on display ADD.
diff --git a/SETUP.md b/SETUP.md
@@ -93,9 +93,10 @@ zsh tools/build.sh # builds the app + the signe
- Shutdown crash (exit -11, double CAMetalDisplayLink invalidate) fixed; 2 clean-exit/restart trials exit 0.
- Fault soak (`evidence/final-metal-worker-soak.txt`, build before the recovery queue): 3 forced outages all
recovered; after them ~7 min untouched with zero drops, 90.00 presented fps, GPU ~1.5 ms/frame, 0 GPU errors.
+ - Root cause of the ~10 s main-thread SkyLight wait after a REMOVE: unknown (see NOTES.md).
- Forced-outage duration (display lost -> back): 14.4 s before the recovery queue, 4.4 s with it
(= 2 s grace + ~2.2 s reset/retrain/re-add). Releasing the capture inside the callback did not help
- (CGDisplayRelease returns 1001 there; outages 4.6 s) and was removed.
+ (CGDisplayRelease returns 1001 = kCGErrorIllegalArgument there; outages 4.6 s) and was removed.
- Every DRST is followed ~5.7 s later by a brief lane-sync blip (IRQ_HPD/INTERLANE retrain) that the app recaptures.
- A no-fault 660 s soak at 90 Hz is in progress; not yet final proof.