diff options
author | brendandouglas <brendandouglas@google.com> | 2018-06-08 14:03:38 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-06-08 14:04:54 -0700 |
commit | 99857821f93297ff867c26f77026f8508ac85b62 (patch) | |
tree | b18467e8f047e2ffc419b2691e982374fee182e1 /src/main/java | |
parent | 632052d953a705abf496178bf519b8dbd73484bb (diff) |
Skylark debugger: fix thread paused state and location not being properly set in ThreadPausedEvents.
PiperOrigin-RevId: 199847385
Diffstat (limited to 'src/main/java')
-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) { |