| Index: content/renderer/render_frame_impl.cc
 | 
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
 | 
| index 41daf307a3cf84ae2fd2c504e9845f93a172996f..09137d120d7b0943be743c9a78877d4f77cbf49c 100644
 | 
| --- a/content/renderer/render_frame_impl.cc
 | 
| +++ b/content/renderer/render_frame_impl.cc
 | 
| @@ -13,6 +13,7 @@
 | 
|  #include "base/command_line.h"
 | 
|  #include "base/debug/alias.h"
 | 
|  #include "base/debug/asan_invalid_access.h"
 | 
| +#include "base/debug/crash_logging.h"
 | 
|  #include "base/debug/dump_without_crashing.h"
 | 
|  #include "base/files/file.h"
 | 
|  #include "base/i18n/char_iterator.h"
 | 
| @@ -1531,6 +1532,7 @@ void RenderFrameImpl::OnSwapOut(
 | 
|  
 | 
|    RenderViewImpl* render_view = render_view_.get();
 | 
|    bool is_main_frame = is_main_frame_;
 | 
| +  int routing_id = GetRoutingID();
 | 
|  
 | 
|    // Now that all of the cleanup is complete and the browser side is notified,
 | 
|    // start using the RenderFrameProxy, if one is created.
 | 
| @@ -1546,8 +1548,15 @@ void RenderFrameImpl::OnSwapOut(
 | 
|  
 | 
|      // For main frames, the swap should have cleared the RenderView's pointer to
 | 
|      // this frame.
 | 
| -    if (is_main_frame)
 | 
| +    if (is_main_frame) {
 | 
| +      base::debug::SetCrashKeyValue("swapout_frame_id",
 | 
| +                                    base::IntToString(routing_id));
 | 
| +      base::debug::SetCrashKeyValue("swapout_proxy_id",
 | 
| +                                    base::IntToString(proxy->routing_id()));
 | 
| +      base::debug::SetCrashKeyValue(
 | 
| +          "swapout_view_id", base::IntToString(render_view->GetRoutingID()));
 | 
|        CHECK(!render_view->main_render_frame_);
 | 
| +    }
 | 
|  
 | 
|      if (is_loading)
 | 
|        proxy->OnDidStartLoading();
 | 
| @@ -3098,6 +3107,7 @@ void RenderFrameImpl::didCommitProvisionalLoad(
 | 
|      if (!proxy)
 | 
|        return;
 | 
|  
 | 
| +    int proxy_routing_id = proxy_routing_id_;
 | 
|      proxy->web_frame()->swap(frame_);
 | 
|      proxy_routing_id_ = MSG_ROUTING_NONE;
 | 
|      in_frame_tree_ = true;
 | 
| @@ -3106,6 +3116,19 @@ void RenderFrameImpl::didCommitProvisionalLoad(
 | 
|      // it needs to set RenderViewImpl's pointer for the main frame to itself
 | 
|      // and ensure RenderWidget is no longer in swapped out mode.
 | 
|      if (is_main_frame_) {
 | 
| +      // Debug cases of https://crbug.com/575245.
 | 
| +      base::debug::SetCrashKeyValue("commit_frame_id",
 | 
| +                                    base::IntToString(GetRoutingID()));
 | 
| +      base::debug::SetCrashKeyValue("commit_proxy_id",
 | 
| +                                    base::IntToString(proxy_routing_id));
 | 
| +      base::debug::SetCrashKeyValue(
 | 
| +          "commit_view_id", base::IntToString(render_view_->GetRoutingID()));
 | 
| +      if (render_view_->main_render_frame_) {
 | 
| +        base::debug::SetCrashKeyValue(
 | 
| +            "commit_main_render_frame_id",
 | 
| +            base::IntToString(
 | 
| +                render_view_->main_render_frame_->GetRoutingID()));
 | 
| +      }
 | 
|        CHECK(!render_view_->main_render_frame_);
 | 
|        render_view_->main_render_frame_ = this;
 | 
|        if (render_view_->is_swapped_out())
 | 
| 
 |