fix: render process crash handling (#34428)
* fix: crash when renderer process is reused Could occur when a renderer crashes and the same-origin URL is loaded again which leads to reusing the renderer process. * test: renderer process crash recovery * fix: handle case which leads to render frame DCHECK * fix: lint
This commit is contained in:
parent
eb26f99f6e
commit
b00c026a54
3 changed files with 38 additions and 1 deletions
|
@ -188,13 +188,20 @@ const mojo::Remote<mojom::ElectronRenderer>& WebFrameMain::GetRendererApi() {
|
|||
}
|
||||
|
||||
void WebFrameMain::MaybeSetupMojoConnection() {
|
||||
if (render_frame_disposed_) {
|
||||
// RFH may not be set yet if called between when a new RFH is created and
|
||||
// before it's been swapped with an old RFH.
|
||||
LOG(INFO) << "Attempt to setup WebFrameMain connection while render frame "
|
||||
"is disposed";
|
||||
return;
|
||||
}
|
||||
|
||||
if (!renderer_api_) {
|
||||
pending_receiver_ = renderer_api_.BindNewPipeAndPassReceiver();
|
||||
renderer_api_.set_disconnect_handler(base::BindOnce(
|
||||
&WebFrameMain::OnRendererConnectionError, weak_factory_.GetWeakPtr()));
|
||||
}
|
||||
|
||||
// Render frame should exist when this method is called.
|
||||
DCHECK(render_frame_);
|
||||
|
||||
// Wait for RenderFrame to be created in renderer before accessing remote.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue