46 lines
2.1 KiB
Diff
46 lines
2.1 KiB
Diff
|
From e73aed9a5ef15102f29ac31b70290faf5c90f9fe Mon Sep 17 00:00:00 2001
|
||
|
From: Evan Stade <estade@chromium.org>
|
||
|
Date: Wed, 16 Oct 2019 16:01:32 +0000
|
||
|
Subject: [PATCH] Fix shutdown crash in ProfileManager.
|
||
|
|
||
|
OnProfileMarkedForPermanentDeletion should move from
|
||
|
ProfileManagerObserver to ProfileObserver, which would also
|
||
|
fix this bug. However, changing the order of members is the
|
||
|
quickest and most cherry-pick-able way to avoid the crash.
|
||
|
|
||
|
Bug: 1005244
|
||
|
Change-Id: If2db68c846dd418cd02864b57b9b543687fa1e03
|
||
|
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1863518
|
||
|
Auto-Submit: Evan Stade <estade@chromium.org>
|
||
|
Reviewed-by: David Roger <droger@chromium.org>
|
||
|
Commit-Queue: Evan Stade <estade@chromium.org>
|
||
|
Cr-Commit-Position: refs/heads/master@{#706467}
|
||
|
---
|
||
|
chrome/browser/profiles/profile_manager.h | 6 ++++--
|
||
|
1 file changed, 4 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/chrome/browser/profiles/profile_manager.h b/chrome/browser/profiles/profile_manager.h
|
||
|
index b60df76d59..7d02af7f8f 100644
|
||
|
--- a/chrome/browser/profiles/profile_manager.h
|
||
|
+++ b/chrome/browser/profiles/profile_manager.h
|
||
|
@@ -410,6 +410,10 @@ class ProfileManager : public content::NotificationObserver,
|
||
|
const base::FilePath& profile_dir);
|
||
|
#endif // !defined(OS_ANDROID)
|
||
|
|
||
|
+ // Destroy after |profile_info_cache_| since Profile destruction may trigger
|
||
|
+ // some observers to unregister themselves.
|
||
|
+ base::ObserverList<ProfileManagerObserver> observers_;
|
||
|
+
|
||
|
// Object to cache various information about profiles. Contains information
|
||
|
// about every profile which has been created for this instance of Chrome,
|
||
|
// if it has not been explicitly deleted. It must be destroyed after
|
||
|
@@ -451,8 +455,6 @@ class ProfileManager : public content::NotificationObserver,
|
||
|
// Controls whether to initialize some services. Only disabled for testing.
|
||
|
bool do_final_services_init_ = true;
|
||
|
|
||
|
- base::ObserverList<ProfileManagerObserver> observers_;
|
||
|
-
|
||
|
// TODO(chrome/browser/profiles/OWNERS): Usage of this in profile_manager.cc
|
||
|
// should likely be turned into DCHECK_CURRENTLY_ON(BrowserThread::UI) for
|
||
|
// consistency with surrounding code in the same file but that wasn't trivial
|