diff options
Diffstat (limited to 'src/main/java/com/google')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skylarkdebug/server/ThreadHandler.java | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/ThreadHandler.java b/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/ThreadHandler.java index 459ebae848..fd30c64e01 100644 --- a/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/ThreadHandler.java +++ b/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/ThreadHandler.java @@ -187,8 +187,8 @@ final class ThreadHandler { pausingAllThreads = false; thread.readyToPause = thread.debuggable.stepControl(DebugEventHelper.convertSteppingEnum(stepping)); - pausedState.semaphore.release(); thread.pausedState = null; + pausedState.semaphore.release(); } void pauseIfNecessary(Environment env, Location location, DebugServerTransport transport) { @@ -276,14 +276,17 @@ final class ThreadHandler { transport.postEvent(DebugEventHelper.threadStartedEvent(threadId, fallbackThreadName)); thread = doRegisterThread(threadId, fallbackThreadName, env); } - threadProto = getThreadProto(thread); pausedState = new PausedThreadState(location); thread.pausedState = pausedState; + // get proto after setting the paused state, so that it's up to date + threadProto = getThreadProto(thread); } transport.postEvent(DebugEventHelper.threadPausedEvent(threadProto)); pausedState.semaphore.acquireUninterruptibly(); - transport.postEvent(DebugEventHelper.threadContinuedEvent(threadProto)); + transport.postEvent( + DebugEventHelper.threadContinuedEvent( + threadProto.toBuilder().clearLocation().setIsPaused(false).build())); } private boolean shouldPauseCurrentThread(Environment env, Location location) { |