New issue
Advanced search Search tips

Issue 884269 link

Starred by 2 users

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug



Sign in to add a comment

DCHECK in FirstMeaningfulPaintDetector::SetFirstMeaningfulPaint() with unified mode

Project Member Reported by kylec...@chromium.org, Sep 14

Issue description

When 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

 
Components: -Blink>Paint Internals>GPU>Scheduling
Owner: sunn...@chromium.org
Status: Assigned (was: Untriaged)
Looks vaguely scheduling-related. Sunny, could you take a look or reassign? Thanks!
Cc: sunn...@chromium.org
Components: -Internals>GPU>Scheduling -Speed Speed>Metrics
Owner: ksakamoto@chromium.org
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.
Cc: -sadrul@chromium.org ksakamoto@chromium.org
Owner: sadrul@chromium.org
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.

It's also possible that first_meaningful_paint2_quiet_swap is not set in FirstMeaningfulPaintDetector::OnNetwork2Quiet().

Sign in to add a comment