based on my limited testing - adding dprintf() in thread block and unblock:
it’s more like that thread_unblock is not called.
i changed launch_daemon config to simplify things: removed everything except registrar and autologin from system launch config.
this way registrar is able to start
autologin starts, sends a signal to launch_daemon and terminates
system launch_daemon attempts to start user launch_daemon which gets blocked inside runtimer_loader and never unblocked.
@pengphei I can confirm your observation: user threads are getting blocked in WaitForPageEvents
sometimes NotifyPageEvents
get called but more often it’s not. so the blocked threads won’t wake up.
PageWriterRun::Go()
might be getting blocked at some point