From 3eabbb2e7df50fbe7ac9d9367432480ebdb96868 Mon Sep 17 00:00:00 2001 From: Marshall Greenblatt Date: Tue, 13 Jan 2015 17:38:49 +0000 Subject: [PATCH] Fix crash when calling LoadURL/Reload from OnRenderProcessTerminated (issue #1429). git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1971 5089003a-bbd8-11dd-ad1f-f1f9622dbc98 --- patch/patch.cfg | 6 ++++++ patch/patches/render_process_host_1429.patch | 22 ++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 patch/patches/render_process_host_1429.patch diff --git a/patch/patch.cfg b/patch/patch.cfg index 062e1c931..301725ee9 100644 --- a/patch/patch.cfg +++ b/patch/patch.cfg @@ -114,6 +114,12 @@ patches = [ 'name': 'spellcheck_137', 'path': '../chrome/browser/spellchecker/', }, + { + # Fix crash when calling LoadURL/Reload from OnRenderProcessTerminated. + # https://code.google.com/p/chromiumembedded/issues/detail?id=1429 + 'name': 'render_process_host_1429', + 'path': '../content/browser/renderer_host/', + }, { # Disable scollbar bounce and overlay on OS X. # http://code.google.com/p/chromiumembedded/issues/detail?id=364 diff --git a/patch/patches/render_process_host_1429.patch b/patch/patches/render_process_host_1429.patch new file mode 100644 index 000000000..06cd49012 --- /dev/null +++ b/patch/patches/render_process_host_1429.patch @@ -0,0 +1,22 @@ +diff --git render_process_host_impl.cc render_process_host_impl.cc +index 656e995..aa3e239 100644 +--- render_process_host_impl.cc ++++ render_process_host_impl.cc +@@ -2047,6 +2047,8 @@ void RenderProcessHostImpl::ProcessDied(bool already_dead) { + #endif + RemoveUserData(kSessionStorageHolderKey); + ++ mojo_application_host_.reset(new MojoApplicationHost); ++ + IDMap::iterator iter(&listeners_); + while (!iter.IsAtEnd()) { + iter.GetCurrentValue()->OnMessageReceived( +@@ -2056,8 +2058,6 @@ void RenderProcessHostImpl::ProcessDied(bool already_dead) { + iter.Advance(); + } + +- mojo_application_host_.reset(new MojoApplicationHost); +- + // It's possible that one of the calls out to the observers might have caused + // this object to be no longer needed. + if (delayed_cleanup_needed_)