fix(launchd): reap orphaned guest zombies and harden stale-client recovery

Children whose parent dies are reparented to the guest launchd, and its job
manager only reaps PIDs it has a job record for, so every leftover mldr/CEF
process from a killed client tree stayed a zombie until shutdown. Reap zombies
that launchd owns but does not track on a 5 second timer; tracked jobs keep
their exit status for job_reap(). proc_listpids() is not implemented in Darling
yet, so the scan enumerates the guest PID namespace through /proc.

recover-stale-client now signals the stale tree deepest-first so a live parent
can still reap its own children, and prepare.py repairs interrupted checkouts
and missing Git LFS objects instead of publishing pointer text as a library.
This commit is contained in:
MintMachineHQ committed 2026-10-23 23:36:20 -06:00
1 parent 24276b91c6
commit 9291d6accd
5 files changed
+233 -20

No files matched your search

+5 -2
View File
@@ -157,8 +157,11 @@ the normal launcher start the product again. It recognizes `LeagueClientUx`,
`Riot Client` and `RiotClientServices` windows, does nothing while a game process
is running or when a managed client window is visible, and fails closed when
X11/Xwayland properties are missing or unreadable. This saves the Darling
bootstrap but not the Riot Client/CEF startup itself. If no window appears
afterward, use a full runtime shutdown/restart.
bootstrap but not the Riot Client/CEF startup itself. The stale tree is signalled
deepest-first so live parents can still reap their own children; anything that is
left over is reparented to the guest launchd, which reaps untracked zombies
within a few seconds, so a full runtime restart is not needed to clear them. If no
window appears afterward, use a full runtime shutdown/restart.
### Multiple client-in-game helpers