Bug #11395
Updated by nobu (Nobuyoshi Nakada) over 9 years ago
When `/proc/sys/kernel/random/entropy_avail` /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` GRND_NONBLOCK flag should be set to `getrandom` getrandom syscall. The following patch works for me. But I have no idea to remove the magic number "1 (= `GRND_NONBLOCK`)". GRND_NONBLOCK)". ~~~~diff ~~~~ 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>