DCHECK in FirstMeaningfulPaintDetector::SetFirstMeaningfulPaint() with unified mode |
||||
Issue descriptionWhen running Chrome OS in unified mode (two or more displays pretending to be one larger display) it consistently hits this DCHECK: https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/paint/first_meaningful_paint_detector.cc?l=270&rcl=501f9a1d94bcee5d5339d8d89a977d41ae16fdea This can be reproduced on Linux with the follow steps: 1. Build Chrome OS for Linux by adding target_os="chromeos" to GN args or following public build instructions. DCHECKs should be enabled via dcheck_always_on=true or a debug build. 2. Run Chrome with the following arguments. $ ./chrome --ash-host-window-bounds=800x800,900+0-800x800 --ash-dev-shortcuts --ash-debug-shortcuts --ash-enable-unified-desktop 3. There should be one large desktop spread across the two windows rather than two different desktops. If not switch from extended mode to unified mode in the display settings. 4. Open a browser window and load a website, it should crash after a few seconds with a stack trace similar to the following: [1:1:0914/141449.221298:FATAL:first_meaningful_paint_detector.cc(270)] Check failed: !swap_stamp.is_null(). #0 0x7fbb2269bd6c base::debug::StackTrace::StackTrace() #1 0x7fbb225cfefb logging::LogMessage::~LogMessage() #2 0x7fbb1833eaff blink::FirstMeaningfulPaintDetector::SetFirstMeaningfulPaint() #3 0x7fbb1833e9e2 blink::FirstMeaningfulPaintDetector::OnNetwork2Quiet() #4 0x7fbb18261beb blink::IdlenessDetector::WillProcessTask() #5 0x7fbb2263105b base::sequence_manager::internal::SequenceManagerImpl::NotifyWillProcessTask() #6 0x7fbb226303ea base::sequence_manager::internal::SequenceManagerImpl::TakeTaskImpl() #7 0x7fbb2262fd16 base::sequence_manager::internal::SequenceManagerImpl::TakeTask() #8 0x7fbb22630502 base::sequence_manager::internal::SequenceManagerImpl::TakeTask() #9 0x7fbb2263e563 base::sequence_manager::internal::ThreadControllerImpl::DoWork() #10 0x7fbb226405cb _ZN4base8internal7InvokerINS0_9BindStateIMNS_16sequence_manager8internal20ThreadControllerImplEFvNS5_8WorkTypeEEJNS_7WeakPtrIS5_EES6_EEEFvvEE3RunEPNS0_13BindStateBaseE #11 0x7fbb225b2ed5 base::debug::TaskAnnotator::RunTask() #12 0x7fbb225de01e base::MessageLoop::RunTask() #13 0x7fbb225de443 base::MessageLoop::DoWork() #14 0x7fbb225e1a56 base::MessagePumpDefault::Run() #15 0x7fbb225ddbb4 base::MessageLoop::Run() #16 0x7fbb22610349 base::RunLoop::Run() #17 0x7fbb1ffd148e content::RendererMain() #18 0x7fbb20095d26 content::RunZygote() #19 0x7fbb20096df5 content::ContentMainRunnerImpl::Run() #20 0x7fbb2295d035 service_manager::Main() #21 0x7fbb20095404 content::ContentMain() #22 0x562415fe4fb3 ChromeMain #23 0x7fbb130ac2b1 __libc_start_main #24 0x562415fe4e2a _start
,
Sep 14
Looks vaguely scheduling-related. Sunny, could you take a look or reassign? Thanks!
,
Sep 14
Not sure if this is scheduling related yet. ksakamoto@ please let us know if you think the compositor is violating some invariant paint metrics relies on.
,
Sep 18
This is because null timestamp is passed to PaintTiming::ReportSwapTime(). (That means also FirstPaint / FirstContentfulPaint won't be logged correctly.) sadrul@, would you take a look? I'm not familiar with how swap-promise works.
,
Jan 15
It's also possible that first_meaningful_paint2_quiet_swap is not set in FirstMeaningfulPaintDetector::OnNetwork2Quiet(). |
||||
►
Sign in to add a comment |
||||
Comment 1 by schenney@chromium.org
, Sep 14