d888ed0dff
The thr_fd.take() and mem::forget(proc_fd) workarounds were intended to keep the parent's proc scheme handles alive after posix_spawn returns, so the child's ld_so could use them via AT_REDOX_*_FD auxv entries. The boot diagnostic shows the actual relibc binary does NOT take the 'fork' / 'thread-0' kdup path (those calls never appear in the kdup trace), so the workarounds targeted a code path that was not running. The real fix is kernel-side: each Context must hold a self-reference to its own proc handle so the handle cannot be dropped while the context is alive.