commit | 50d0ee0c98ea21f818d2daa9bc21ef51861a2ef9 | [log] [tgz] |
---|---|---|
author | Aaron Jacobs <jacobsa@google.com> | Thu Sep 17 08:32:09 2015 +1000 |
committer | Ian Lance Taylor <iant@golang.org> | Thu Sep 17 01:20:45 2015 +0000 |
tree | 8137c99a751c4a60a25c88883198dab4b4042ab9 | |
parent | 9337dc9b5e4a79a071c8eb4879974955b19e3862 [diff] |
os: handle EINTR from open(2). 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/14484 Reviewed-by: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
For documentation about how to install and use Go, visit https://golang.org/ or load doc/install-source.html in your web browser.
Our canonical Git repository is located at https://go.googlesource.com/go. There is a mirror of the repository at https://github.com/golang/go.
Please report issues here: https://golang.org/issue/new
Go is the work of hundreds of contributors. We appreciate your help!
To contribute, please read the contribution guidelines: https://golang.org/doc/contribute.html
Unless otherwise noted, the Go source files are distributed under the BSD-style license found in the LICENSE file.
If you have just untarred a binary Go distribution, you need to set the environment variable $GOROOT to the full path of the go directory (the one containing this file). You can omit the variable if you unpack it into /usr/local/go, or if you rebuild from sources by running all.bash (see doc/install-source.html). You should also add the Go binary directory $GOROOT/bin to your shell's path.
For example, if you extracted the tar file into $HOME/go, you might put the following in your .profile:
export GOROOT=$HOME/go export PATH=$PATH:$GOROOT/bin
See https://golang.org/doc/install or doc/install.html for more details.