diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-20 12:56:43 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-20 12:56:43 +0000 |
commit | bed76fded2fb471c26e6f78c6709fb3c3e5a04a3 (patch) | |
tree | 29404fe76173adc18407a3ce4b55a4f10a558679 /chrome/browser/task_manager_browsertest.cc | |
parent | 64569cce3a56ca39eea8712a4f91caad7de32be2 (diff) | |
download | chromium_src-bed76fded2fb471c26e6f78c6709fb3c3e5a04a3.zip chromium_src-bed76fded2fb471c26e6f78c6709fb3c3e5a04a3.tar.gz chromium_src-bed76fded2fb471c26e6f78c6709fb3c3e5a04a3.tar.bz2 |
Fix a crash on browser exit after opening TaskManager.
TaskManager is a singleton, so it's destroyed by AtExitManager. At the time
of destruction it cannot register AtExit callbacks (AtExitManager requires
that). It turns out that some Windows view code wants to register an AtExit
callback during destruction.
For more info about view code, see http://src.chromium.org/viewvc/chrome?view=rev&revision=9161
The fix is to destroy the view early, using EnsureShutdown static method
of TaskManager. It was also necessary to delete child views a bit earlier
to avoid another crashed.
Added a regression browser_test and verified that it's broken without this fix.
http://crbug.com/11180
Review URL: http://codereview.chromium.org/114031
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@16474 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/task_manager_browsertest.cc')
-rw-r--r-- | chrome/browser/task_manager_browsertest.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/chrome/browser/task_manager_browsertest.cc b/chrome/browser/task_manager_browsertest.cc new file mode 100644 index 0000000..6eccc6b --- /dev/null +++ b/chrome/browser/task_manager_browsertest.cc @@ -0,0 +1,19 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/task_manager.h" + +#include "chrome/test/in_process_browser_test.h" +#include "testing/gtest/include/gtest/gtest.h" + +class TaskManagerBrowserTest : public InProcessBrowserTest { +}; + +// Regression test for http://crbug.com/11180 +IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, ShutdownWhileOpen) { + TaskManager::Open(); +} + +// TODO(phajdan.jr): Write another test which explicitly closes TaskManager. +// This requires a small refactoring. |