Commit a2136def authored by Robert Liao's avatar Robert Liao Committed by Commit Bot

Release Shared SchedulerWorkers After Joining

If shared SchedulerWorkers are released before joining, they are
effectively detached and may outlive the
SchedulerSingleThreadTaskRunnerManager.

BUG=735701

Change-Id: Ie83b50b99698a4059041454f579f4a2c1fbaabc0
Reviewed-on: https://chromium-review.googlesource.com/572233Reviewed-by: default avatarGabriel Charette <gab@chromium.org>
Commit-Queue: Robert Liao <robliao@chromium.org>
Cr-Commit-Position: refs/heads/master@{#487197}
parent 77711622
...@@ -457,8 +457,6 @@ SchedulerSingleThreadTaskRunnerManager::CreateTaskRunnerWithTraitsImpl( ...@@ -457,8 +457,6 @@ SchedulerSingleThreadTaskRunnerManager::CreateTaskRunnerWithTraitsImpl(
} }
void SchedulerSingleThreadTaskRunnerManager::JoinForTesting() { void SchedulerSingleThreadTaskRunnerManager::JoinForTesting() {
ReleaseSharedSchedulerWorkers();
decltype(workers_) local_workers; decltype(workers_) local_workers;
{ {
AutoSchedulerLock auto_lock(lock_); AutoSchedulerLock auto_lock(lock_);
...@@ -474,6 +472,11 @@ void SchedulerSingleThreadTaskRunnerManager::JoinForTesting() { ...@@ -474,6 +472,11 @@ void SchedulerSingleThreadTaskRunnerManager::JoinForTesting() {
<< "New worker(s) unexpectedly registered during join."; << "New worker(s) unexpectedly registered during join.";
workers_ = std::move(local_workers); workers_ = std::move(local_workers);
} }
// Release shared SchedulerWorkers at the end so they get joined above. If
// this call happens before the joins, the SchedulerWorkers are effectively
// detached and may outlive the SchedulerSingleThreadTaskRunnerManager.
ReleaseSharedSchedulerWorkers();
} }
template <> template <>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment