Actions
Bug #11395
closedruby gets stuck when entropy_avail is 0
Bug #11395:
ruby gets stuck when entropy_avail is 0
Description
When /proc/sys/kernel/random/entropy_avail
is 0, Ruby gets stuck during initialization.
$ ruby -v
(stuck)
This is caused by r51182. I think that the GRND_NONBLOCK
flag should be set to getrandom
syscall.
The following patch works for me. But I have no idea to remove the magic number "1 (= GRND_NONBLOCK
)".
diff --git a/random.c b/random.c
index 6452456..9ef89f9 100644
--- a/random.c
+++ b/random.c
@@ -523,11 +523,14 @@ fill_random_bytes_syscall(void *seed, size_t size)
if (try_syscall) {
long ret;
errno = 0;
- ret = syscall(SYS_getrandom, seed, size, 0);
+ ret = syscall(SYS_getrandom, seed, size, 1);
if (errno == ENOSYS) {
try_syscall = 0;
return -1;
}
+ if (errno == EAGAIN) {
+ return -1;
+ }
if ((size_t)ret == size) return 0;
}
return -1;
--
Yusuke Endoh mame@ruby-lang.org
Actions