
When investigating shutdown hangs it can be important to know key times like when shutdown started, when a particular task was started, and when a shutdown hang was detected. Previously this information was difficult to obtain but this change puts these three times in local variables in the appropriate threads, using base::debug::Alias() to lock them there. This allows determining, for instance, how long the shutdown-hang timeout was, and whether a task was started before or after shutdown was initiated. Bug: 1431378 Change-Id: Ic5a79c5e004e1b6fc11d37b1d6f409b6affac069 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4424837 Commit-Queue: Bruce Dawson <brucedawson@chromium.org> Code-Coverage: Findit <findit-for-me@appspot.gserviceaccount.com> Reviewed-by: Olivier Li <olivierli@chromium.org> Reviewed-by: Francois Pierre Doray <fdoray@chromium.org> Reviewed-by: Avi Drissman <avi@chromium.org> Reviewed-by: Steven Holte <holte@chromium.org> Cr-Commit-Position: refs/heads/main@{#1133121}
49 lines
1.5 KiB
C++
49 lines
1.5 KiB
C++
// Copyright 2012 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "content/browser/browser_main.h"
|
|
|
|
#include <memory>
|
|
|
|
#include "base/debug/alias.h"
|
|
#include "base/process/current_process.h"
|
|
#include "base/time/time.h"
|
|
#include "base/trace_event/trace_event.h"
|
|
#include "content/browser/browser_main_runner_impl.h"
|
|
#include "content/common/content_constants_internal.h"
|
|
|
|
namespace content {
|
|
|
|
// Main routine for running as the Browser process.
|
|
int BrowserMain(MainFunctionParams parameters) {
|
|
TRACE_EVENT_INSTANT0("startup", "BrowserMain", TRACE_EVENT_SCOPE_THREAD);
|
|
|
|
base::CurrentProcess::GetInstance().SetProcessType(
|
|
base::CurrentProcessType::PROCESS_BROWSER);
|
|
base::trace_event::TraceLog::GetInstance()->SetProcessSortIndex(
|
|
kTraceEventBrowserProcessSortIndex);
|
|
|
|
std::unique_ptr<BrowserMainRunnerImpl> main_runner(
|
|
BrowserMainRunnerImpl::Create());
|
|
|
|
int exit_code = main_runner->Initialize(std::move(parameters));
|
|
if (exit_code >= 0)
|
|
return exit_code;
|
|
|
|
exit_code = main_runner->Run();
|
|
|
|
// Record the time shutdown started in convenient units. This can be compared
|
|
// to times stored in places like ReportThreadHang() and
|
|
// TaskAnnotator::RunTaskImpl() when analyzing hangs.
|
|
const int64_t shutdown_time =
|
|
base::TimeTicks::Now().since_origin().InSeconds();
|
|
base::debug::Alias(&shutdown_time);
|
|
|
|
main_runner->Shutdown();
|
|
|
|
return exit_code;
|
|
}
|
|
|
|
} // namespace content
|