Index: base/trace_event/memory_dump_manager_unittest.cc |
diff --git a/base/trace_event/memory_dump_manager_unittest.cc b/base/trace_event/memory_dump_manager_unittest.cc |
index 0da230a7ec2038c0537cb2311f63d710ade76843..e8c33af3e06b935a80911bf049ff3d6e8c3c4b01 100644 |
--- a/base/trace_event/memory_dump_manager_unittest.cc |
+++ b/base/trace_event/memory_dump_manager_unittest.cc |
@@ -1266,5 +1266,22 @@ TEST_F(MemoryDumpManagerTest, TestBackgroundTracingSetup) { |
DisableTracing(); |
} |
+TEST_F(MemoryDumpManagerTest, TestBlacklistedUnsafeUnregistration) { |
+ InitializeMemoryDumpManager(false /* is_coordinator */); |
+ MockMemoryDumpProvider mdp1; |
+ RegisterDumpProvider(&mdp1, nullptr, kDefaultOptions, |
+ "BlacklistTestDumpProvider"); |
+ // Not calling UnregisterAndDeleteDumpProviderSoon() should not crash. |
+ mdm_->UnregisterDumpProvider(&mdp1); |
+ |
+ Thread thread("test thread"); |
+ thread.Start(); |
+ RegisterDumpProvider(&mdp1, thread.task_runner(), kDefaultOptions, |
+ "BlacklistTestDumpProvider"); |
+ // Unregistering on wrong thread should not crash. |
+ mdm_->UnregisterDumpProvider(&mdp1); |
+ thread.Stop(); |
+} |
+ |
} // namespace trace_event |
} // namespace base |