teknium1
9e4492fd74
fix(process_registry): reader loop no longer hangs when an orphaned grandchild holds the stdout pipe
...
When a background terminal() command backgrounds its own long-lived
child (`node server.js &`, `sleep 300 &`), the grandchild inherits the
write end of the reader thread's stdout pipe. The direct bash child
exits promptly, but the pipe never reaches EOF while the grandchild
lives — so `_reader_loop`'s blocking `read1()` parked the thread
forever, `session.exited` never flipped on its own, and
`notify_on_complete` was silently lost. `_reconcile_local_exit`
(#17327 ) only runs lazily from poll()/wait(), so nothing autonomous
ever surfaced the exit; each occurrence also leaked a reader thread
and pipe fd for the grandchild's lifetime.
Fix: on POSIX, drain via select() with a short poll interval and stop
shortly after the direct child exits even if the pipe hasn't EOF'd —
the same pattern the foreground path uses in
tools/environments/base.py::_wait_for_process (#8340 ). Windows pipes
don't support select(), so the blocking path is kept there with the
existing lazy reconcile as the safety net; mocked/iterator stdout
streams (no usable fileno) also keep the historical path.
Fixes #68915
2026-07-24 15:59:02 -07:00
..
2026-07-17 04:53:38 -07:00
2026-07-12 22:43:57 -07:00
2026-07-13 04:31:55 -07:00
2026-07-17 04:53:04 -07:00
2026-07-24 15:55:08 -07:00
2026-07-23 11:55:17 -07:00
2026-07-16 01:28:24 -07:00
2026-07-23 19:45:54 -07:00
2026-07-16 23:41:26 -07:00
2026-07-16 23:41:26 -07:00
2026-07-18 10:07:46 -07:00
2026-07-22 23:25:13 -05:00
2026-07-16 04:24:07 -07:00
2026-07-16 04:25:19 -07:00
2026-07-21 12:04:47 -07:00
2026-07-23 08:11:58 -07:00
2026-07-18 15:07:04 -07:00
2026-07-23 08:11:58 -07:00
2026-07-14 02:59:39 +05:30
2026-07-16 00:18:38 -07:00
2026-07-20 09:21:08 -07:00
2026-07-24 13:37:04 +10:00
2026-07-23 11:55:17 -07:00
2026-07-23 07:33:36 -07:00
2026-07-22 06:58:45 -07:00
2026-07-20 06:50:31 -07:00
2026-07-22 12:13:01 -05:00
2026-07-09 15:38:32 +05:30
2026-07-07 02:40:04 -07:00
2026-07-24 11:45:57 -07:00
2026-07-24 09:49:00 -07:00
2026-07-16 08:52:47 +10:00
2026-07-20 06:50:11 -07:00
2026-07-23 07:33:36 -07:00
2026-07-17 20:55:24 +00:00
2026-07-13 01:59:58 -04:00
2026-07-16 00:18:38 -07:00
2026-07-20 02:25:53 -07:00
2026-07-16 00:18:38 -07:00
2026-07-16 00:18:38 -07:00
2026-07-16 00:18:38 -07:00
2026-07-14 17:09:40 +05:30
2026-07-16 22:46:46 -04:00
2026-07-22 12:13:01 -05:00
2026-07-23 07:33:36 -07:00
2026-07-14 02:59:39 +05:30
2026-07-17 20:55:24 +00:00
2026-07-23 08:34:06 -07:00
2026-07-16 12:48:48 -07:00
2026-07-17 20:55:24 +00:00
2026-07-17 06:54:51 -07:00
2026-07-16 01:28:24 -07:00
2026-07-16 01:28:13 -07:00
2026-07-16 01:28:24 -07:00
2026-07-17 20:55:24 +00:00
2026-07-21 12:43:27 -07:00
2026-07-17 20:55:24 +00:00
2026-07-17 20:55:24 +00:00
2026-07-17 04:50:47 -07:00
2026-07-21 12:42:33 -07:00
2026-07-17 04:57:12 -07:00
2026-07-17 04:50:47 -07:00
2026-07-17 04:50:47 -07:00
2026-07-21 12:43:00 -07:00
2026-07-18 18:49:56 -04:00
2026-07-21 12:42:33 -07:00
2026-07-21 12:42:33 -07:00
2026-07-17 20:55:24 +00:00
2026-07-21 12:43:27 -07:00
2026-07-17 20:55:24 +00:00
2026-07-24 15:47:12 -07:00
2026-07-07 15:16:00 -07:00
2026-07-18 04:15:13 -07:00
2026-07-07 15:16:00 -07:00
2026-07-21 19:54:40 -05:00
2026-07-22 03:19:42 -07:00
2026-07-21 12:42:33 -07:00
2026-07-09 15:38:32 +05:30
2026-07-24 15:58:01 -07:00
2026-07-09 20:03:11 -07:00
2026-07-22 12:13:01 -05:00
2026-07-13 02:42:18 -07:00
2026-07-24 15:59:02 -07:00
2026-07-24 13:00:53 +05:30
2026-07-17 20:55:24 +00:00
2026-07-07 15:14:30 -07:00
2026-07-16 00:18:38 -07:00
2026-07-14 22:14:10 -07:00
2026-07-07 02:52:17 -07:00
2026-07-23 12:01:24 -07:00
2026-07-22 21:58:13 -07:00
2026-07-16 00:18:38 -07:00
2026-07-22 16:59:09 -07:00
2026-07-23 11:44:43 -07:00
2026-07-24 07:54:21 -07:00
2026-07-23 11:44:43 -07:00
2026-07-23 11:44:43 -07:00
2026-07-09 15:38:14 +05:30
2026-07-07 05:14:00 -07:00
2026-07-17 04:52:02 -07:00
2026-07-22 21:58:13 -07:00
2026-07-24 11:45:57 -07:00
2026-07-09 15:38:32 +05:30
2026-07-16 08:55:10 -07:00
2026-07-14 22:00:28 -07:00
2026-07-16 00:18:38 -07:00
2026-07-21 05:27:23 -07:00
2026-07-14 02:59:39 +05:30
2026-07-22 17:47:04 -05:00
2026-07-14 02:59:39 +05:30
2026-07-14 02:59:39 +05:30
2026-07-14 02:59:39 +05:30
2026-07-13 22:26:19 -07:00
2026-07-14 02:59:39 +05:30
2026-07-14 02:59:39 +05:30
2026-07-22 17:53:06 -05:00
2026-07-24 10:37:29 -07:00
2026-07-14 02:59:39 +05:30
2026-07-22 17:47:15 -05:00
2026-07-23 07:33:36 -07:00
2026-07-21 11:51:01 +05:30
2026-07-17 11:37:25 +05:30
2026-07-09 20:28:44 -07:00
2026-07-10 19:14:06 +05:30
2026-07-09 15:38:32 +05:30
2026-07-23 17:59:47 -07:00
2026-07-08 06:17:56 -07:00
2026-07-22 04:40:07 -07:00
2026-07-07 22:14:33 -07:00
2026-07-23 21:06:47 -07:00