diff options
author | nsylvain@chromium.org <nsylvain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-10-22 20:05:46 +0000 |
---|---|---|
committer | nsylvain@chromium.org <nsylvain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-10-22 20:05:46 +0000 |
commit | 46a6b528816b1c9c540f976998864891874b2a40 (patch) | |
tree | 4eba7fb9976672bbf9a4df5db8a469f163c6ccbe /chrome/plugin/plugin_thread.cc | |
parent | f760515c64d3ac5183156f795d2d2daade452a7c (diff) | |
download | chromium_src-46a6b528816b1c9c540f976998864891874b2a40.zip chromium_src-46a6b528816b1c9c540f976998864891874b2a40.tar.gz chromium_src-46a6b528816b1c9c540f976998864891874b2a40.tar.bz2 |
This is a patch for bug 1385045: Adobe Acrobat 9.0 crash.
Adobe Acrobat 9.0 loads a dll called bib.dll. Usually
it unloads it 30 seconds after the last instance of the
plugin goes away, or when the browser process goes away.
To know if the browser process goes away, it subclasses
the main browser window. It seems to work fine in firefox,
but it does not work in chrome.
Also the 30 seconds delay does not work because we close
the plugin process too fast (10 seconds) after the last
instance of the plugin is closed.
bib.dll is then unloaded by ExitProcess, which causes
a crash in bib.dll.
We could wait ~35 seconds after the last instance before
closing the process, but it might be problematic with
upgrades and could result in plugin process outliving the
brower process.
This current patch just kills the process before ExitProcess,
so it does not cause a crash and display an error message
to the user. This is not a fix, this is just a usuability
improvement.
As far as I know we are still waiting for help from
the Adobe team on this issue. They would need to find
a way to unload bib.dll cleanly in chrome.
BUG: 1385045
Review URL: http://codereview.chromium.org/8015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3753 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/plugin/plugin_thread.cc')
-rw-r--r-- | chrome/plugin/plugin_thread.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/chrome/plugin/plugin_thread.cc b/chrome/plugin/plugin_thread.cc index acb179b..4fb4454 100644 --- a/chrome/plugin/plugin_thread.cc +++ b/chrome/plugin/plugin_thread.cc @@ -114,6 +114,10 @@ void PluginThread::CleanUp() { notification_service_.reset(); resource_dispatcher_ = NULL; CoUninitialize(); + + if (webkit_glue::ShouldForcefullyTerminatePluginProcess()) + TerminateProcess(GetCurrentProcess(), 0); + } void PluginThread::OnCreateChannel(int process_id, HANDLE renderer_handle) { |