Index: content/browser/frame_host/frame_tree.cc |
diff --git a/content/browser/frame_host/frame_tree.cc b/content/browser/frame_host/frame_tree.cc |
index 96890f09075d9e438e750271b3405f8ae3b2d80f..79ca6b73c1a368c6ae49efd5a98c8c728872554a 100644 |
--- a/content/browser/frame_host/frame_tree.cc |
+++ b/content/browser/frame_host/frame_tree.cc |
@@ -204,7 +204,7 @@ void FrameTree::CreateProxiesForSiteInstance( |
if (!source->IsMainFrame()) { |
RenderViewHostImpl* render_view_host = |
source->frame_tree()->GetRenderViewHost(site_instance); |
- if (!render_view_host) { |
+ if (!render_view_host || !render_view_host->IsRenderViewLive()) { |
root()->render_manager()->CreateRenderFrame( |
site_instance, nullptr, MSG_ROUTING_NONE, |
CREATE_RF_SWAPPED_OUT | CREATE_RF_HIDDEN, nullptr); |
@@ -265,8 +265,10 @@ RenderViewHostImpl* FrameTree::CreateRenderViewHost(SiteInstance* site_instance, |
// Otherwise return the existing RenderViewHost for the SiteInstance. |
RenderFrameHostImpl* main_frame = static_cast<RenderFrameHostImpl*>( |
iter->second->GetMainFrame()); |
- if (main_frame->frame_tree_node()->render_manager()->IsPendingDeletion( |
- main_frame)) { |
+ // |main_frame| is NULL when the RVH is uninitialized. |
+ if (main_frame && |
+ main_frame->frame_tree_node()->render_manager()->IsPendingDeletion( |
+ main_frame)) { |
render_view_host_pending_shutdown_map_.insert( |
std::pair<int, RenderViewHostImpl*>(site_instance->GetId(), |
iter->second)); |