Teknium
ac2e4207c1
fix(desktop): confirm detached updater spawn before quitting for hand-off ( #66753 )
...
The update hand-off spawned the detached updater, called unref(), and
quit unconditionally after the 2.5s dwell. Node reports exec failures
(ENOENT/EACCES) asynchronously via the child 'error' event, and a
short-lived updater can die inside that window — in both cases the app
vanished with no updater, no relaunch, and no evidence (the reported
macOS incident, and the posix.sh early-death reports on the same
thread).
Add observeUpdaterHandoff(): watch the just-spawned child for 'error'
and early 'exit' during the existing dwell (no added latency — the
dwell doubles as the settle window). Clean exit 0 inside the window
stays a success (the Windows `cmd start` wrapper exits immediately by
design); a spawn error, non-zero exit, or signal death is a failed
hand-off. On failure:
- applyUpdates (Windows hand-off): don't quit — restart the backend and
surface a structured error to the UI.
- applyUpdatesPosixHandoff (mac/linux): don't quit — surface the error.
- handOffWindowsBootstrapRecovery: return false so the caller falls
through to its next recovery path instead of quitting into nothing.
The pre-written update marker names the dead child pid, so
readLiveUpdateMarker self-heals it; no marker cleanup needed. Children
without an event interface settle ok after the window, keeping the
observation a best-effort hardening rather than a new way to wedge an
update.
Covered by 7 new unit tests (spawn-error, non-zero exit, signal death,
clean exit 0 wrapper, survival, double-settle, event-less child).
Closes #66753
2026-08-14 21:59:29 -07:00
..
2026-07-26 16:12:14 -05:00
2026-07-26 16:12:14 -05:00
2026-08-10 17:02:56 -07:00
2026-07-13 17:22:17 -04:00
2026-07-13 17:22:17 -04:00
2026-07-16 14:55:58 -04:00
2026-07-16 14:53:11 -04:00
2026-08-02 03:33:09 +00:00
2026-08-01 20:09:35 -04:00
2026-07-26 04:11:26 +00:00
2026-07-25 21:52:26 -05:00
2026-08-14 20:23:07 -07:00
2026-08-14 20:23:07 -07:00
2026-07-29 13:59:11 +05:30
2026-07-29 16:52:53 +05:30
2026-07-13 17:22:17 -04:00
2026-07-13 17:22:17 -04:00
2026-07-25 21:52:45 -05:00
2026-07-25 21:52:45 -05:00
2026-08-13 03:33:45 +00:00
2026-07-14 10:24:15 -04:00
2026-07-31 22:33:53 -07:00
2026-08-01 20:45:40 +00:00
2026-07-19 23:42:14 +00:00
2026-07-19 23:42:14 +00:00
2026-07-20 23:01:49 +02:00
2026-07-24 12:55:06 -05:00
2026-08-14 20:33:39 -07:00
2026-08-14 20:33:39 -07:00
2026-07-27 13:41:59 -05:00
2026-07-27 13:41:59 -05:00
2026-07-13 17:22:17 -04:00
2026-07-08 16:24:16 -07:00
2026-07-16 19:57:39 +00:00
2026-07-20 23:01:49 +02:00
2026-07-20 23:01:49 +02:00
2026-07-13 17:22:17 -04:00
2026-07-13 17:22:17 -04:00
2026-07-27 23:52:33 -05:00
2026-07-27 23:52:33 -05:00
2026-07-08 16:24:16 -07:00
2026-07-28 13:40:44 -05:00
2026-07-28 13:40:44 -05:00
2026-07-20 18:33:14 -05:00
2026-07-20 18:36:05 -05:00
2026-08-14 21:44:50 +00:00
2026-08-14 16:27:01 -05:00
2026-07-23 17:59:58 -07:00
2026-07-23 17:59:58 -07:00
2026-07-27 02:52:53 +00:00
2026-07-27 02:52:53 +00:00
2026-07-24 12:55:06 -05:00
2026-07-24 12:55:06 -05:00
2026-07-24 12:55:06 -05:00
2026-07-13 17:22:17 -04:00
2026-07-12 05:32:54 -04:00
2026-07-13 17:22:17 -04:00
2026-07-13 17:22:17 -04:00
2026-08-14 16:51:00 -05:00
2026-07-21 14:28:28 +00:00
2026-07-21 14:28:28 +00:00
2026-08-03 00:08:30 +05:30
2026-08-12 22:48:00 -05:00
2026-07-13 17:22:17 -04:00
2026-07-08 16:24:16 -07:00
2026-08-05 16:32:54 +00:00
2026-08-05 11:43:09 -04:00
2026-08-12 01:41:34 +00:00
2026-08-11 17:03:00 -05:00
2026-08-12 22:38:17 -07:00
2026-08-12 22:38:17 -07:00
2026-08-08 22:15:24 -05:00
2026-08-08 22:15:24 -05:00
2026-08-10 05:21:05 -05:00
2026-08-10 10:44:00 +00:00
2026-08-10 05:21:05 -05:00
2026-08-10 10:44:00 +00:00
2026-08-09 09:10:59 +00:00
2026-08-09 09:10:59 +00:00
2026-08-09 09:51:41 +00:00
2026-08-09 04:43:10 -05:00
2026-07-13 17:22:17 -04:00
2026-07-31 00:38:11 -05:00
2026-07-16 19:57:39 +00:00
2026-07-16 15:33:38 -04:00
2026-08-14 21:59:29 -07:00
2026-07-25 21:52:40 -05:00
2026-07-25 21:52:40 -05:00
2026-07-22 16:30:14 +00:00
2026-07-22 16:30:14 +00:00
2026-07-31 16:22:58 +00:00
2026-07-31 10:16:21 -04:00
2026-07-31 10:16:21 -04:00
2026-07-31 10:16:21 -04:00
2026-07-13 17:22:17 -04:00
2026-07-08 16:24:16 -07:00
2026-07-20 11:50:22 -05:00
2026-07-20 11:50:22 -05:00
2026-08-14 16:27:01 -05:00
2026-07-24 12:55:06 -05:00
2026-07-31 18:54:27 +00:00
2026-07-24 12:55:06 -05:00
2026-07-13 17:22:17 -04:00
2026-07-13 17:22:17 -04:00
2026-08-14 20:23:47 -07:00
2026-08-14 20:23:47 -07:00
2026-07-26 17:48:19 -07:00
2026-07-31 18:54:27 +00:00
2026-07-27 15:47:57 -05:00
2026-07-27 15:47:57 -05:00
2026-08-10 18:04:59 -07:00
2026-08-10 18:04:59 -07:00
2026-07-27 13:41:59 -05:00
2026-07-27 13:41:59 -05:00
2026-08-14 22:16:25 +00:00
2026-08-14 02:21:20 -05:00
2026-08-11 00:20:02 +00:00
2026-08-11 00:20:02 +00:00
2026-08-14 20:22:56 -07:00
2026-08-14 20:22:56 -07:00
2026-07-25 15:19:29 -04:00
2026-07-25 15:19:29 -04:00
2026-08-01 14:30:16 -07:00
2026-08-01 14:30:16 -07:00
2026-07-20 23:01:49 +02:00
2026-07-20 23:01:49 +02:00
2026-07-20 23:01:49 +02:00
2026-07-20 23:01:49 +02:00
2026-07-31 00:38:11 -05:00
2026-07-31 00:38:11 -05:00
2026-07-13 17:22:17 -04:00
2026-07-08 16:24:16 -07:00
2026-08-14 21:44:50 +00:00
2026-08-14 13:09:44 -07:00
2026-07-28 23:53:25 -07:00
2026-07-28 23:53:25 -07:00
2026-08-01 10:47:45 -07:00
2026-08-01 10:47:45 -07:00
2026-07-13 17:22:17 -04:00
2026-07-13 17:22:17 -04:00
2026-08-14 21:59:29 -07:00
2026-08-14 21:59:29 -07:00
2026-07-28 21:55:38 +00:00
2026-07-28 21:55:38 +00:00
2026-07-13 17:22:17 -04:00
2026-07-08 16:24:16 -07:00
2026-08-10 19:00:19 -07:00
2026-08-10 19:00:19 -07:00
2026-08-01 14:30:11 -07:00
2026-08-09 04:43:10 -05:00
2026-08-14 16:51:00 -05:00
2026-08-11 02:09:04 +00:00
2026-08-11 02:09:04 +00:00
2026-08-08 16:51:44 -05:00
2026-08-08 16:51:44 -05:00
2026-08-08 22:13:08 -05:00
2026-08-08 22:17:38 -05:00
2026-08-10 17:02:56 -07:00
2026-07-13 17:22:17 -04:00
2026-07-15 21:40:56 +00:00
2026-07-15 21:40:56 +00:00
2026-08-01 14:30:16 -07:00
2026-08-01 14:30:16 -07:00
2026-07-20 23:01:49 +02:00
2026-07-18 02:26:19 -07:00
2026-07-18 02:26:19 -07:00
2026-07-17 18:55:34 -04:00
2026-07-18 04:56:56 +00:00
2026-07-13 17:22:17 -04:00
2026-07-13 17:22:17 -04:00
2026-07-13 17:22:17 -04:00
2026-07-08 16:24:16 -07:00
2026-07-13 17:22:17 -04:00
2026-07-08 16:24:16 -07:00
2026-07-15 21:40:56 +00:00
2026-07-15 21:40:56 +00:00
2026-08-14 14:50:45 -07:00
2026-08-14 22:16:25 +00:00