From dc8c382266b056fa51408806478218f5230fbce2 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Thu, 19 Sep 2024 17:23:19 +0900 Subject: [PATCH] Fix bug at fork on FreeBSD The main thread in a forked process appears not to own the read-write lock. --- process.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/process.c b/process.c index 1bfa12ba91..ef4757ab23 100644 --- a/process.c +++ b/process.c @@ -4234,7 +4234,13 @@ rb_fork_ruby(int *status) child.error = err = errno; disable_child_handler_fork_parent(&old); /* yes, bad name */ - rb_thread_release_fork_lock(); + if ( +#if defined(__FreeBSD__) + pid != 0 && +#endif + true) { + rb_thread_release_fork_lock(); + } if (pid == 0) { rb_thread_reset_fork_lock(); }