Index: base/threading/sequenced_worker_pool.cc |
diff --git a/base/threading/sequenced_worker_pool.cc b/base/threading/sequenced_worker_pool.cc |
index 24a07511a9847a4faba4dc855470cbda3fbb347b..a6b50b23e9f9402a1a1edcfe68d519035338d01f 100644 |
--- a/base/threading/sequenced_worker_pool.cc |
+++ b/base/threading/sequenced_worker_pool.cc |
@@ -246,6 +246,14 @@ class SequencedWorkerPool::Worker : public SimpleThread { |
is_processing_task_ = true; |
task_sequence_token_ = token; |
task_shutdown_behavior_ = shutdown_behavior; |
+ |
+ // It is dangerous for tasks with CONTINUE_ON_SHUTDOWN to access a class |
+ // that implements a non-leaky base::Singleton because they are generally |
+ // destroyed before the process terminates via an AtExitManager |
+ // registration. This will trigger a DCHECK to warn of such cases. See the |
+ // comment about CONTINUE_ON_SHUTDOWN for more details. |
+ ThreadRestrictions::SetSingletonAllowed(task_shutdown_behavior_ != |
+ CONTINUE_ON_SHUTDOWN); |
} |
// Indicates that the task has finished running. |