New issue
Advanced search Search tips

Issue 855191 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jul 21
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 3
Type: Bug



Sign in to add a comment

ws: WindowTreeScheduleEmbedTest.ScheduleEmbed crashes when run with WindowServiceTest.DeleteWithClients

Project Member Reported by msw@chromium.org, Jun 21 2018

Issue description

ws: WindowTreeScheduleEmbedTest.ScheduleEmbed crashes when run with WindowServiceTest.DeleteWithClients

Running services_unittests locally had a few failures that passed on re-run (original failure logs at bottom). I ran the three flaky fixtures together and noticed that WindowTreeScheduleEmbedTest.ScheduleEmbed was crashing consistently, running without InProcessAudioService/AudioSystemTestTemplate/1.GetInputDeviceDescriptionsNoInputDevices yielded the same result.

(1) Build services_unittests on linux-chromeos (target_os = "chromeos")
(2) Run: out/Default/services_unittests --gtest_filter=WindowTreeScheduleEmbedTest.ScheduleEmbed:WindowServiceTest.DeleteWithClients
Expected: ScheduleEmbed passes, as it does when run independently.
Actual: ScheduleEmbed crashes, output below.

Kyle, can you take a look for the CreateOffscreenGLSurfaceWithFormat error?
https://cs.chromium.org/chromium/src/ui/gl/init/gl_factory_ozone.cc?rcl=e9fa851ff259ed374cdb0af3cf19fbc68562c175&l=102

Note: Google Test filter = WindowServiceTest.DeleteWithClients:WindowTreeScheduleEmbedTest.ScheduleEmbed
[==========] Running 2 tests from 2 test cases.
[----------] Global test environment set-up.
[----------] 1 test from WindowServiceTest
[ RUN      ] WindowServiceTest.DeleteWithClients
[       OK ] WindowServiceTest.DeleteWithClients (98 ms)
[----------] 1 test from WindowServiceTest (98 ms total)

[----------] 1 test from WindowTreeScheduleEmbedTest
[ RUN      ] WindowTreeScheduleEmbedTest.ScheduleEmbed
[260289:260296:0621/130327.550305:1733706612191:FATAL:gl_factory_ozone.cc(102)] Check failed: false. 
#0 0x7fd35981951c base::debug::StackTrace::StackTrace()
#1 0x7fd35976904b logging::LogMessage::~LogMessage()
#2 0x7fd354632ed8 gl::init::CreateOffscreenGLSurfaceWithFormat()
#3 0x7fd3546319ed gl::init::CreateOffscreenGLSurface()
#4 0x7fd35469c239 gpu::InProcessCommandBuffer::InitializeOnGpuThread()
#5 0x7fd3546a29d9 _ZN4base8internal7InvokerINS0_9BindStateIZN3gpu12_GLOBAL__N_118WrapTaskWithResultINS3_13ContextResultEEENS_12OnceCallbackIFvvEEENS7_IFT_vEEEPSA_PNS_13WaitableEventEEUlNS7_IFS6_vEEEPS6_SF_E_JSH_SI_SF_EEES8_E7RunOnceEPNS0_13BindStateBaseE
#6 0x7fd35974c045 base::debug::TaskAnnotator::RunTask()
#7 0x7fd3597758c9 base::internal::IncomingTaskQueue::RunTask()
#8 0x7fd35977925b base::MessageLoop::RunTask()
#9 0x7fd3597795ea base::MessageLoop::DeferOrRunPendingTask()
#10 0x7fd35977984c base::MessageLoop::DoWork()
#11 0x7fd35977bb46 base::MessagePumpDefault::Run()
#12 0x7fd359778c44 base::MessageLoop::Run()
#13 0x7fd3597ab5a9 base::RunLoop::Run()
#14 0x7fd3597e6f87 base::Thread::Run()
#15 0x7fd3597e74bd base::Thread::ThreadMain()
#16 0x7fd35982c65f base::(anonymous namespace)::ThreadFunc()
#17 0x7fd353ece494 start_thread
#18 0x7fd353702a8f clone

[260283:260288:0621/130327.573286:1733706635291:ERROR:kill_posix.cc(83)] Unable to terminate process group 260289: No such process (3)
[1/2] WindowServiceTest.DeleteWithClients (98 ms)
[2/2] WindowTreeScheduleEmbedTest.ScheduleEmbed (CRASHED)
1 test crashed:
    WindowTreeScheduleEmbedTest.ScheduleEmbed (../../services/ui/ws2/window_tree_unittest.cc:1077)
Tests took 1 seconds.

Here are the original failure logs when running the whole services_unittests executable with no filter:
(I'll file a separate bug for the flaky InProcessAudioService fixture failure)

[ RUN      ] InProcessAudioService/AudioSystemTestTemplate/1.GetInputDeviceDescriptionsNoInputDevices
[251093:251093:0621/130152.909208:1733611971077:FATAL:interface_endpoint_client.cc(170)] Check failed: (sequence_checker_).CalledOnValidSequence(). 
#0 0x7f188a0a751c base::debug::StackTrace::StackTrace()
#1 0x7f1889ff704b logging::LogMessage::~LogMessage()
#2 0x7f18896ddf94 mojo::InterfaceEndpointClient::~InterfaceEndpointClient()
#3 0x7f18896de09e mojo::InterfaceEndpointClient::~InterfaceEndpointClient()
#4 0x7f18896d6787 mojo::internal::BindingStateBase::Close()
#5 0x7f18888a367f service_manager::ServiceContext::QuitNow()
#6 0x00000075d851 audio::ServiceTestClient::AudioThreadContext::~AudioThreadContext()
#7 0x00000075d5b9 audio::ServiceTestClient::~ServiceTestClient()
#8 0x00000075d62e audio::ServiceTestClient::~ServiceTestClient()
#9 0x7f18888a3431 service_manager::ServiceContext::~ServiceContext()
#10 0x7f18888a345e service_manager::ServiceContext::~ServiceContext()
#11 0x00000075822e audio::InProcessServiceTest<>::TearDown()
#12 0x000000ac6f40 testing::TestInfo::Run()
#13 0x000000ac7457 testing::TestCase::Run()
#14 0x000000ad2a57 testing::internal::UnitTestImpl::RunAllTests()
#15 0x000000ad25cd testing::UnitTest::Run()
#16 0x000000ce5631 base::TestSuite::Run()
#17 0x000000cec730 base::(anonymous namespace)::LaunchUnitTestsInternal()
#18 0x000000cec590 base::LaunchUnitTests()
#19 0x000000cd4010 service_manager::InitializeAndLaunchUnitTests()
#20 0x000000a25819 main
#21 0x7f1883ec82b1 __libc_start_main
#22 0x0000004f17da _start

...

[ RUN      ] WindowServiceTest.DeleteWithClients
[252553:254017:0621/130155.662306:1733614724144:FATAL:gl_factory_ozone.cc(102)] Check failed: false. 
#0 0x7fb28b22c51c base::debug::StackTrace::StackTrace()
#1 0x7fb28b17c04b logging::LogMessage::~LogMessage()
#2 0x7fb286045ed8 gl::init::CreateOffscreenGLSurfaceWithFormat()
#3 0x7fb2860449ed gl::init::CreateOffscreenGLSurface()
#4 0x7fb2860af239 gpu::InProcessCommandBuffer::InitializeOnGpuThread()
#5 0x7fb2860b59d9 _ZN4base8internal7InvokerINS0_9BindStateIZN3gpu12_GLOBAL__N_118WrapTaskWithResultINS3_13ContextResultEEENS_12OnceCallbackIFvvEEENS7_IFT_vEEEPSA_PNS_13WaitableEventEEUlNS7_IFS6_vEEEPS6_SF_E_JSH_SI_SF_EEES8_E7RunOnceEPNS0_13BindStateBaseE
#6 0x7fb28b15f045 base::debug::TaskAnnotator::RunTask()
#7 0x7fb28b1888c9 base::internal::IncomingTaskQueue::RunTask()
#8 0x7fb28b18c25b base::MessageLoop::RunTask()
#9 0x7fb28b18c5ea base::MessageLoop::DeferOrRunPendingTask()
#10 0x7fb28b18c84c base::MessageLoop::DoWork()
#11 0x7fb28b18eb46 base::MessagePumpDefault::Run()
#12 0x7fb28b18bc44 base::MessageLoop::Run()
#13 0x7fb28b1be5a9 base::RunLoop::Run()
#14 0x7fb28b1f9f87 base::Thread::Run()
#15 0x7fb28b1fa4bd base::Thread::ThreadMain()
#16 0x7fb28b23f65f base::(anonymous namespace)::ThreadFunc()
#17 0x7fb2858e1494 start_thread
#18 0x7fb285115a8f clone

...

[ RUN      ] WindowTreeScheduleEmbedTest.ScheduleEmbed
[252909:254251:0621/130156.102604:1733615164431:FATAL:gl_factory_ozone.cc(102)] Check failed: false. 
#0 0x7f86b1f7051c base::debug::StackTrace::StackTrace()
#1 0x7f86b1ec004b logging::LogMessage::~LogMessage()
#2 0x7f86acd89ed8 gl::init::CreateOffscreenGLSurfaceWithFormat()
#3 0x7f86acd889ed gl::init::CreateOffscreenGLSurface()
#4 0x7f86acdf3239 gpu::InProcessCommandBuffer::InitializeOnGpuThread()
#5 0x7f86acdf99d9 _ZN4base8internal7InvokerINS0_9BindStateIZN3gpu12_GLOBAL__N_118WrapTaskWithResultINS3_13ContextResultEEENS_12OnceCallbackIFvvEEENS7_IFT_vEEEPSA_PNS_13WaitableEventEEUlNS7_IFS6_vEEEPS6_SF_E_JSH_SI_SF_EEES8_E7RunOnceEPNS0_13BindStateBaseE
#6 0x7f86b1ea3045 base::debug::TaskAnnotator::RunTask()
#7 0x7f86b1ecc8c9 base::internal::IncomingTaskQueue::RunTask()
#8 0x7f86b1ed025b base::MessageLoop::RunTask()
#9 0x7f86b1ed05ea base::MessageLoop::DeferOrRunPendingTask()
#10 0x7f86b1ed084c base::MessageLoop::DoWork()
#11 0x7f86b1ed2aca base::MessagePumpDefault::Run()
#12 0x7f86b1ecfc44 base::MessageLoop::Run()
#13 0x7f86b1f025a9 base::RunLoop::Run()
#14 0x7f86b1f3df87 base::Thread::Run()
#15 0x7f86b1f3e4bd base::Thread::ThreadMain()
#16 0x7f86b1f8365f base::(anonymous namespace)::ThreadFunc()
#17 0x7f86ac625494 start_thread
#18 0x7f86abe59a8f clone
 

Comment 1 by sky@chromium.org, Jun 22 2018

Cc: sadrul@chromium.org
This is triggered by the test doing:
base::RunLoop().RunUntilIdle()

That pumps all messages, including one that calls SingleThreadProxy::RequestNewLayerTreeFrameSink, which appears to wait for the command buffer:

#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007ffff7ca3dba in base::ConditionVariable::Wait (this=0x7fffffff6dd0) at ../../base/synchronization/condition_variable_posix.cc:71
#2  0x00007ffff7ca561c in base::WaitableEvent::TimedWaitUntil (this=0x7fffffff7088, end_time=106751991 days, 4:00:54.775807) at ../../base/synchronization/waitable\
_event_posix.cc:223
#3  0x00007ffff7ca52e3 in base::WaitableEvent::Wait (this=0x7fffffff7088) at ../../base/synchronization/waitable_event_posix.cc:154
#4  0x00007fffec498dc3 in gpu::InProcessCommandBuffer::Initialize (this=0x3a2ea1529b20, surface=scoped_refptr((gl::GLSurface *)0x0), is_offscreen=true, window=0, a\
ttribs=..., share_group=0x0, gpu_memory_buffer_manager=0x3a2ea31f97c8, image_factory=0x3a2ea31f9850, gpu_channel_manager_delegate=0x0, task_runner=scoped_refptr((b\
ase::SingleThreadTaskRunner *)0x0)) at ../../gpu/ipc/in_process_command_buffer.cc:307
#5  0x00007fffec491301 in gpu::(anonymous namespace)::GLInProcessContextImpl::Initialize (this=0x3a2ea30d1560, service=scoped_refptr((gpu::InProcessCommandBuffer::\
Service *)0x0), surface=scoped_refptr((gl::GLSurface *)0x0), is_offscreen=true, window=0, attribs=..., mem_limits=..., gpu_memory_buffer_manager=0x3a2ea31f97c8, im\
age_factory=0x3a2ea31f9850, gpu_channel_manager_delegate=0x0, task_runner=scoped_refptr((base::SingleThreadTaskRunner *)0x0)) at ../../gpu/ipc/gl_in_process_contex\
t.cc:138
#6  0x000000000265a45b in ui::InProcessContextProvider::BindToCurrentThread (this=0x3a2ea2d86020) at ../../ui/compositor/test/in_process_context_provider.cc:100
#7  0x000000000264e057 in ui::InProcessContextFactory::CreateLayerTreeFrameSink (this=0x3a2ea31f9720, compositor=base::WeakPtr((uintptr_t)63971954616480)) at ../..\
/ui/compositor/test/in_process_context_factory.cc:203
#8  0x00007fffeb6036f6 in ui::Compositor::RequestNewLayerTreeFrameSink (this=0x3a2ea1a168a0) at ../../ui/compositor/compositor.cc:604
#9  0x00007ffff1c090ca in cc::LayerTreeHost::RequestNewLayerTreeFrameSink (this=0x3a2ea0270020) at ../../cc/trees/layer_tree_host.cc:464
#10 0x00007ffff1d0ccd5 in cc::SingleThreadProxy::RequestNewLayerTreeFrameSink (this=0x3a2ea31d8500) at ../../cc/trees/single_thread_proxy.cc:122
#11 0x00007ffff1a3696f in base::internal::FunctorTraits<void (cc::ScrollbarAnimationController::*)(), void>::Invoke<void (cc::ScrollbarAnimationController::*)(), b\
ase::WeakPtr<cc::ScrollbarAnimationController> const&> (method=(void (cc::ScrollbarAnimationController::*)(cc::ScrollbarAnimationController * const)) 0x7ffff1d0cbf\
0 <cc::SingleThreadProxy::RequestNewLayerTreeFrameSink()>, receiver_ptr=<error reading variable: Cannot access memory at address 0xcdcdcdcdcdcdce0d>) at ../../base\
/bind_internal.h:507


The gpu thread then hits the DCHECK Mike mentioned above. No doubt we either aren't setting something up right, or we're not shutting something down we should. The common test setup code is here; https://chromium.googlesource.com/chromium/src/+/master/services/ui/ws2/window_service_test_setup.cc . I see a call to gl::GLSurfaceTestSupport::InitializeOneOff() in the constructor, but nothing similar in the destructor. I tried adding ShutdownGL(), but that triggered it's own DCHECK:
#0 0x7f7ec28c5e5d base::debug::StackTrace::StackTrace()
#1 0x7f7ec2615ccc base::debug::StackTrace::StackTrace()
#2 0x7f7ec267f6cd logging::LogMessage::~LogMessage()
#3 0x7f7eb71ead64 ui::OzonePlatform::GetInstance()
#4 0x7f7eb7026989 gl::init::GetSurfaceFactoryOzone()
#5 0x7f7eb7026c00 gl::init::HasGLOzone()
#6 0x7f7eb70269b0 gl::init::HasGLOzone()
#7 0x7f7eb70274b9 gl::init::ShutdownGLPlatform()
#8 0x7f7eb7023255 gl::init::ShutdownGL()
#9 0x000002632c00 ui::ws2::WindowServiceTestSetup::~WindowServiceTestSetup()
#10 0x000000d78a9f ui::ws2::WindowServiceTest_DeleteWithClients_Test::TestBody()
#11 0x000000a399de _ZN7testing8internal12InvokeHelperIvNSt3__15tupleIJEEEE12InvokeMethodIN4base7RunLoopEMS8_FvvEEEvPT_T0_RKS4_
#12 0x0000013d0782 testing::internal::HandleExceptionsInMethodIfSupported<>()
#13 0x0000013b4316 testing::Test::Run()
#14 0x0000013b4d00 testing::TestInfo::Run()
#15 0x0000013b57af testing::TestCase::Run()
#16 0x0000013c7958 testing::internal::UnitTestImpl::RunAllTests()
#17 0x0000013db4fe testing::internal::HandleSehExceptionsInMethodIfSupported<>()
#18 0x0000013d1ef2 testing::internal::HandleExceptionsInMethodIfSupported<>()
#19 0x0000013c75b7 testing::UnitTest::Run()
#20 0x000001f7b281 RUN_ALL_TESTS()
#21 0x000001f77cdb base::TestSuite::Run()
#22 0x00000106754d _ZN4base8internal13FunctorTraitsIMNS_9TestSuiteEFivEvE6InvokeIS4_PN12_GLOBAL__N_116ServiceTestSuiteEJEEEiT_OT0_DpOT1_
#23 0x000001067494 _ZN4base8internal12InvokeHelperILb0EiE8MakeItSoIRKMNS_9TestSuiteEFivEJPN12_GLOBAL__N_116ServiceTestSuiteEEEEiOT_DpOT0_
#24 0x000001067445 _ZN4base8internal7InvokerINS0_9BindStateIMNS_9TestSuiteEFivEJNS0_17UnretainedWrapperIN12_GLOBAL__N_116ServiceTestSuiteEEEEEEFivEE7RunImplIRKS5_R\
KNSt3__15tupleIJS9_EEEJLm0EEEEiOT_OT0_NSG_16integer_sequenceImJXspT1_EEEE
#25 0x00000106738c _ZN4base8internal7InvokerINS0_9BindStateIMNS_9TestSuiteEFivEJNS0_17UnretainedWrapperIN12_GLOBAL__N_116ServiceTestSuiteEEEEEEFivEE3RunEPNS0_13Bin\
dStateBaseE
#26 0x000001fa708e _ZNO4base12OnceCallbackIFivEE3RunEv
#27 0x000001f9ffa0 base::(anonymous namespace)::LaunchUnitTestsInternal()
#28 0x000001f9fe15 base::LaunchUnitTests()
#29 0x000001f1e2b0 service_manager::InitializeAndLaunchUnitTests()
#30 0x000001066eb3 main
#31 0x7f7eb4fe12b1 __libc_start_main
#32 0x00000054665a _start

Adding Sadrul as he may know what we might be tripping over.
Status: Assigned (was: Untriaged)
The test suite calls OzonePlatform::InitializeForGPU() once before any test cases run. At the start of each test case OzonePlatform::InitializeForUI() runs. When WindowTreeScheduleEmbedTest.ScheduleEmbed finishes it calls OzonePlatform::Shutdown() which destroys both the UI and GPU parts of OzonePlatform. When WindowTreeScheduleEmbedTest.ScheduleEmbed runs afterwards the GPU part of OzonePlatform doesn't exist which doesn't work. When the test reruns the test suite initialization runs again and the test passes.

Unfortunately the UI and GPU parts of OzonePlatform end up in the same object when InitializeForUI() and InitialieForGpu() are called in the same process. When OzonePlatform::Shutdown() was added this became a problem. I think some other test targets fixed this by not destroying aura::Env at the end of each test?

Comment 3 by msw@chromium.org, Jun 25 2018

Should individual test cases not be calling OzonePlatform::InitializeForUI()/Shutdown()?
It might be nice if all the ozone setup/teardown was handled by the test suite.
Cc: rjkroege@chromium.org kylec...@chromium.org jamescook@chromium.org
Owner: msw@chromium.org
Ideally yes I think the OzonePlatform object should only be created at test suite initialization and destroyed at test suite teardown so it only happens once. It's actually the tests creating/destroying aura::Env which indirectly create/destroy OzonePlatform so it might be more complicated?

OzonePlatform::Shutdown() was added in https://crrev.com/2795503002. jamescook/rjkroege likely have a better understanding of why it was required.
Hrm, I don't really remember, but I think I needed to create my own TestOzonePlatform to vend StubWindows:

https://codereview.chromium.org/2795503002/diff/160001/services/ui/ws/platform_display_default_unittest.cc

I'm guessing that since I subclassed OzonePlatform I needed to reset the singleton at the end of the test, so Shutdown() was a workaround for that.

I observed the same failure with WindowTreeTest2.PerformDragDrop running services_unittests:

[ RUN      ] WindowTreeTest2.PerformDragDrop
[129495:130578:0718/113733.793829:4061352855587:FATAL:gl_factory_ozone.cc(102)] Check failed: false. 
#0 0x7fd905c5a48c base::debug::StackTrace::StackTrace()
#1 0x7fd905b8d7bb logging::LogMessage::~LogMessage()
#2 0x7fd900a89f98 gl::init::CreateOffscreenGLSurfaceWithFormat()
#3 0x7fd900a88aad gl::init::CreateOffscreenGLSurface()
#4 0x7fd900ab287c gpu::InProcessCommandBuffer::InitializeOnGpuThread()
#5 0x7fd900ab9441 _ZN4base8internal7InvokerINS0_9BindStateIZN3gpu12_GLOBAL__N_118WrapTaskWithResultINS3_13ContextResultEEENS_12OnceCallbackIFvvEEENS7_IFT_vEEEPSA_PNS_13WaitableEventEEUlNS7_IFS6_vEEEPS6_SF_E_JSH_SI_SF_EEES8_E7RunOnceEPNS0_13BindStateBaseE
#6 0x7fd905b70a15 base::debug::TaskAnnotator::RunTask()
#7 0x7fd905b9d94a base::MessageLoop::RunTask()
#8 0x7fd905b9dcda base::MessageLoop::DeferOrRunPendingTask()
#9 0x7fd905b9dfd7 base::MessageLoop::DoWork()
#10 0x7fd905ba08f6 base::MessagePumpDefault::Run()
#11 0x7fd905b9d374 base::MessageLoop::Run()
#12 0x7fd905bcf319 base::RunLoop::Run()
#13 0x7fd905c26b47 base::Thread::Run()
#14 0x7fd905c2707d base::Thread::ThreadMain()
#15 0x7fd905c6d5cf base::(anonymous namespace)::ThreadFunc()
#16 0x7fd900274494 start_thread
#17 0x7fd8ffaa8a8f clone

[1426/1978] WindowTreeTest2.PerformDragDrop (CRASHED)
Project Member

Comment 7 by bugdroid1@chromium.org, Jul 21

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/13115867c7947651db1b67695352af94deb4f2ad

commit 13115867c7947651db1b67695352af94deb4f2ad
Author: Mike Wasserman <msw@chromium.org>
Date: Sat Jul 21 02:16:15 2018

services_unittests: remove OzonePlatform shutdown and redundant init.

Remove problematic OzonePlatform::Shutdown method.
(per-process gpu init was torn down with per-fixture aura::Env dtor)

Remove redundant run_all_service_tests GPU init of OzonePatform
(done as needed via WindowServiceTestSetup / GLSurfaceTestSupport)
Remove obsolete WindowTreeClientWmOzoneTest aura_unittests fixture.
Add some gl_factory_ozone.cc failure logging.

Bug:  855191 
Test: No regressions, no problems running services_unittests, etc.
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: If798b639e626738e3ba6d4c4a550cf3cc02c70ab
Reviewed-on: https://chromium-review.googlesource.com/1144186
Commit-Queue: Michael Wasserman <msw@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Reviewed-by: Michael Spang <spang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#577061}
[modify] https://crrev.com/13115867c7947651db1b67695352af94deb4f2ad/services/test/BUILD.gn
[modify] https://crrev.com/13115867c7947651db1b67695352af94deb4f2ad/services/test/run_all_service_tests.cc
[modify] https://crrev.com/13115867c7947651db1b67695352af94deb4f2ad/ui/aura/env.cc
[modify] https://crrev.com/13115867c7947651db1b67695352af94deb4f2ad/ui/aura/mus/window_tree_client_unittest.cc
[modify] https://crrev.com/13115867c7947651db1b67695352af94deb4f2ad/ui/gl/init/gl_factory_ozone.cc
[modify] https://crrev.com/13115867c7947651db1b67695352af94deb4f2ad/ui/ozone/public/ozone_platform.cc
[modify] https://crrev.com/13115867c7947651db1b67695352af94deb4f2ad/ui/ozone/public/ozone_platform.h

Status: Fixed (was: Assigned)
Should be fixed

Sign in to add a comment