Commit 778ac205 authored by Fergal Daly's avatar Fergal Daly Committed by Commit Bot

Add CHECKs to decide between several theories on how we are crashing.

This will only trigger once I land https://crrev.com/c/2006890 but we
have no repro steps https://crbug.com/1014212 and are depending on crash
reports.

Check that:
- the RFH pointer is always replaced by a non-null pointer
- RFHI.frame_ is valid after we declare the RenderFrame to have been
  created
- RFHI.frame_ remains valid after all calls to SetUpMojoIfNeeded



Bug: 981339,1014212
Change-Id: Iab311832be80dcbe1a1ff431af551cdb3a3d645a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2010511
Commit-Queue: Fergal Daly <fergal@chromium.org>
Reviewed-by: default avatarAlexander Timin <altimin@chromium.org>
Reviewed-by: default avatarArthur Sonzogni <arthursonzogni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#733998}
parent d7439798
...@@ -334,6 +334,9 @@ void CrossProcessFrameConnector::OnVisibilityChanged( ...@@ -334,6 +334,9 @@ void CrossProcessFrameConnector::OnVisibilityChanged(
if (!view_) if (!view_)
return; return;
// TODO(https://crbug.com/1014212) Remove this CHECK when the bug is fixed.
CHECK(
frame_proxy_in_parent_renderer_->frame_tree_node()->current_frame_host());
frame_proxy_in_parent_renderer_->frame_tree_node() frame_proxy_in_parent_renderer_->frame_tree_node()
->current_frame_host() ->current_frame_host()
->VisibilityChanged(visibility); ->VisibilityChanged(visibility);
......
...@@ -2163,6 +2163,9 @@ void RenderFrameHostImpl::SetRenderFrameCreated(bool created) { ...@@ -2163,6 +2163,9 @@ void RenderFrameHostImpl::SetRenderFrameCreated(bool created) {
delegate_->RenderFrameDeleted(this); delegate_->RenderFrameDeleted(this);
} }
} }
// TODO(http://crbug.com/1014212): Change to DCHECK.
if (created)
CHECK(frame_);
if (created && GetLocalRenderWidgetHost()) { if (created && GetLocalRenderWidgetHost()) {
mojo::PendingRemote<mojom::Widget> widget; mojo::PendingRemote<mojom::Widget> widget;
...@@ -5786,6 +5789,9 @@ void RenderFrameHostImpl::SetUpMojoIfNeeded() { ...@@ -5786,6 +5789,9 @@ void RenderFrameHostImpl::SetUpMojoIfNeeded() {
mojo::Remote<mojom::FrameFactory>(std::move(frame_factory)) mojo::Remote<mojom::FrameFactory>(std::move(frame_factory))
->CreateFrame(routing_id_, frame_.BindNewPipeAndPassReceiver()); ->CreateFrame(routing_id_, frame_.BindNewPipeAndPassReceiver());
// TODO(http://crbug.com/1014212): Change to DCHECK.
CHECK(frame_);
mojo::PendingRemote<service_manager::mojom::InterfaceProvider> mojo::PendingRemote<service_manager::mojom::InterfaceProvider>
remote_interfaces; remote_interfaces;
frame_->GetInterfaceProvider( frame_->GetInterfaceProvider(
...@@ -7661,6 +7667,8 @@ void RenderFrameHostImpl::RemoveServiceWorkerContainerHost( ...@@ -7661,6 +7667,8 @@ void RenderFrameHostImpl::RemoveServiceWorkerContainerHost(
} }
void RenderFrameHostImpl::UpdateFrameFrozenState() { void RenderFrameHostImpl::UpdateFrameFrozenState() {
// TODO(http://crbug.com/1014212): remove this.
CHECK(frame_);
if (!IsFeatureEnabled( if (!IsFeatureEnabled(
blink::mojom::FeaturePolicyFeature::kExecutionWhileNotRendered) && blink::mojom::FeaturePolicyFeature::kExecutionWhileNotRendered) &&
visibility_ == blink::mojom::FrameVisibility::kNotRendered) { visibility_ == blink::mojom::FrameVisibility::kNotRendered) {
......
...@@ -2352,7 +2352,8 @@ void RenderFrameHostManager::CommitPending( ...@@ -2352,7 +2352,8 @@ void RenderFrameHostManager::CommitPending(
// Swap in the new frame and make it active. Also ensure the FrameTree // Swap in the new frame and make it active. Also ensure the FrameTree
// stays in sync. // stays in sync.
DCHECK(pending_rfh); // TODO(http://crbug.com/1014212): Change to DCHECK.
CHECK(pending_rfh);
std::unique_ptr<RenderFrameHostImpl> old_render_frame_host; std::unique_ptr<RenderFrameHostImpl> old_render_frame_host;
old_render_frame_host = SetRenderFrameHost(std::move(pending_rfh)); old_render_frame_host = SetRenderFrameHost(std::move(pending_rfh));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment