aboutsummaryrefslogtreecommitdiffstats
path: root/thread_pthread.c
diff options
context:
space:
mode:
authornormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-11-20 07:27:28 +0000
committernormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-11-20 07:27:28 +0000
commit8d9a9aab67d6d517995532737a37379c20dc7f76 (patch)
tree575616799a958a610d9a8de61fa0d901c1c7f654 /thread_pthread.c
parent259173ccc00e0ef754e33bc134de1a0731a6b51e (diff)
downloadruby-8d9a9aab67d6d517995532737a37379c20dc7f76.tar.gz
thread_pthread.c (rb_reserved_fd_p): false-positive on negative FD
Negative-numbered FDs are never valid FDs on POSIX-like platforms, and we initialize our self-pipes/eventfd values to "-1", so stop treating -1 as a reserved FD if our system is too low on resources to allocate FDs at startup. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65832 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'thread_pthread.c')
-rw-r--r--thread_pthread.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/thread_pthread.c b/thread_pthread.c
index 1f2ac00b67..c87e952750 100644
--- a/thread_pthread.c
+++ b/thread_pthread.c
@@ -1842,6 +1842,10 @@ ruby_stack_overflowed_p(const rb_thread_t *th, const void *addr)
int
rb_reserved_fd_p(int fd)
{
+ /* no false-positive if out-of-FD at startup */
+ if (fd < 0)
+ return 0;
+
#if UBF_TIMER == UBF_TIMER_PTHREAD
if (fd == timer_pthread.low[0] || fd == timer_pthread.low[1])
goto check_pid;