|
|
Index: extensions/browser/extension_web_contents_observer.cc |
diff --git a/extensions/browser/extension_web_contents_observer.cc b/extensions/browser/extension_web_contents_observer.cc |
index a66a6f2d9459f3f25baa2e05cbc2b075390db68a..e4e75dbb1f6c93514ece05be313d1822f786517d 100644 |
--- a/extensions/browser/extension_web_contents_observer.cc |
+++ b/extensions/browser/extension_web_contents_observer.cc |
@@ -12,6 +12,7 @@ |
#include "content/public/common/url_constants.h" |
#include "extensions/browser/extension_prefs.h" |
#include "extensions/browser/extension_registry.h" |
+#include "extensions/browser/service_registration_manager.h" |
#include "extensions/browser/view_type_utils.h" |
#include "extensions/common/constants.h" |
#include "extensions/common/extension_messages.h" |
@@ -27,6 +28,20 @@ ExtensionWebContentsObserver::ExtensionWebContentsObserver( |
ExtensionWebContentsObserver::~ExtensionWebContentsObserver() {} |
+void ExtensionWebContentsObserver::RenderFrameCreated( |
+ content::RenderFrameHost* render_frame_host) { |
+ if (known_render_frame_hosts_.count(render_frame_host)) |
raymes
2014/10/15 20:22:49
It seems like a bug that this might be called twic
It seems like a bug that this might be called twice. We should look at why.
Ken Rockot(use gerrit already)
2014/10/15 21:45:27
Are we sure this really happens? It seems impossib
On 2014/10/15 20:22:49, raymes wrote:
> It seems like a bug that this might be called twice. We should look at why.
Are we sure this really happens? It seems impossible unless main frame creation
elicits two calls (contrary to the comments in WebContentsImpl), but I think
that would have to break lots of other things.
Sam McNally
2014/10/15 22:52:56
I put in a check and logging of stack traces and R
On 2014/10/15 21:45:27, Ken Rockot wrote:
> On 2014/10/15 20:22:49, raymes wrote:
> > It seems like a bug that this might be called twice. We should look at why.
>
> Are we sure this really happens? It seems impossible unless main frame
creation
> elicits two calls (contrary to the comments in WebContentsImpl), but I think
> that would have to break lots of other things.
I put in a check and logging of stack traces and RenderFrameHost* and here's
what I got:
[6948:1287:1015/153255:INFO:extension_web_contents_observer.cc(34)] 0x7bcebf00
0 libbase.dylib 0x0cc747ff
base::debug::StackTrace::StackTrace() + 63
1 libbase.dylib 0x0cc7485b
base::debug::StackTrace::StackTrace() + 43
2 libchrome_main_dll.dylib 0x046bb8f5
extensions::ExtensionWebContentsObserver::RenderFrameCreated(content::RenderFrameHost*)
+ 581
3 libcontent.dylib 0x1c6eb929
content::WebContentsImpl::RenderViewCreated(content::RenderViewHost*) + 761
4 libcontent.dylib 0x1c6eb9df non-virtual thunk to
content::WebContentsImpl::RenderViewCreated(content::RenderViewHost*) + 63
5 libcontent.dylib 0x1c3bbf72
content::RenderViewHostImpl::CreateRenderView(std::basic_string<unsigned short,
base::string16_char_traits, std::allocator<unsigned short> > const&, int, int,
int, bool) + 2722
6 libcontent.dylib 0x1c6ef130
content::WebContentsImpl::CreateRenderViewForRenderManager(content::RenderViewHost*,
int, int, bool) + 880
7 libcontent.dylib 0x1c6ef230 non-virtual thunk to
content::WebContentsImpl::CreateRenderViewForRenderManager(content::RenderViewHost*,
int, int, bool) + 112
8 libcontent.dylib 0x1be572e3
content::RenderFrameHostManager::InitRenderView(content::RenderViewHostImpl*,
int, int, bool) + 643
9 libcontent.dylib 0x1be55dd4
content::RenderFrameHostManager::Navigate(content::NavigationEntryImpl const&) +
996
10 libcontent.dylib 0x1be18f99
content::NavigatorImpl::NavigateToEntry(content::RenderFrameHostImpl*,
content::NavigationEntryImpl const&, content::NavigationController::ReloadType)
+ 1209
11 libcontent.dylib 0x1be1a50a
content::NavigatorImpl::NavigateToPendingEntry(content::RenderFrameHostImpl*,
content::NavigationController::ReloadType) + 106
12 libcontent.dylib 0x1c6e2af3
content::WebContentsImpl::NavigateToPendingEntry(content::NavigationController::ReloadType)
+ 563
13 libcontent.dylib 0x1c6e2b6f non-virtual thunk to
content::WebContentsImpl::NavigateToPendingEntry(content::NavigationController::ReloadType)
+ 63
14 libcontent.dylib 0x1bdf96fb
content::NavigationControllerImpl::NavigateToPendingEntry(content::NavigationController::ReloadType)
+ 859
15 libcontent.dylib 0x1bdf9d14
content::NavigationControllerImpl::LoadEntry(content::NavigationEntryImpl*) + 84
16 libcontent.dylib 0x1bdfc150
content::NavigationControllerImpl::LoadURLWithParams(content::NavigationController::LoadURLParams
const&) + 2720
17 libcontent.dylib 0x1bdfb671
content::NavigationControllerImpl::LoadURL(GURL const&, content::Referrer
const&, ui::PageTransition, std::string const&) + 241
18 libchrome_main_dll.dylib 0x046640e0
extensions::ExtensionHost::LoadInitialURL() + 160
19 libchrome_main_dll.dylib 0x04663e72
extensions::ExtensionHost::CreateRenderViewNow() + 66
20 libchrome_main_dll.dylib 0x04667c79
extensions::ExtensionHost::ProcessCreationQueue::ProcessOneHost() + 89
21 libchrome_main_dll.dylib 0x04668558
base::internal::RunnableAdapter<void
(extensions::ExtensionHost::ProcessCreationQueue::*)()>::Run(extensions::ExtensionHost::ProcessCreationQueue*)
+ 120
22 libchrome_main_dll.dylib 0x046683fc
base::internal::InvokeHelper<true, void, base::internal::RunnableAdapter<void
(extensions::ExtensionHost::ProcessCreationQueue::*)()>, void
(base::WeakPtr<extensions::ExtensionHost::ProcessCreationQueue>
const&)>::MakeItSo(base::internal::RunnableAdapter<void
(extensions::ExtensionHost::ProcessCreationQueue::*)()>,
base::WeakPtr<extensions::ExtensionHost::ProcessCreationQueue> const&) + 92
23 libchrome_main_dll.dylib 0x0466833c base::internal::Invoker<1,
base::internal::BindState<base::internal::RunnableAdapter<void
(extensions::ExtensionHost::ProcessCreationQueue::*)()>, void
(extensions::ExtensionHost::ProcessCreationQueue*), void
(base::WeakPtr<extensions::ExtensionHost::ProcessCreationQueue>)>, void
(extensions::ExtensionHost::ProcessCreationQueue*)>::Run(base::internal::BindStateBase*)
+ 108
24 libbase.dylib 0x0cc5da8f base::Callback<void
()>::Run() const + 63
25 libbase.dylib 0x0cc76cfc
base::debug::TaskAnnotator::RunTask(char const*, char const*, base::PendingTask
const&) + 1084
26 libbase.dylib 0x0cd65919
base::MessageLoop::RunTask(base::PendingTask const&) + 793
27 libbase.dylib 0x0cd65ac2
base::MessageLoop::DeferOrRunPendingTask(base::PendingTask const&) + 98
28 libbase.dylib 0x0cd65d91 base::MessageLoop::DoWork() +
321
29 libbase.dylib 0x0cc35a55
base::MessagePumpCFRunLoopBase::RunWork() + 101
30 libbase.dylib 0x0cc34e71
base::MessagePumpCFRunLoopBase::RunWorkSource(void*) + 49
31 CoreFoundation 0x9b38db5f
__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
32 CoreFoundation 0x9b37e95b __CFRunLoopDoSources0 + 235
33 CoreFoundation 0x9b37e05e __CFRunLoopRun + 1022
34 CoreFoundation 0x9b37d9ea CFRunLoopRunSpecific + 394
35 CoreFoundation 0x9b37d84b CFRunLoopRunInMode + 123
36 HIToolbox 0x90033b5d RunCurrentEventLoopInMode +
259
37 HIToolbox 0x900338e2 ReceiveNextEventCommon + 526
38 HIToolbox 0x900336bd
_BlockUntilNextEventMatchingListInModeWithFilter + 92
39 AppKit 0x913e2349 _DPSNextEvent + 1602
40 AppKit 0x913e1870 -[NSApplication
nextEventMatchingMask:untilDate:inMode:dequeue:] + 119
41 AppKit 0x913d415c -[NSApplication run] + 727
42 libbase.dylib 0x0cc36960
base::MessagePumpNSApplication::DoRun(base::MessagePump::Delegate*) + 368
43 libbase.dylib 0x0cc35668
base::MessagePumpCFRunLoopBase::Run(base::MessagePump::Delegate*) + 104
44 libbase.dylib 0x0cd6528c
base::MessageLoop::RunHandler() + 300
45 libbase.dylib 0x0cdd6c63 base::RunLoop::Run() + 83
46 libchrome_main_dll.dylib 0x012f49ba (anonymous
namespace)::SessionRestoreImpl::Restore() + 682
47 libchrome_main_dll.dylib 0x012f45ea
SessionRestore::RestoreSession(Profile*, Browser*, chrome::HostDesktopType,
unsigned int, std::vector<GURL, std::allocator<GURL> > const&) + 794
48 libchrome_main_dll.dylib 0x03250c3c
StartupBrowserCreatorImpl::ProcessStartupURLs(std::vector<GURL,
std::allocator<GURL> > const&, chrome::HostDesktopType) + 2060
49 libchrome_main_dll.dylib 0x0324fba2
StartupBrowserCreatorImpl::ProcessLaunchURLs(bool, std::vector<GURL,
std::allocator<GURL> > const&, chrome::HostDesktopType) + 466
50 libchrome_main_dll.dylib 0x0324f0af
StartupBrowserCreatorImpl::Launch(Profile*, std::vector<GURL,
std::allocator<GURL> > const&, bool, chrome::HostDesktopType) + 1375
51 libchrome_main_dll.dylib 0x03244cb0
StartupBrowserCreator::LaunchBrowser(base::CommandLine const&, Profile*,
base::FilePath const&, chrome::startup::IsProcessStartup,
chrome::startup::IsFirstRun, int*) + 1216
52 libchrome_main_dll.dylib 0x03246e60
StartupBrowserCreator::ProcessCmdLineImpl(base::CommandLine const&,
base::FilePath const&, bool, Profile*, std::vector<Profile*,
std::allocator<Profile*> > const&, int*, StartupBrowserCreator*) + 4976
53 libchrome_main_dll.dylib 0x0039b9d8
StartupBrowserCreator::Start(base::CommandLine const&, base::FilePath const&,
Profile*, std::vector<Profile*, std::allocator<Profile*> > const&, int*) + 136
54 libchrome_main_dll.dylib 0x00397768
ChromeBrowserMainParts::PreMainMessageLoopRunImpl() + 4664
55 libchrome_main_dll.dylib 0x0039649e
ChromeBrowserMainParts::PreMainMessageLoopRun() + 334
56 libcontent.dylib 0x1bb72af9
content::BrowserMainLoop::PreMainMessageLoopRun() + 377
57 libcontent.dylib 0x1bb7c378
base::internal::RunnableAdapter<int
(content::BrowserMainLoop::*)()>::Run(content::BrowserMainLoop*) + 120
58 libcontent.dylib 0x1bb7c294
base::internal::InvokeHelper<false, int, base::internal::RunnableAdapter<int
(content::BrowserMainLoop::*)()>, void
(content::BrowserMainLoop*)>::MakeItSo(base::internal::RunnableAdapter<int
(content::BrowserMainLoop::*)()>, content::BrowserMainLoop*) + 68
59 libcontent.dylib 0x1bb7c1d4 base::internal::Invoker<1,
base::internal::BindState<base::internal::RunnableAdapter<int
(content::BrowserMainLoop::*)()>, int (content::BrowserMainLoop*), void
(base::internal::UnretainedWrapper<content::BrowserMainLoop>)>, int
(content::BrowserMainLoop*)>::Run(base::internal::BindStateBase*) + 116
60 libcontent.dylib 0x1c1eb76f base::Callback<int ()>::Run()
const + 63
61 libcontent.dylib 0x1c66de28
content::StartupTaskRunner::RunAllTasksNow() + 120
[6948:1287:1015/153256:INFO:extension_web_contents_observer.cc(34)] 0x7bdc62e0
0 libbase.dylib 0x0cc747ff
base::debug::StackTrace::StackTrace() + 63
1 libbase.dylib 0x0cc7485b
base::debug::StackTrace::StackTrace() + 43
2 libchrome_main_dll.dylib 0x046bb8f5
extensions::ExtensionWebContentsObserver::RenderFrameCreated(content::RenderFrameHost*)
+ 581
3 libcontent.dylib 0x1c6eb929
content::WebContentsImpl::RenderViewCreated(content::RenderViewHost*) + 761
4 libcontent.dylib 0x1c6eb9df non-virtual thunk to
content::WebContentsImpl::RenderViewCreated(content::RenderViewHost*) + 63
5 libcontent.dylib 0x1c3bbf72
content::RenderViewHostImpl::CreateRenderView(std::basic_string<unsigned short,
base::string16_char_traits, std::allocator<unsigned short> > const&, int, int,
int, bool) + 2722
6 libcontent.dylib 0x1c6ef130
content::WebContentsImpl::CreateRenderViewForRenderManager(content::RenderViewHost*,
int, int, bool) + 880
7 libcontent.dylib 0x1c6ef230 non-virtual thunk to
content::WebContentsImpl::CreateRenderViewForRenderManager(content::RenderViewHost*,
int, int, bool) + 112
8 libcontent.dylib 0x1be572e3
content::RenderFrameHostManager::InitRenderView(content::RenderViewHostImpl*,
int, int, bool) + 643
9 libcontent.dylib 0x1be5c8f0
content::RenderFrameHostManager::CreateRenderFrame(content::SiteInstance*, int,
bool, bool, bool) + 2144
10 libcontent.dylib 0x1be5c03d
content::RenderFrameHostManager::CreateRenderFrameHostForNewSiteInstance(content::SiteInstance*,
content::SiteInstance*, bool) + 365
11 libcontent.dylib 0x1be5652b
content::RenderFrameHostManager::UpdateStateForNavigate(GURL const&,
content::SiteInstance*, ui::PageTransition, bool, bool, content::GlobalRequestID
const&, int) + 1115
12 libcontent.dylib 0x1be55c52
content::RenderFrameHostManager::Navigate(content::NavigationEntryImpl const&) +
610
13 libcontent.dylib 0x1be18f99
content::NavigatorImpl::NavigateToEntry(content::RenderFrameHostImpl*,
content::NavigationEntryImpl const&, content::NavigationController::ReloadType)
+ 1209
14 libcontent.dylib 0x1be1a50a
content::NavigatorImpl::NavigateToPendingEntry(content::RenderFrameHostImpl*,
content::NavigationController::ReloadType) + 106
15 libcontent.dylib 0x1c6e2af3
content::WebContentsImpl::NavigateToPendingEntry(content::NavigationController::ReloadType)
+ 563
16 libcontent.dylib 0x1c6e2b6f non-virtual thunk to
content::WebContentsImpl::NavigateToPendingEntry(content::NavigationController::ReloadType)
+ 63
17 libcontent.dylib 0x1bdf96fb
content::NavigationControllerImpl::NavigateToPendingEntry(content::NavigationController::ReloadType)
+ 859
18 libcontent.dylib 0x1bdf9d14
content::NavigationControllerImpl::LoadEntry(content::NavigationEntryImpl*) + 84
19 libcontent.dylib 0x1bdfc150
content::NavigationControllerImpl::LoadURLWithParams(content::NavigationController::LoadURLParams
const&) + 2720
20 libchrome_main_dll.dylib 0x02c93906 (anonymous
namespace)::LoadURLInContents(content::WebContents*, GURL const&,
chrome::NavigateParams*) + 550
21 libchrome_main_dll.dylib 0x02c922af
chrome::Navigate(chrome::NavigateParams*) + 2479
22 libchrome_main_dll.dylib 0x012f8b6e (anonymous
namespace)::SessionRestoreImpl::AppendURLsToBrowser(Browser*, std::vector<GURL,
std::allocator<GURL> > const&) + 286
23 libchrome_main_dll.dylib 0x012f8812 (anonymous
namespace)::SessionRestoreImpl::FinishedTabCreation(bool, bool) + 466
24 libchrome_main_dll.dylib 0x012fdee7 (anonymous
namespace)::SessionRestoreImpl::ProcessSessionWindows(std::vector<SessionWindow*,
std::allocator<SessionWindow*> >*, int) + 951
25 libchrome_main_dll.dylib 0x012f4a49 (anonymous
namespace)::SessionRestoreImpl::Restore() + 825
26 libchrome_main_dll.dylib 0x012f45ea
SessionRestore::RestoreSession(Profile*, Browser*, chrome::HostDesktopType,
unsigned int, std::vector<GURL, std::allocator<GURL> > const&) + 794
27 libchrome_main_dll.dylib 0x03250c3c
StartupBrowserCreatorImpl::ProcessStartupURLs(std::vector<GURL,
std::allocator<GURL> > const&, chrome::HostDesktopType) + 2060
28 libchrome_main_dll.dylib 0x0324fba2
StartupBrowserCreatorImpl::ProcessLaunchURLs(bool, std::vector<GURL,
std::allocator<GURL> > const&, chrome::HostDesktopType) + 466
29 libchrome_main_dll.dylib 0x0324f0af
StartupBrowserCreatorImpl::Launch(Profile*, std::vector<GURL,
std::allocator<GURL> > const&, bool, chrome::HostDesktopType) + 1375
30 libchrome_main_dll.dylib 0x03244cb0
StartupBrowserCreator::LaunchBrowser(base::CommandLine const&, Profile*,
base::FilePath const&, chrome::startup::IsProcessStartup,
chrome::startup::IsFirstRun, int*) + 1216
31 libchrome_main_dll.dylib 0x03246e60
StartupBrowserCreator::ProcessCmdLineImpl(base::CommandLine const&,
base::FilePath const&, bool, Profile*, std::vector<Profile*,
std::allocator<Profile*> > const&, int*, StartupBrowserCreator*) + 4976
32 libchrome_main_dll.dylib 0x0039b9d8
StartupBrowserCreator::Start(base::CommandLine const&, base::FilePath const&,
Profile*, std::vector<Profile*, std::allocator<Profile*> > const&, int*) + 136
33 libchrome_main_dll.dylib 0x00397768
ChromeBrowserMainParts::PreMainMessageLoopRunImpl() + 4664
34 libchrome_main_dll.dylib 0x0039649e
ChromeBrowserMainParts::PreMainMessageLoopRun() + 334
35 libcontent.dylib 0x1bb72af9
content::BrowserMainLoop::PreMainMessageLoopRun() + 377
36 libcontent.dylib 0x1bb7c378
base::internal::RunnableAdapter<int
(content::BrowserMainLoop::*)()>::Run(content::BrowserMainLoop*) + 120
37 libcontent.dylib 0x1bb7c294
base::internal::InvokeHelper<false, int, base::internal::RunnableAdapter<int
(content::BrowserMainLoop::*)()>, void
(content::BrowserMainLoop*)>::MakeItSo(base::internal::RunnableAdapter<int
(content::BrowserMainLoop::*)()>, content::BrowserMainLoop*) + 68
38 libcontent.dylib 0x1bb7c1d4 base::internal::Invoker<1,
base::internal::BindState<base::internal::RunnableAdapter<int
(content::BrowserMainLoop::*)()>, int (content::BrowserMainLoop*), void
(base::internal::UnretainedWrapper<content::BrowserMainLoop>)>, int
(content::BrowserMainLoop*)>::Run(base::internal::BindStateBase*) + 116
39 libcontent.dylib 0x1c1eb76f base::Callback<int ()>::Run()
const + 63
40 libcontent.dylib 0x1c66de28
content::StartupTaskRunner::RunAllTasksNow() + 120
41 libcontent.dylib 0x1bb7064f
content::BrowserMainLoop::CreateStartupTasks() + 1279
42 libcontent.dylib 0x1bb84dc6
content::BrowserMainRunnerImpl::Initialize(content::MainFunctionParams const&) +
822
43 libcontent.dylib 0x1bb6c7ce
content::BrowserMain(content::MainFunctionParams const&) + 254
44 libcontent.dylib 0x1b9bac5c
content::RunNamedProcessTypeMain(std::string const&, content::MainFunctionParams
const&, content::ContentMainDelegate*) + 268
45 libcontent.dylib 0x1b9bc34b
content::ContentMainRunnerImpl::Run() + 779
46 libcontent.dylib 0x1b9ba0f5
content::ContentMain(content::ContentMainParams const&) + 133
47 libchrome_main_dll.dylib 0x000adc5c ChromeMain + 92
48 Chromium 0x0009aacb main + 43
49 Chromium 0x0009aa95 start + 53
[6948:1287:1015/153256:INFO:extension_web_contents_observer.cc(34)] 0x7bdc62e0
[6948:1287:1015/153256:FATAL:extension_web_contents_observer.cc(36)] Check
failed: inserted.
0 libbase.dylib 0x0cc747ff
base::debug::StackTrace::StackTrace() + 63
1 libbase.dylib 0x0cc7485b
base::debug::StackTrace::StackTrace() + 43
2 libbase.dylib 0x0cd22932
logging::LogMessage::~LogMessage() + 82
3 libbase.dylib 0x0cd216ab
logging::LogMessage::~LogMessage() + 43
4 libchrome_main_dll.dylib 0x046bb8e7
extensions::ExtensionWebContentsObserver::RenderFrameCreated(content::RenderFrameHost*)
+ 567
5 libcontent.dylib 0x1c6ea1af
content::WebContentsImpl::RenderFrameCreated(content::RenderFrameHost*) + 143
6 libcontent.dylib 0x1c6ea23f non-virtual thunk to
content::WebContentsImpl::RenderFrameCreated(content::RenderFrameHost*) + 63
7 libcontent.dylib 0x1be5cbbc
content::RenderFrameHostManager::CreateRenderFrame(content::SiteInstance*, int,
bool, bool, bool) + 2860
8 libcontent.dylib 0x1be5c03d
content::RenderFrameHostManager::CreateRenderFrameHostForNewSiteInstance(content::SiteInstance*,
content::SiteInstance*, bool) + 365
9 libcontent.dylib 0x1be5652b
content::RenderFrameHostManager::UpdateStateForNavigate(GURL const&,
content::SiteInstance*, ui::PageTransition, bool, bool, content::GlobalRequestID
const&, int) + 1115
10 libcontent.dylib 0x1be55c52
content::RenderFrameHostManager::Navigate(content::NavigationEntryImpl const&) +
610
11 libcontent.dylib 0x1be18f99
content::NavigatorImpl::NavigateToEntry(content::RenderFrameHostImpl*,
content::NavigationEntryImpl const&, content::NavigationController::ReloadType)
+ 1209
12 libcontent.dylib 0x1be1a50a
content::NavigatorImpl::NavigateToPendingEntry(content::RenderFrameHostImpl*,
content::NavigationController::ReloadType) + 106
13 libcontent.dylib 0x1c6e2af3
content::WebContentsImpl::NavigateToPendingEntry(content::NavigationController::ReloadType)
+ 563
14 libcontent.dylib 0x1c6e2b6f non-virtual thunk to
content::WebContentsImpl::NavigateToPendingEntry(content::NavigationController::ReloadType)
+ 63
15 libcontent.dylib 0x1bdf96fb
content::NavigationControllerImpl::NavigateToPendingEntry(content::NavigationController::ReloadType)
+ 859
16 libcontent.dylib 0x1bdf9d14
content::NavigationControllerImpl::LoadEntry(content::NavigationEntryImpl*) + 84
17 libcontent.dylib 0x1bdfc150
content::NavigationControllerImpl::LoadURLWithParams(content::NavigationController::LoadURLParams
const&) + 2720
18 libchrome_main_dll.dylib 0x02c93906 (anonymous
namespace)::LoadURLInContents(content::WebContents*, GURL const&,
chrome::NavigateParams*) + 550
19 libchrome_main_dll.dylib 0x02c922af
chrome::Navigate(chrome::NavigateParams*) + 2479
20 libchrome_main_dll.dylib 0x012f8b6e (anonymous
namespace)::SessionRestoreImpl::AppendURLsToBrowser(Browser*, std::vector<GURL,
std::allocator<GURL> > const&) + 286
21 libchrome_main_dll.dylib 0x012f8812 (anonymous
namespace)::SessionRestoreImpl::FinishedTabCreation(bool, bool) + 466
22 libchrome_main_dll.dylib 0x012fdee7 (anonymous
namespace)::SessionRestoreImpl::ProcessSessionWindows(std::vector<SessionWindow*,
std::allocator<SessionWindow*> >*, int) + 951
23 libchrome_main_dll.dylib 0x012f4a49 (anonymous
namespace)::SessionRestoreImpl::Restore() + 825
24 libchrome_main_dll.dylib 0x012f45ea
SessionRestore::RestoreSession(Profile*, Browser*, chrome::HostDesktopType,
unsigned int, std::vector<GURL, std::allocator<GURL> > const&) + 794
25 libchrome_main_dll.dylib 0x03250c3c
StartupBrowserCreatorImpl::ProcessStartupURLs(std::vector<GURL,
std::allocator<GURL> > const&, chrome::HostDesktopType) + 2060
26 libchrome_main_dll.dylib 0x0324fba2
StartupBrowserCreatorImpl::ProcessLaunchURLs(bool, std::vector<GURL,
std::allocator<GURL> > const&, chrome::HostDesktopType) + 466
27 libchrome_main_dll.dylib 0x0324f0af
StartupBrowserCreatorImpl::Launch(Profile*, std::vector<GURL,
std::allocator<GURL> > const&, bool, chrome::HostDesktopType) + 1375
28 libchrome_main_dll.dylib 0x03244cb0
StartupBrowserCreator::LaunchBrowser(base::CommandLine const&, Profile*,
base::FilePath const&, chrome::startup::IsProcessStartup,
chrome::startup::IsFirstRun, int*) + 1216
29 libchrome_main_dll.dylib 0x03246e60
StartupBrowserCreator::ProcessCmdLineImpl(base::CommandLine const&,
base::FilePath const&, bool, Profile*, std::vector<Profile*,
std::allocator<Profile*> > const&, int*, StartupBrowserCreator*) + 4976
30 libchrome_main_dll.dylib 0x0039b9d8
StartupBrowserCreator::Start(base::CommandLine const&, base::FilePath const&,
Profile*, std::vector<Profile*, std::allocator<Profile*> > const&, int*) + 136
31 libchrome_main_dll.dylib 0x00397768
ChromeBrowserMainParts::PreMainMessageLoopRunImpl() + 4664
32 libchrome_main_dll.dylib 0x0039649e
ChromeBrowserMainParts::PreMainMessageLoopRun() + 334
33 libcontent.dylib 0x1bb72af9
content::BrowserMainLoop::PreMainMessageLoopRun() + 377
34 libcontent.dylib 0x1bb7c378
base::internal::RunnableAdapter<int
(content::BrowserMainLoop::*)()>::Run(content::BrowserMainLoop*) + 120
35 libcontent.dylib 0x1bb7c294
base::internal::InvokeHelper<false, int, base::internal::RunnableAdapter<int
(content::BrowserMainLoop::*)()>, void
(content::BrowserMainLoop*)>::MakeItSo(base::internal::RunnableAdapter<int
(content::BrowserMainLoop::*)()>, content::BrowserMainLoop*) + 68
36 libcontent.dylib 0x1bb7c1d4 base::internal::Invoker<1,
base::internal::BindState<base::internal::RunnableAdapter<int
(content::BrowserMainLoop::*)()>, int (content::BrowserMainLoop*), void
(base::internal::UnretainedWrapper<content::BrowserMainLoop>)>, int
(content::BrowserMainLoop*)>::Run(base::internal::BindStateBase*) + 116
37 libcontent.dylib 0x1c1eb76f base::Callback<int ()>::Run()
const + 63
38 libcontent.dylib 0x1c66de28
content::StartupTaskRunner::RunAllTasksNow() + 120
39 libcontent.dylib 0x1bb7064f
content::BrowserMainLoop::CreateStartupTasks() + 1279
40 libcontent.dylib 0x1bb84dc6
content::BrowserMainRunnerImpl::Initialize(content::MainFunctionParams const&) +
822
41 libcontent.dylib 0x1bb6c7ce
content::BrowserMain(content::MainFunctionParams const&) + 254
42 libcontent.dylib 0x1b9bac5c
content::RunNamedProcessTypeMain(std::string const&, content::MainFunctionParams
const&, content::ContentMainDelegate*) + 268
43 libcontent.dylib 0x1b9bc34b
content::ContentMainRunnerImpl::Run() + 779
44 libcontent.dylib 0x1b9ba0f5
content::ContentMain(content::ContentMainParams const&) + 133
45 libchrome_main_dll.dylib 0x000adc5c ChromeMain + 92
46 Chromium 0x0009aacb main + 43
47 Chromium 0x0009aa95 start + 53
It looks like RenderFrameHostManager is triggering a second call. I'll take a
closer look into this when I get back to Sydney.
raymes
2014/10/20 02:12:55
Given that it's not urgent to land this CL I think
Given that it's not urgent to land this CL I think we should try to fix this bug
or at least find an owner willing to look at it before landing (otherwise other
people might start adding the same hack as this and we'll be in a worse mess!).
Sam McNally
2014/10/22 02:04:29
Filed https://code.google.com/p/chromium/issues/de
On 2014/10/20 02:12:55, raymes wrote:
> Given that it's not urgent to land this CL I think we should try to fix this
bug
> or at least find an owner willing to look at it before landing (otherwise
other
> people might start adding the same hack as this and we'll be in a worse
mess!).
Filed https://code.google.com/p/chromium/issues/detail?id=425397 and switched to
using RenderViewCreated for now. This should be enough for serial and we can add
support for non-main frames later.
|
+ return; |
+ known_render_frame_hosts_.insert(render_frame_host); |
+ ServiceRegistrationManager::GetSharedInstance()->AddToRenderFrame( |
+ render_frame_host); |
+} |
+ |
+void ExtensionWebContentsObserver::RenderFrameDeleted( |
+ content::RenderFrameHost* render_frame_host) { |
+ known_render_frame_hosts_.erase(render_frame_host); |
+} |
+ |
void ExtensionWebContentsObserver::RenderViewCreated( |
content::RenderViewHost* render_view_host) { |
NotifyRenderViewType(render_view_host); |