From 04d176425da9127ab726997d23e652197208edcf Mon Sep 17 00:00:00 2001 From: Koichi Sasada Date: Fri, 16 Sep 2022 15:35:53 +0900 Subject: [PATCH] fix timing issue Before setting `@lock_file`, remote client can send stop request to the parent process and it can cause data race issue. --- lib/debug/session.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/debug/session.rb b/lib/debug/session.rb index 303f3336d..c95edd57b 100644 --- a/lib/debug/session.rb +++ b/lib/debug/session.rb @@ -1893,9 +1893,11 @@ def multi_process! def after_fork child: true if child || !@lock_file - @m = Mutex.new - @lock_level = 0 - @lock_file = open(@lock_tempfile.path, 'w') + @m = Mutex.new unless @m + @m.synchronize do + @lock_level = 0 + @lock_file = open(@lock_tempfile.path, 'w') + end end end