Commit 3b8b7c35 authored by Etienne Bergeron's avatar Etienne Bergeron Committed by Chromium LUCI CQ

Fix traces output during chrome shutdown

The tasks on shutdown are not scheduled if not mark as "BLOCK_SHUTDOWN".
This behavior leads FileTraceDataEndpoint object into an inconsistant
state since its assumes tasks are executed to close the endpoint.

The following stackframe shows the problem:

[26692:22732:1204/131653.908:ERROR:tracing_controller_impl_data_endpoint.cc(68)] FileTraceDataEndpoint: c:\src\chromium\startup.json
[26692:21808:1204/131719.958:ERROR:tracing_controller_impl_data_endpoint.cc(102)] OpenFileIfNeededOnBlockingThread!
[26692:22732:1204/131735.498:FATAL:tracing_controller_impl_data_endpoint.cc(86)] Check failed: file_ == nullptr.
Backtrace:
        base::debug::CollectStackTrace [0x00007FF87DAE24B2+18] (C:\src\chromium\src\base\debug\stack_trace_win.cc:303)
        base::debug::StackTrace::StackTrace [0x00007FF87D9D6AE2+18] (C:\src\chromium\src\base\debug\stack_trace.cc:195)
        logging::LogMessage::~LogMessage [0x00007FF87D9F2C94+148] (C:\src\chromium\src\base\logging.cc:566)
        logging::LogMessage::~LogMessage [0x00007FF87D9F3B80+16] (C:\src\chromium\src\base\logging.cc:559)
        content::`anonymous namespace'::FileTraceDataEndpoint::~FileTraceDataEndpoint [0x00007FF8603C5A50+96] (C:\src\chromium\src\content\browser\tracing\tracing_controller_impl_data_endpoint.cc:86)
        content::TracingControllerImpl::~TracingControllerImpl [0x00007FF8603C1B88+114] (C:\src\chromium\src\content\browser\tracing\tracing_controller_impl.cc:206)
        content::TracingControllerImpl::~TracingControllerImpl [0x00007FF8603C3F20+16] (C:\src\chromium\src\content\browser\tracing\tracing_controller_impl.cc:206)
        content::BrowserMainLoop::~BrowserMainLoop [0x00007FF85FD41EA7+295] (C:\src\chromium\src\content\browser\browser_main_loop.cc:549)
        content::BrowserMainLoop::~BrowserMainLoop [0x00007FF85FD46480+16] (C:\src\chromium\src\content\browser\browser_main_loop.cc:545)
        content::BrowserMainRunnerImpl::Shutdown [0x00007FF85FD476B8+312] (C:\src\chromium\src\content\browser\browser_main_runner_impl.cc:193)
        content::BrowserMain [0x00007FF85FD41935+213] (C:\src\chromium\src\content\browser\browser_main.cc:52)
        content::RunBrowserProcessMain [0x00007FF8609437C8+104] (C:\src\chromium\src\content\app\content_main_runner_impl.cc:520)
        content::ContentMainRunnerImpl::RunBrowser [0x00007FF86094469D+1005] (C:\src\chromium\src\content\app\content_main_runner_impl.cc:1008)
        content::ContentMainRunnerImpl::Run [0x00007FF860944289+457] (C:\src\chromium\src\content\app\content_main_runner_impl.cc:888)
        content::RunContentProcess [0x00007FF860943295+1573] (C:\src\chromium\src\content\app\content_main.cc:372)
        content::ContentMain [0x00007FF86094338D+61] (C:\src\chromium\src\content\app\content_main.cc:398)
        ChromeMain [0x00007FF84BD11225+389] (C:\src\chromium\src\chrome\app\chrome_main.cc:133)
        MainDllLoader::Launch [0x00007FF749A926B5+391] (C:\src\chromium\src\chrome\app\main_dll_loader_win.cc:169)
        wWinMain [0x00007FF749A91ADF+2783] (C:\src\chromium\src\chrome\app\chrome_exe_main_win.cc:345)
        __scrt_common_main_seh [0x00007FF749B89926+262] (d:\A01\_work\6\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
        BaseThreadInitThunk [0x00007FF8BF304034+20]
        RtlUserThreadStart [0x00007FF8C0913691+33]

R=gab@chromium.org, eseckler@chromium.org, fdoray@chromium.org

Bug: 1082916
Change-Id: I715d13e47de44c974a80ee80bec0f44639691786
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2575257Reviewed-by: default avatarEric Seckler <eseckler@chromium.org>
Reviewed-by: default avatarGabriel Charette <gab@chromium.org>
Commit-Queue: Gabriel Charette <gab@chromium.org>
Cr-Commit-Position: refs/heads/master@{#833882}
parent a9be0cc4
......@@ -59,7 +59,8 @@ class FileTraceDataEndpoint : public TracingController::TraceDataEndpoint {
: file_path_(trace_file_path),
completion_callback_(std::move(callback)),
may_block_task_runner_(base::ThreadPool::CreateSequencedTaskRunner(
{base::MayBlock(), write_priority})) {}
{base::MayBlock(), write_priority,
base::TaskShutdownBehavior::BLOCK_SHUTDOWN})) {}
void ReceiveTraceChunk(std::unique_ptr<std::string> chunk) override {
may_block_task_runner_->PostTask(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment