go/src/os
Michael Pratt b788e91bad os: always return syscall.ECHILD from Wait for done process
For processes that don't exist at lookup time, CL 570036 and CL 588675
make Wait return unconditionally return ErrProcessDone when using pidfd,
rather than attempting to make a wait system call.

This is consistent with Signal/Kill, but inconsistent with the previous
behavior of Wait, which would pass through the kernel error,
syscall.ECHILD.

Switch the ErrProcessDone case to return syscall.ECHILD instead for
consistency with previous behavior.

That said, I do think a future release should consider changing ECHILD
to ErrProcessDone in all cases (including when making an actual wait
system call) for better consistency with Signal/Kill/FindProcess.

Fixes #67926.

Cq-Include-Trybots: luci.golang.try:gotip-darwin-amd64_14,gotip-solaris-amd64,gotip-openbsd-amd64
Change-Id: I1f688a5751d0f3aecea99c3a5b35c7894cfc2beb
Reviewed-on: https://go-review.googlesource.com/c/go/+/591816
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Kirill Kolyshkin <kolyshkin@gmail.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
2024-06-11 18:08:44 +00:00
..
exec os/exec: on Windows look for extensions in Run if not already done 2024-06-07 20:13:53 +00:00
signal os/signal: remove SIGSYS from list of signals that take no action 2024-06-07 18:11:00 +00:00
testdata
user os/user: make Lookup* functions properly handle ENOENT 2024-06-11 17:08:14 +00:00
dir.go all: change from sort functions to slices functions where feasible 2024-05-23 01:00:11 +00:00
dir_darwin.go os: make File.Readdir et al concurrency-safe 2024-04-15 20:52:06 +00:00
dir_plan9.go os: make File.Readdir et al concurrency-safe 2024-04-15 20:52:06 +00:00
dir_unix.go os: use internal/byteorder 2024-05-14 20:11:45 +00:00
dir_windows.go os: make File.Readdir et al concurrency-safe 2024-04-15 20:52:06 +00:00
dirent_aix.go
dirent_dragonfly.go
dirent_freebsd.go
dirent_js.go
dirent_linux.go
dirent_netbsd.go
dirent_openbsd.go
dirent_solaris.go
dirent_wasip1.go
env.go os: add available godoc link 2024-02-26 21:33:12 +00:00
env_test.go os, syscall: update unreachable link about =C: envs 2023-07-04 15:31:54 +00:00
env_unix_test.go
error.go os: add available godoc link 2024-02-26 21:33:12 +00:00
error_errno.go
error_plan9.go
error_test.go
error_unix_test.go
error_windows_test.go
example_test.go os: relax tests and add examples for UserCacheDir and UserConfigDir 2024-01-10 17:35:49 +00:00
exec.go os: overhaul handling of PID vs pidfd within Process 2024-06-10 22:06:47 +00:00
exec_linux.go os: overhaul handling of PID vs pidfd within Process 2024-06-10 22:06:47 +00:00
exec_nohandle.go os: overhaul handling of PID vs pidfd within Process 2024-06-10 22:06:47 +00:00
exec_plan9.go os: overhaul handling of PID vs pidfd within Process 2024-06-10 22:06:47 +00:00
exec_posix.go os: overhaul handling of PID vs pidfd within Process 2024-06-10 22:06:47 +00:00
exec_test.go os: always return syscall.ECHILD from Wait for done process 2024-06-11 18:08:44 +00:00
exec_unix.go os: overhaul handling of PID vs pidfd within Process 2024-06-10 22:06:47 +00:00
exec_unix_test.go os: always return syscall.ECHILD from Wait for done process 2024-06-11 18:08:44 +00:00
exec_windows.go os: overhaul handling of PID vs pidfd within Process 2024-06-10 22:06:47 +00:00
exec_windows_test.go os: remove 5ms sleep on Windows in (*Process).Wait 2023-07-26 15:13:24 +00:00
executable.go os: add available godoc link 2024-02-26 21:33:12 +00:00
executable_darwin.go cmd/link: disallow pull-only linknames 2024-05-15 19:57:43 +00:00
executable_dragonfly.go
executable_freebsd.go
executable_path.go
executable_plan9.go
executable_procfs.go os: use stringslite.TrimSuffix 2024-05-05 00:26:04 +00:00
executable_solaris.go cmd/link: disallow pull-only linknames 2024-05-15 19:57:43 +00:00
executable_sysctl.go
executable_test.go all: use ^$ instead of XXXX, NoSuchTestExists to match no tests 2023-09-05 23:35:32 +00:00
executable_wasm.go
executable_windows.go
export_linux_test.go os: overhaul handling of PID vs pidfd within Process 2024-06-10 22:06:47 +00:00
export_test.go
export_unix_test.go
export_windows_test.go os: support relative paths in fixLongPath 2024-04-01 14:34:38 +00:00
fifo_test.go os: kick FIFOs with O_NONBLOCK out of the kqueue on Darwin/iOS 2024-03-19 11:47:23 +00:00
file.go all: rename internal/safefilepath to internal/filepathlite 2024-04-26 23:07:37 +00:00
file_mutex_plan9.go
file_open_unix.go
file_open_wasip1.go
file_plan9.go os: use stringslite.HasPrefix 2024-04-30 15:35:30 +00:00
file_posix.go os: add available godoc link 2024-02-26 21:33:12 +00:00
file_unix.go os: RemoveAll: fix symlink race for unix 2024-05-29 13:52:34 +00:00
file_wasip1.go net: implement wasip1 FileListener and FileConn 2023-05-25 00:12:41 +00:00
file_windows.go os: use filepathlite.FromSlash 2024-04-30 15:38:38 +00:00
getwd.go
os_test.go all: change from sort functions to slices functions where feasible 2024-05-23 01:00:11 +00:00
os_unix_test.go os: in TestMkdirStickyUmask, create a non-sticky directory as a control 2023-09-18 17:32:43 +00:00
os_windows_test.go all: change from sort functions to slices functions where feasible 2024-05-23 01:00:11 +00:00
path.go os: use filepathlite.VolumeName 2024-04-30 15:38:09 +00:00
path_plan9.go os: use filepathlite.VolumeName 2024-04-30 15:38:09 +00:00
path_test.go
path_unix.go os: use filepathlite.Base 2024-05-07 18:44:48 +00:00
path_windows.go os: use filepathlite.Base 2024-05-07 18:44:48 +00:00
path_windows_test.go all: fix some typos in comments 2024-04-23 16:37:32 +00:00
pidfd_linux.go os: always return syscall.ECHILD from Wait for done process 2024-06-11 18:08:44 +00:00
pidfd_linux_test.go os: always return syscall.ECHILD from Wait for done process 2024-06-11 18:08:44 +00:00
pidfd_other.go os: overhaul handling of PID vs pidfd within Process 2024-06-10 22:06:47 +00:00
pipe2_unix.go os: kick FIFOs with O_NONBLOCK out of the kqueue on Darwin/iOS 2024-03-19 11:47:23 +00:00
pipe_test.go all: use ^TestName$ regular pattern for invoking a single test 2023-09-05 23:35:29 +00:00
pipe_unix.go os: kick FIFOs with O_NONBLOCK out of the kqueue on Darwin/iOS 2024-03-19 11:47:23 +00:00
pipe_wasm.go
proc.go os: add available godoc link 2024-02-26 21:33:12 +00:00
rawconn.go
rawconn_test.go
read_test.go os: change ioutil-test to os-test in test 2024-05-10 02:36:46 +00:00
readfrom_linux_test.go internal/poll, net, os: remove poll.Splice syscall name return value 2024-04-02 21:49:26 +00:00
removeall_at.go os: RemoveAll: fix error returned 2024-06-11 17:09:26 +00:00
removeall_noat.go
removeall_test.go os: reuse buffer pool more aggressively in readdir 2024-03-25 19:21:29 +00:00
stat.go os: add available godoc link 2024-02-26 21:33:12 +00:00
stat_aix.go os: use filepathlite.Base 2024-05-07 18:44:48 +00:00
stat_darwin.go os: use filepathlite.Base 2024-05-07 18:44:48 +00:00
stat_dragonfly.go os: use filepathlite.Base 2024-05-07 18:44:48 +00:00
stat_freebsd.go os: use filepathlite.Base 2024-05-07 18:44:48 +00:00
stat_js.go os: use filepathlite.Base 2024-05-07 18:44:48 +00:00
stat_linux.go os: use filepathlite.Base 2024-05-07 18:44:48 +00:00
stat_netbsd.go os: use filepathlite.Base 2024-05-07 18:44:48 +00:00
stat_openbsd.go os: use filepathlite.Base 2024-05-07 18:44:48 +00:00
stat_plan9.go
stat_solaris.go os: use filepathlite.Base 2024-05-07 18:44:48 +00:00
stat_test.go os: convert poll.ErrFileClosed to ErrClosed for Stat 2024-04-03 22:38:03 +00:00
stat_unix.go os: convert poll.ErrFileClosed to ErrClosed for Stat 2024-04-03 22:38:03 +00:00
stat_wasip1.go os: use filepathlite.Base 2024-05-07 18:44:48 +00:00
stat_windows.go os: use filepathlite.Base 2024-05-07 18:44:48 +00:00
sticky_bsd.go
sticky_notbsd.go
sys.go
sys_aix.go
sys_bsd.go
sys_js.go
sys_linux.go
sys_plan9.go
sys_solaris.go
sys_unix.go
sys_wasip1.go
sys_windows.go
tempfile.go os: document file mode of temporary files 2024-04-12 18:04:39 +00:00
tempfile_test.go
timeout_test.go all: fix spelling errors 2023-06-14 00:03:57 +00:00
types.go os: make File.Readdir et al concurrency-safe 2024-04-15 20:52:06 +00:00
types_plan9.go
types_unix.go
types_windows.go os: use filepathlite.Base 2024-05-07 18:44:48 +00:00
wait6_dragonfly.go
wait6_freebsd64.go
wait6_freebsd_386.go
wait6_freebsd_arm.go
wait6_netbsd.go
wait_unimp.go
wait_wait6.go
wait_waitid.go os: replace "used to used" with "used to use" in description text 2023-08-07 00:27:57 +00:00
writeto_linux_test.go net, os, internal/poll: test for use of sendfile 2024-04-26 18:12:56 +00:00
zero_copy_linux.go net, os, internal/poll: test for use of sendfile 2024-04-26 18:12:56 +00:00
zero_copy_stub.go net,os: arrange zero-copy of os.File and net.TCPConn to net.UnixConn 2023-11-17 23:16:28 +00:00