Index: base/prefs/pref_service.cc |
diff --git a/base/prefs/pref_service.cc b/base/prefs/pref_service.cc |
index a8e56d0b370680f9400e8432014d08b357fc4179..bdc0b399beadec4efabc092e2bb5d2c18ab2bcb8 100644 |
--- a/base/prefs/pref_service.cc |
+++ b/base/prefs/pref_service.cc |
@@ -7,6 +7,8 @@ |
#include <algorithm> |
#include "base/bind.h" |
+// TODO(battre): Delete this. See crbug.com/373435. |
+#include "base/debug/stack_trace.h" |
#include "base/files/file_path.h" |
#include "base/logging.h" |
#include "base/message_loop/message_loop.h" |
@@ -59,6 +61,13 @@ PrefService::PrefService( |
PrefService::~PrefService() { |
DCHECK(CalledOnValidThread()); |
+ // TODO(battre): Remove the following code. It's purpose is to understand |
+ // whether a crash in PrefChangeRegistrar::~PrefChangeRegistrar() is caused |
+ // by a PrefService already being dead. See crbug.com/373435. |
+ std::string stack_trace = base::debug::StackTrace().ToString(); |
+ static_cast<PrefNotifier*>(pref_notifier_.get()) |
+ ->BroadcastPrefServiceDestructionTrace(stack_trace); |
+ |
// Reset pointers so accesses after destruction reliably crash. |
pref_value_store_.reset(); |
pref_registry_ = NULL; |