diff options
author | alexmos <alexmos@chromium.org> | 2016-03-22 14:42:03 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-22 21:43:27 +0000 |
commit | 56d49295ef5c22d1fbc71d491494944cf1709bb3 (patch) | |
tree | b46c5fcf953a3d241f4e3414439989580461164c | |
parent | 99d88a6fd4fed13ef44a24800f2bf79da69abc7e (diff) | |
download | chromium_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.cc | 4 | ||||
-rw-r--r-- | content/browser/frame_host/render_frame_host_manager.cc | 18 |
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); |