diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2015-07-30 08:13:52 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2015-07-30 08:13:52 (GMT) |
commit | 61d5aab9b9fc81ca8801d94af8032414f745b8c2 (patch) | |
tree | 1b94e864ba97b202276a527f3bdf44049dc29602 | |
parent | 707deb9df447a635571a85612832c1f9a0d7c801 (diff) | |
download | cpython-61d5aab9b9fc81ca8801d94af8032414f745b8c2.zip cpython-61d5aab9b9fc81ca8801d94af8032414f745b8c2.tar.gz cpython-61d5aab9b9fc81ca8801d94af8032414f745b8c2.tar.bz2 |
py_getrandom(): getrandom() *can* return EINTR
See the latest version of getrandom() manual page:
http://man7.org/linux/man-pages/man2/getrandom.2.html#NOTES
The behavior when a call to getrandom() that is blocked while reading from
/dev/urandom is interrupted by a signal handler depends on the
initialization state of the entropy buffer and on the request size, buflen.
If the entropy is not yet initialized, then the call will fail with the
EINTR error. If the entropy pool has been initialized and the request size
is large (buflen > 256), the call either succeeds, returning a partially
filled buffer, or fails with the error EINTR. If the entropy pool has been
initialized and the request size is small (buflen <= 256), then getrandom()
will not fail with EINTR. Instead, it will return all of the bytes that
have been requested.
Note: py_getrandom() calls getrandom() with flags=0.
-rw-r--r-- | Python/random.c | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/Python/random.c b/Python/random.c index 9c9d505..ea09e84 100644 --- a/Python/random.c +++ b/Python/random.c @@ -142,7 +142,6 @@ py_getrandom(void *buffer, Py_ssize_t size, int raise) } if (errno == EINTR) { - /* Note: EINTR should not occur with flags=0 */ if (PyErr_CheckSignals()) { if (!raise) Py_FatalError("getrandom() interrupted by a signal"); |