Skip to content

Commit 5b29bd7

Browse files
committed
Fix timing bug on session_server creation
`@session_server` should be assigned at first. `@session_server = Thread.current` in the session thread does not work because the creator thread can access to `@session_server` before it.
1 parent ad8aeca commit 5b29bd7

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

lib/debug/session.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,11 @@ def activate ui = nil, on_fork: false
177177
@ui.activate self, on_fork: on_fork
178178

179179
q = Queue.new
180+
first_q = Queue.new
180181
@session_server = Thread.new do
182+
# make sure `@session_server` is assigned
183+
first_q.pop; first_q = nil
184+
181185
Thread.current.name = 'DEBUGGER__::SESSION@server'
182186
Thread.current.abort_on_exception = true
183187

@@ -204,6 +208,7 @@ def activate ui = nil, on_fork: false
204208
q << true
205209
session_server_main
206210
end
211+
first_q << :ok
207212

208213
q.pop
209214
end

0 commit comments

Comments
 (0)