• Aaron Jacobs's avatar
    os: handle EINTR from open(2). · 50d0ee0c
    Aaron Jacobs authored
    The man page for sigaction(2) on OS X doesn't guarantee that SA_RESTART
    will work for open(2) on regular files:
    
        The affected system calls include open(2), read(2), write(2),
        sendto(2), recvfrom(2), sendmsg(2) and recvmsg(2) on a
        communications channel or a slow device (such as a terminal, but not
        a regular file) and during a wait(2) or ioctl(2).
    
    I've never observed EINTR from open(2) for a traditional file system
    such as HFS+, but it's easy to observe with a fuse file system that is
    slightly slow (cf. https://goo.gl/UxsVgB). After this change, the
    problem can no longer be reproduced when calling os.OpenFile.
    
    Fixes #11180.
    
    Change-Id: I967247430e20a7d29a285b3d76bf3498dc4773db
    Reviewed-on: https://go-review.googlesource.com/14484Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    50d0ee0c
Name
Last commit
Last update
..
exec Loading commit data...
signal Loading commit data...
user Loading commit data...
dir_plan9.go Loading commit data...
dir_unix.go Loading commit data...
dir_windows.go Loading commit data...
doc.go Loading commit data...
env.go Loading commit data...
env_test.go Loading commit data...
env_unix_test.go Loading commit data...
error.go Loading commit data...
error_plan9.go Loading commit data...
error_test.go Loading commit data...
error_unix.go Loading commit data...
error_windows.go Loading commit data...
exec.go Loading commit data...
exec_plan9.go Loading commit data...
exec_posix.go Loading commit data...
exec_unix.go Loading commit data...
exec_windows.go Loading commit data...
export_test.go Loading commit data...
file.go Loading commit data...
file_plan9.go Loading commit data...
file_posix.go Loading commit data...
file_unix.go Loading commit data...
file_windows.go Loading commit data...
getwd.go Loading commit data...
getwd_darwin.go Loading commit data...
os_test.go Loading commit data...
os_unix_test.go Loading commit data...
os_windows_test.go Loading commit data...
path.go Loading commit data...
path_plan9.go Loading commit data...
path_test.go Loading commit data...
path_unix.go Loading commit data...
path_windows.go Loading commit data...
pipe_bsd.go Loading commit data...
pipe_linux.go Loading commit data...
proc.go Loading commit data...
stat_darwin.go Loading commit data...
stat_dragonfly.go Loading commit data...
stat_freebsd.go Loading commit data...
stat_linux.go Loading commit data...
stat_nacl.go Loading commit data...
stat_netbsd.go Loading commit data...
stat_openbsd.go Loading commit data...
stat_plan9.go Loading commit data...
stat_solaris.go Loading commit data...
stat_windows.go Loading commit data...
sticky_bsd.go Loading commit data...
sticky_notbsd.go Loading commit data...
str.go Loading commit data...
sys_bsd.go Loading commit data...
sys_darwin.go Loading commit data...
sys_freebsd.go Loading commit data...
sys_linux.go Loading commit data...
sys_nacl.go Loading commit data...
sys_plan9.go Loading commit data...
sys_solaris.go Loading commit data...
sys_unix.go Loading commit data...
sys_windows.go Loading commit data...
types.go Loading commit data...
types_notwin.go Loading commit data...
types_windows.go Loading commit data...