aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skylarkdebug
diff options
context:
space:
mode:
authorGravatar brendandouglas <brendandouglas@google.com>2018-06-08 14:03:38 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-08 14:04:54 -0700
commit99857821f93297ff867c26f77026f8508ac85b62 (patch)
treeb18467e8f047e2ffc419b2691e982374fee182e1 /src/main/java/com/google/devtools/build/lib/skylarkdebug
parent632052d953a705abf496178bf519b8dbd73484bb (diff)
Skylark debugger: fix thread paused state and location not being properly set in ThreadPausedEvents.
PiperOrigin-RevId: 199847385
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skylarkdebug')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkdebug/server/ThreadHandler.java9
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) {