Does anyone know if iOS has a watchdog for making sure that SpringBoard runs, and if so, how do I disable it?
... yes it does, /usr/libexec/watchdogd
It just rebooted my phone with a "Userspace watchdog timeout". Sigh.
Unloading /usr/libexec/watchdogd causes another panic ("no checkins from watchdogd in 91 seconds")
Sigh.
watchdogd helpfully tells you how to break it: the panic method is identified by an error message of "watchdogd failed to panic device".
But I'm not going to try to fight it with a debugger: going to try to run WindowServer headless instead.
I tried adding a breakpoint to the "is watchdog defanged" method in watchdogd, which didn't work.
The breakpoint didn't trigger and the device panicked anyways.
I'm guessing I can't debug watchdogd?
watchdogd also ignores watchdog if the service is being debugged; I'll use that
Bypassed the watchdog.
watchdogd helpfully contains code to disable the kernel watchdog, so I just copied it into my own program. github.com/zhuowei/iOS-ru…
• • •
Missing some Tweet in this thread? You can try to
force a refresh
The good news is that running WindowServer with
-virtualonly
bypasses the IOHIDSystem check and gets me to the error message
"unable to register bootstrap port com.apple.CARenderServer"
The bad news is that this means I still need to turn off Backboard/SpringBoard.
Now WindowServer crashes after "MTLDeviceArrayInitialize(): 0 Metal devices" in CA::WindowServer::IOMFBDisplay::IOMFBDisplay -> __CADeviceSupportsUniversalCompression_block_invoke -> MTLCreateSystemDefaultDevice -> WS::Displays::CAManager.
I'm not sure how to get Metal working:
iOS Metal driver uses IOGPU instead of IOServiceMatching(IOAccelerate)
so +[MTLIOAccelDevice registerDevices] is null.
Tried changing it to IOAcceleratorES; didn't work either
Also, the macOS kernel cache has no driver for the A14's GPU.