summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralexmos <alexmos@chromium.org>2016-03-22 14:42:03 -0700
committerCommit bot <commit-bot@chromium.org>2016-03-22 21:43:27 +0000
commit56d49295ef5c22d1fbc71d491494944cf1709bb3 (patch)
treeb46c5fcf953a3d241f4e3414439989580461164c
parent99d88a6fd4fed13ef44a24800f2bf79da69abc7e (diff)
downloadchromium_src-56d49295ef5c22d1fbc71d491494944cf1709bb3.zip
chromium_src-56d49295ef5c22d1fbc71d491494944cf1709bb3.tar.gz
chromium_src-56d49295ef5c22d1fbc71d491494944cf1709bb3.tar.bz2
Track down renderer crash in RenderFrameImpl::CreateFrame.
This will log a crash dump without crashing the browser process to help understand why we can't resolve the parent proxy RenderFrameImpl::CreateFrame. The crash dump will be taken if the proxy routing ID doesn't resolve to a proxy or resolves to a proxy that's not live. BUG=591478 CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_site_isolation Review URL: https://codereview.chromium.org/1810263002 Cr-Commit-Position: refs/heads/master@{#382687}
-rw-r--r--chrome/common/crash_keys.cc4
-rw-r--r--content/browser/frame_host/render_frame_host_manager.cc18
2 files changed, 22 insertions, 0 deletions
diff --git a/chrome/common/crash_keys.cc b/chrome/common/crash_keys.cc
index 75fcfda..f627dc9 100644
--- a/chrome/common/crash_keys.cc
+++ b/chrome/common/crash_keys.cc
@@ -174,6 +174,10 @@ size_t RegisterChromeCrashKeys() {
{ "initrf_view_id", kSmallSize },
{ "initrf_main_frame_id", kSmallSize },
{ "initrf_view_is_live", kSmallSize },
+
+ // Temporary for https://crbug.com/591478.
+ { "initrf_parent_proxy_exists", kSmallSize },
+ { "initrf_render_view_is_live", kSmallSize },
};
// This dynamic set of keys is used for sets of key value pairs when gathering
diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc
index 23f86ab..01547b0 100644
--- a/content/browser/frame_host/render_frame_host_manager.cc
+++ b/content/browser/frame_host/render_frame_host_manager.cc
@@ -1849,6 +1849,24 @@ bool RenderFrameHostManager::InitRenderFrame(
}
}
+ // TODO(alexmos): These CHECKs are temporary to track down
+ // https://crbug.com/591478. Verify that the parent routing ID
+ // points to a live RenderFrameProxy when this is not a remote-to-local
+ // navigation (i.e., when there's no |existing_proxy|).
+ if (!existing_proxy && frame_tree_node_->parent()) {
+ RenderFrameProxyHost* parent_proxy = RenderFrameProxyHost::FromID(
+ render_frame_host->GetProcess()->GetID(), parent_routing_id);
+ if (!parent_proxy || !parent_proxy->is_render_frame_proxy_live()) {
+ base::debug::SetCrashKeyValue("initrf_parent_proxy_exists",
+ parent_proxy ? "yes" : "no");
+ base::debug::SetCrashKeyValue(
+ "initrf_render_view_is_live",
+ render_frame_host->render_view_host()->IsRenderViewLive() ? "yes"
+ : "no");
+ base::debug::DumpWithoutCrashing();
+ }
+ }
+
return delegate_->CreateRenderFrameForRenderManager(
render_frame_host, proxy_routing_id, opener_routing_id, parent_routing_id,
previous_sibling_routing_id);