From 0fd53f519fb37b1dfe37be9f53ebc7889f405114 Mon Sep 17 00:00:00 2001 From: normal Date: Sat, 22 Dec 2018 01:41:18 +0000 Subject: thread_sync.c (rb_mutex_t): eliminate fork_gen The true bug fork_gen was hiding was rb_mutex_abandon_locking_mutex failing to unconditionally clear the waitq of mutexes it was waiting on. So we fix rb_mutex_abandon_locking_mutex, instead, and eliminate rb_mutex_cleanup_keeping_mutexes. This commit was tested heavily on a single-core Pentium-M which was my most reliable reproducer of the "crash.rb" script from [Bug #15383] [Bug #14578] [Bug #15383] Note: [Bug #15430] turned out to be an entirely different problem: RLIMIT_NPROC limit was hit on the CI VMs. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66489 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- thread.c | 1 - 1 file changed, 1 deletion(-) (limited to 'thread.c') diff --git a/thread.c b/thread.c index faecec7a04..58e7651446 100644 --- a/thread.c +++ b/thread.c @@ -4449,7 +4449,6 @@ rb_thread_atfork(void) rb_thread_t *th = GET_THREAD(); rb_thread_atfork_internal(th, terminate_atfork_i); th->join_list = NULL; - rb_mutex_cleanup_keeping_mutexes(th); rb_fiber_atfork(th); /* We don't want reproduce CVE-2003-0900. */ -- cgit v1.2.3