go/src/os
Andrew G. Morgan ce04f86bd3 [release-branch.go1.16] syscall: syscall.AllThreadsSyscall signal handling fixes
The runtime support for syscall.AllThreadsSyscall() functions had
some corner case deadlock issues when signal handling was in use.
This was observed in at least 3 build test failures on ppc64 and
amd64 architecture CGO_ENABLED=0 builds over the last few months.

The fixes involve more controlled handling of signals while the
AllThreads mechanism is being executed. Further details are
discussed in bug #44193.

The all-threads syscall support is new in go1.16, so earlier
releases are not affected by this bug.

Fixes #45307

Change-Id: I01ba8508a6e1bb2d872751f50da86dd07911a41d
Reviewed-on: https://go-review.googlesource.com/c/go/+/305149
Reviewed-by: Michael Pratt <mpratt@google.com>
Trust: Michael Pratt <mpratt@google.com>
Trust: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Michael Pratt <mpratt@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
(cherry picked from commit 7e97e4e8cc)
Reviewed-on: https://go-review.googlesource.com/c/go/+/316869
Run-TryBot: Ian Lance Taylor <iant@golang.org>
2021-05-04 20:41:53 +00:00
..
exec all: update to use os.ReadDir where appropriate 2020-12-09 19:12:27 +00:00
signal [release-branch.go1.16] syscall: syscall.AllThreadsSyscall signal handling fixes 2021-05-04 20:41:53 +00:00
testdata testing/fstest,os: clarify racy behavior of TestFS 2021-01-08 16:34:00 +00:00
user all: update to use os.ReadFile, os.WriteFile, os.CreateTemp, os.MkdirTemp 2020-12-09 19:12:23 +00:00
dir.go os: add ReadFile, WriteFile, CreateTemp (was TempFile), MkdirTemp (was TempDir) from io/ioutil 2020-12-02 17:00:06 +00:00
dir_darwin.go os: add File.ReadDir method and DirEntry type 2020-10-20 00:59:20 +00:00
dir_plan9.go os: use keyed literals for PathError 2020-10-20 00:59:22 +00:00
dir_unix.go os: remove unused variable in unix implementation of File.readdir 2020-11-05 16:20:01 +00:00
dir_windows.go os: use keyed literals for PathError 2020-10-20 00:59:22 +00:00
dirent_aix.go os: add File.ReadDir method and DirEntry type 2020-10-20 00:59:20 +00:00
dirent_dragonfly.go os: add File.ReadDir method and DirEntry type 2020-10-20 00:59:20 +00:00
dirent_freebsd.go os: add File.ReadDir method and DirEntry type 2020-10-20 00:59:20 +00:00
dirent_js.go os: add File.ReadDir method and DirEntry type 2020-10-20 00:59:20 +00:00
dirent_linux.go os: add File.ReadDir method and DirEntry type 2020-10-20 00:59:20 +00:00
dirent_netbsd.go os: add File.ReadDir method and DirEntry type 2020-10-20 00:59:20 +00:00
dirent_openbsd.go os: add File.ReadDir method and DirEntry type 2020-10-20 00:59:20 +00:00
dirent_solaris.go os: add File.ReadDir method and DirEntry type 2020-10-20 00:59:20 +00:00
endian_big.go os: add File.ReadDir method and DirEntry type 2020-10-20 00:59:20 +00:00
endian_little.go os: add File.ReadDir method and DirEntry type 2020-10-20 00:59:20 +00:00
env.go
env_test.go
env_unix_test.go
error.go os: clarify that IsExist and friends do not use errors.Is 2020-11-11 20:26:44 +00:00
error_errno.go
error_plan9.go
error_posix.go
error_test.go all: update to use os.ReadFile, os.WriteFile, os.CreateTemp, os.MkdirTemp 2020-12-09 19:12:23 +00:00
error_unix_test.go all: update references to symbols moved from os to io/fs 2020-10-20 02:32:42 +00:00
error_windows_test.go all: update references to symbols moved from os to io/fs 2020-10-20 02:32:42 +00:00
example_test.go os: add ReadFile, WriteFile, CreateTemp (was TempFile), MkdirTemp (was TempDir) from io/ioutil 2020-12-02 17:00:06 +00:00
exec.go os: export ErrProcessDone variable in windows and plan9 2020-11-03 00:56:12 +00:00
exec_plan9.go os: export ErrProcessDone variable in windows and plan9 2020-11-03 00:56:12 +00:00
exec_posix.go os: use keyed literals for PathError 2020-10-20 00:59:22 +00:00
exec_unix.go os: export ErrProcessDone variable in windows and plan9 2020-11-03 00:56:12 +00:00
exec_unix_test.go os: export errFinished as ErrProcessDone 2020-10-31 08:41:25 +00:00
exec_windows.go os: export ErrProcessDone variable in windows and plan9 2020-11-03 00:56:12 +00:00
executable.go
executable_darwin.go
executable_dragonfly.go os: gofmt 2020-11-12 10:22:50 +00:00
executable_freebsd.go os: gofmt 2020-11-12 10:22:50 +00:00
executable_path.go
executable_plan9.go
executable_procfs.go os: do not use procfs for os.Executable in dragonfly 2020-10-28 17:08:06 +00:00
executable_solaris.go
executable_sysctl.go os: do not use procfs for os.Executable in dragonfly 2020-10-28 17:08:06 +00:00
executable_test.go
executable_windows.go
export_linux_test.go
export_test.go os: add ReadFile, WriteFile, CreateTemp (was TempFile), MkdirTemp (was TempDir) from io/ioutil 2020-12-02 17:00:06 +00:00
export_unix_test.go
export_windows_test.go
fifo_test.go all: update to use os.ReadFile, os.WriteFile, os.CreateTemp, os.MkdirTemp 2020-12-09 19:12:23 +00:00
file.go io/fs: allow backslash in ValidPath, reject in os.DirFS.Open 2021-02-11 01:10:28 +00:00
file_plan9.go os: remove dependency on strings package 2020-12-18 18:25:14 +00:00
file_posix.go os: use keyed literals for PathError 2020-10-20 00:59:22 +00:00
file_unix.go os: further document limitations around naked file descriptors 2021-01-26 00:30:18 +00:00
file_windows.go os: use keyed literals for PathError 2020-10-20 00:59:22 +00:00
getwd.go os: remove ENOTSUP special case in Getwd on darwin 2020-09-28 06:28:02 +00:00
os_test.go io/fs: allow backslash in ValidPath, reject in os.DirFS.Open 2021-02-11 01:10:28 +00:00
os_unix_test.go all: update to use os.ReadFile, os.WriteFile, os.CreateTemp, os.MkdirTemp 2020-12-09 19:12:23 +00:00
os_windows_test.go os: do not close syscall.Stdin in TestReadStdin 2021-01-18 17:21:53 +00:00
path.go os: use keyed literals for PathError 2020-10-20 00:59:22 +00:00
path_plan9.go
path_test.go all: update to use os.ReadFile, os.WriteFile, os.CreateTemp, os.MkdirTemp 2020-12-09 19:12:23 +00:00
path_unix.go
path_windows.go
path_windows_test.go all: update to use os.ReadFile, os.WriteFile, os.CreateTemp, os.MkdirTemp 2020-12-09 19:12:23 +00:00
pipe2_bsd.go
pipe2_illumos.go os, internal/syscall/unix: use pipe2 instead of pipe on illumos 2020-09-16 08:49:14 +00:00
pipe_bsd.go os, internal/syscall/unix: use pipe2 instead of pipe on illumos 2020-09-16 08:49:14 +00:00
pipe_linux.go
pipe_test.go all: update to use os.ReadFile, os.WriteFile, os.CreateTemp, os.MkdirTemp 2020-12-09 19:12:23 +00:00
proc.go cmd/go, testing, os: fail test that calls os.Exit(0) 2020-08-27 23:19:15 +00:00
rawconn.go
rawconn_test.go
read_test.go os: add ReadFile, WriteFile, CreateTemp (was TempFile), MkdirTemp (was TempDir) from io/ioutil 2020-12-02 17:00:06 +00:00
readfrom_linux.go os: fix regression with handling of nil *File 2020-07-08 18:29:38 +00:00
readfrom_linux_test.go internal/poll: if copy_file_range returns 0, assume it failed 2021-02-16 00:46:04 +00:00
readfrom_stub.go
removeall_at.go os: use keyed literals for PathError 2020-10-20 00:59:22 +00:00
removeall_noat.go os: use keyed literals for PathError 2020-10-20 00:59:22 +00:00
removeall_test.go all: update to use os.ReadFile, os.WriteFile, os.CreateTemp, os.MkdirTemp 2020-12-09 19:12:23 +00:00
stat.go
stat_aix.go
stat_darwin.go
stat_dragonfly.go
stat_freebsd.go
stat_js.go
stat_linux.go
stat_netbsd.go
stat_openbsd.go
stat_plan9.go os: use keyed literals for PathError 2020-10-20 00:59:22 +00:00
stat_solaris.go
stat_test.go all: update to use os.ReadFile, os.WriteFile, os.CreateTemp, os.MkdirTemp 2020-12-09 19:12:23 +00:00
stat_unix.go os: use keyed literals for PathError 2020-10-20 00:59:22 +00:00
stat_windows.go os: use keyed literals for PathError 2020-10-20 00:59:22 +00:00
sticky_bsd.go
sticky_notbsd.go
str.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_windows.go
tempfile.go os: correct names in CreateTemp and MkdirTemp doc comments 2021-01-26 00:02:49 +00:00
tempfile_test.go os: add ReadFile, WriteFile, CreateTemp (was TempFile), MkdirTemp (was TempDir) from io/ioutil 2020-12-02 17:00:06 +00:00
timeout_test.go all: update to use os.ReadFile, os.WriteFile, os.CreateTemp, os.MkdirTemp 2020-12-09 19:12:23 +00:00
types.go io/fs: move FileInfo, FileMode, PathError, ErrInvalid, ... from os to io/fs 2020-10-20 02:32:41 +00:00
types_plan9.go
types_unix.go
types_windows.go os: use keyed literals for PathError 2020-10-20 00:59:22 +00:00
wait_unimp.go
wait_wait6.go
wait_waitid.go