Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(854)

Side by Side Diff: chrome/browser/metrics/thread_watcher.cc

Issue 341713003: ThreadWatcher: disarm startup watchdog even when stop is called. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/metrics/thread_watcher.h" 5 #include "chrome/browser/metrics/thread_watcher.h"
6 6
7 #include <math.h> // ceil 7 #include <math.h> // ceil
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 639 matching lines...) Expand 10 before | Expand all | Expand 10 after
650 (*crash_on_hang_threads)[thread_name] = crash_data; 650 (*crash_on_hang_threads)[thread_name] = crash_data;
651 } 651 }
652 } 652 }
653 653
654 // static 654 // static
655 void ThreadWatcherList::InitializeAndStartWatching( 655 void ThreadWatcherList::InitializeAndStartWatching(
656 uint32 unresponsive_threshold, 656 uint32 unresponsive_threshold,
657 const CrashOnHangThreadMap& crash_on_hang_threads) { 657 const CrashOnHangThreadMap& crash_on_hang_threads) {
658 DCHECK(WatchDogThread::CurrentlyOnWatchDogThread()); 658 DCHECK(WatchDogThread::CurrentlyOnWatchDogThread());
659 659
660 // Disarm the startup timebomb, even if stop has been called.
661 BrowserThread::PostTask(
662 BrowserThread::UI,
663 FROM_HERE,
664 base::Bind(&StartupTimeBomb::DisarmStartupTimeBomb));
665
660 // This method is deferred in relationship to its StopWatchingAll() 666 // This method is deferred in relationship to its StopWatchingAll()
661 // counterpart. If a previous initialization has already happened, or if 667 // counterpart. If a previous initialization has already happened, or if
662 // stop has been called, there's nothing left to do here. 668 // stop has been called, there's nothing left to do here.
663 if (g_thread_watcher_list_ || g_stopped_) 669 if (g_thread_watcher_list_ || g_stopped_)
664 return; 670 return;
665 671
666 ThreadWatcherList* thread_watcher_list = new ThreadWatcherList(); 672 ThreadWatcherList* thread_watcher_list = new ThreadWatcherList();
667 CHECK(thread_watcher_list); 673 CHECK(thread_watcher_list);
668 674
669 BrowserThread::PostTask(
670 BrowserThread::UI,
671 FROM_HERE,
672 base::Bind(&StartupTimeBomb::DisarmStartupTimeBomb));
673
674 const base::TimeDelta kSleepTime = 675 const base::TimeDelta kSleepTime =
675 base::TimeDelta::FromSeconds(kSleepSeconds); 676 base::TimeDelta::FromSeconds(kSleepSeconds);
676 const base::TimeDelta kUnresponsiveTime = 677 const base::TimeDelta kUnresponsiveTime =
677 base::TimeDelta::FromSeconds(kUnresponsiveSeconds); 678 base::TimeDelta::FromSeconds(kUnresponsiveSeconds);
678 679
679 StartWatching(BrowserThread::UI, "UI", kSleepTime, kUnresponsiveTime, 680 StartWatching(BrowserThread::UI, "UI", kSleepTime, kUnresponsiveTime,
680 unresponsive_threshold, crash_on_hang_threads); 681 unresponsive_threshold, crash_on_hang_threads);
681 StartWatching(BrowserThread::IO, "IO", kSleepTime, kUnresponsiveTime, 682 StartWatching(BrowserThread::IO, "IO", kSleepTime, kUnresponsiveTime,
682 unresponsive_threshold, crash_on_hang_threads); 683 unresponsive_threshold, crash_on_hang_threads);
683 StartWatching(BrowserThread::DB, "DB", kSleepTime, kUnresponsiveTime, 684 StartWatching(BrowserThread::DB, "DB", kSleepTime, kUnresponsiveTime,
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after
1079 1080
1080 #if defined(OS_WIN) 1081 #if defined(OS_WIN)
1081 // On Windows XP, give twice the time for shutdown. 1082 // On Windows XP, give twice the time for shutdown.
1082 if (base::win::GetVersion() <= base::win::VERSION_XP) 1083 if (base::win::GetVersion() <= base::win::VERSION_XP)
1083 actual_duration *= 2; 1084 actual_duration *= 2;
1084 #endif 1085 #endif
1085 1086
1086 shutdown_watchdog_ = new ShutdownWatchDogThread(actual_duration); 1087 shutdown_watchdog_ = new ShutdownWatchDogThread(actual_duration);
1087 shutdown_watchdog_->Arm(); 1088 shutdown_watchdog_->Arm();
1088 } 1089 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698