Run browser_tests --mus on asan bot |
|||||
Issue description
It looks like we don't run browser_tests --mus on the asan bots. I accidentally turned this on the other day and my patch was reverted because the bot took too long. It looks like at least part of the problem is because of this leak:
Direct leak of 104 byte(s) in 1 object(s) allocated from:
#0 0x999c32 in operator new(unsigned long) /b/build/slave/linux_upload_clang/build/src/third_party/llvm/compiler-rt/lib/asan/asan_new_delete.cc:92:3
#1 0x11c122d0 in ui::BitmapCursorFactoryOzone::CreateAnimatedCursor(std::__1::vector<SkBitmap, std::__1::allocator<SkBitmap> > const&, gfx::Point const&, int, float) ui/base/cursor/ozone/bitmap_cursor_factory_ozone.cc:96:7
#2 0x15f605c5 in ui::ws::(anonymous namespace)::SetCustomCursorOnResourceThread(base::WeakPtr<ui::ImageCursors>, std::__1::unique_ptr<ui::CursorData, std::__1::default_delete<ui::CursorData> >, ui::CursorFactoryOzone*, ui::PlatformWindow*, scoped_refptr<base::SingleThreadTaskRunner>, base::WeakPtr<ui::ws::ThreadedImageCursors>) services/ui/ws/threaded_image_cursors.cc:94:58
#3 0x15f62bd2 in void base::internal::FunctorTraits<void (*)(base::WeakPtr<ui::ImageCursors>, std::__1::unique_ptr<ui::CursorData, std::__1::default_delete<ui::CursorData> >, ui::CursorFactoryOzone*, ui::PlatformWindow*, scoped_refptr<base::SingleThreadTaskRunner>, base::WeakPtr<ui::ws::ThreadedImageCursors>), void>::Invoke<base::WeakPtr<ui::ImageCursors> const&, std::__1::unique_ptr<ui::CursorData, std::__1::default_delete<ui::CursorData> >, ui::CursorFactoryOzone*, ui::PlatformWindow* const&, scoped_refptr<base::SingleThreadTaskRunner> const&, base::WeakPtr<ui::ws::ThreadedImageCursors> const&>(void (*)(base::WeakPtr<ui::ImageCursors>, std::__1::unique_ptr<ui::CursorData, std::__1::default_delete<ui::CursorData> >, ui::CursorFactoryOzone*, ui::PlatformWindow*, scoped_refptr<base::SingleThreadTaskRunner>, base::WeakPtr<ui::ws::ThreadedImageCursors>), base::WeakPtr<ui::ImageCursors> const&, std::__1::unique_ptr<ui::CursorData, std::__1::default_delete<ui::CursorData> >&&, ui::CursorFactoryOzone*&&, ui::PlatformWindow* const&, scoped_refptr<base::SingleThreadTaskRunner> const&, base::WeakPtr<ui::ws::ThreadedImageCursors> const&) base/bind_internal.h:166:12
#4 0x15f6288c in MakeItSo<void (*const &)(base::WeakPtr<ui::ImageCursors>, std::__1::unique_ptr<ui::CursorData, std::__1::default_delete<ui::CursorData> >, ui::CursorFactoryOzone *, ui::PlatformWindow *, scoped_refptr<base::SingleThreadTaskRunner>, base::WeakPtr<ui::ws::ThreadedImageCursors>), const base::WeakPtr<ui::ImageCursors> &, std::__1::unique_ptr<ui::CursorData, std::__1::default_delete<ui::CursorData> >, ui::CursorFactoryOzone *, ui::PlatformWindow *const &, const scoped_refptr<base::SingleThreadTaskRunner> &, const base::WeakPtr<ui::ws::ThreadedImageCursors> &> base/bind_internal.h:294:12
#5 0x15f6288c in RunImpl<void (*const &)(base::WeakPtr<ui::ImageCursors>, std::__1::unique_ptr<ui::CursorData, std::__1::default_delete<ui::CursorData> >, ui::CursorFactoryOzone *, ui::PlatformWindow *, scoped_refptr<base::SingleThreadTaskRunner>, base::WeakPtr<ui::ws::ThreadedImageCursors>), const std::__1::tuple<base::WeakPtr<ui::ImageCursors>, base::internal::PassedWrapper<std::__1::unique_ptr<ui::CursorData, std::__1::default_delete<ui::CursorData> > >, base::internal::UnretainedWrapper<ui::CursorFactoryOzone>, ui::PlatformWindow *, scoped_refptr<base::SingleThreadTaskRunner>, base::WeakPtr<ui::ws::ThreadedImageCursors> > &, 0, 1, 2, 3, 4, 5> base/bind_internal.h:368
#6 0x15f6288c in base::internal::Invoker<base::internal::BindState<void (*)(base::WeakPtr<ui::ImageCursors>, std::__1::unique_ptr<ui::CursorData, std::__1::default_delete<ui::CursorData> >, ui::CursorFactoryOzone*, ui::PlatformWindow*, scoped_refptr<base::SingleThreadTaskRunner>, base::WeakPtr<ui::ws::ThreadedImageCursors>), base::WeakPtr<ui::ImageCursors>, base::internal::PassedWrapper<std::__1::unique_ptr<ui::CursorData, std::__1::default_delete<ui::CursorData> > >, base::internal::UnretainedWrapper<ui::CursorFactoryOzone>, ui::PlatformWindow*, scoped_refptr<base::SingleThreadTaskRunner>, base::WeakPtr<ui::ws::ThreadedImageCursors> >, void ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:350
#7 0xdbad5c2 in Run base/callback.h:65:12
#8 0xdbad5c2 in base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) base/debug/task_annotator.cc:55
#9 0xde39270 in base::internal::IncomingTaskQueue::RunTask(base::PendingTask*) base/message_loop/incoming_task_queue.cc:123:19
#10 0xdc26b0c in base::MessageLoop::RunTask(base::PendingTask*) base/message_loop/message_loop.cc:394:25
#11 0xdc276d8 in base::MessageLoop::DeferOrRunPendingTask(base::PendingTask) base/message_loop/message_loop.cc:406:5
#12 0xdc28030 in base::MessageLoop::DoWork() base/message_loop/message_loop.cc:450:16
#13 0xdc2ff60 in base::MessagePumpLibevent::Run(base::MessagePump::Delegate*) base/message_loop/message_pump_libevent.cc:220:31
#14 0xdc254d7 in base::MessageLoop::Run(bool) base/message_loop/message_loop.cc:345:12
#15 0xdcc3ccd in base::RunLoop::Run() base/run_loop.cc:130:14
#16 0xf429112 in RunThisRunLoop content/public/test/test_utils.cc:125:13
#17 0xf429112 in content::RunAllPendingInMessageLoop() content/public/test/test_utils.cc:133
#18 0xdf11d8a in InProcessBrowserTest::PreRunTestOnMainThread() chrome/test/base/in_process_browser_test.cc:528:3
#19 0xf306aae in content::BrowserTestBase::ProxyRunTestOnMainThreadLoop() content/public/test/browser_test_base.cc:335:5
#20 0xe012c57 in Run base/callback.h:94:12
#21 0xe012c57 in ChromeBrowserMainParts::PreMainMessageLoopRunImpl() chrome/browser/chrome_browser_main.cc:1898
#22 0xe00fd15 in ChromeBrowserMainParts::PreMainMessageLoopRun() chrome/browser/chrome_browser_main.cc:1218:18
#23 0x4b6fbfc in chromeos::ChromeBrowserMainPartsChromeos::PreMainMessageLoopRun() chrome/browser/chromeos/chrome_browser_main_chromeos.cc:764:32
#24 0x8068257 in content::BrowserMainLoop::PreMainMessageLoopRun() content/browser/browser_main_loop.cc:1177:13
#25 0x9108b77 in Run base/callback.h:94:12
#26 0x9108b77 in content::StartupTaskRunner::RunAllTasksNow() content/browser/startup_task_runner.cc:45
#27 0x8062fdd in content::BrowserMainLoop::CreateStartupTasks() content/browser/browser_main_loop.cc:961:25
#28 0x8072473 in content::BrowserMainRunnerImpl::Initialize(content::MainFunctionParams const&) content/browser/browser_main_runner.cc:119:17
#29 0x805c03f in content::BrowserMain(content::MainFunctionParams const&) content/browser/browser_main.cc:42:32
#30 0xd8f194e in content::RunNamedProcessTypeMain(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, content::MainFunctionParams const&, content::ContentMainDelegate*) content/app/content_main_runner.cc:427:14
#31 0xd8f3c2a in content::ContentMainRunnerImpl::Run() content/app/content_main_runner.cc:723:12
#32 0x14d14795 in service_manager::Main(service_manager::MainParams const&) services/service_manager/embedder/main.cc:456:29
#33 0xd8efcfb in content::ContentMain(content::ContentMainParams const&) content/app/content_main.cc:19:10
#34 0xf30599e in content::BrowserTestBase::SetUp() content/public/test/browser_test_base.cc:301:3
#35 0xdf0d1ef in InProcessBrowserTest::SetUp() chrome/test/base/in_process_browser_test.cc:263:20
Indirect leak of 56 byte(s) in 1 object(s) allocated from:
#0 0x999c32 in operator new(unsigned long) /b/build/slave/linux_upload_clang/build/src/third_party/llvm/compiler-rt/lib/asan/asan_new_delete.cc:92:3
#1 0x5cfdab6 in __allocate buildtools/third_party/libc++/trunk/include/new:226:10
#2 0x5cfdab6 in allocate buildtools/third_party/libc++/trunk/include/memory:1747
#3 0x5cfdab6 in allocate buildtools/third_party/libc++/trunk/include/memory:1502
#4 0x5cfdab6 in allocate buildtools/third_party/libc++/trunk/include/vector:937
#5 0x5cfdab6 in std::__1::vector<SkBitmap, std::__1::allocator<SkBitmap> >::vector(std::__1::vector<SkBitmap, std::__1::allocator<SkBitmap> > const&) buildtools/third_party/libc++/trunk/include/vector:1212
#6 0x11c1081d in ui::BitmapCursorOzone::BitmapCursorOzone(std::__1::vector<SkBitmap, std::__1::allocator<SkBitmap> > const&, gfx::Point const&, int) ui/base/cursor/ozone/bitmap_cursor_factory_ozone.cc:42:7
#7 0x11c122e5 in ui::BitmapCursorFactoryOzone::CreateAnimatedCursor(std::__1::vector<SkBitmap, std::__1::allocator<SkBitmap> > const&, gfx::Point const&, int, float) ui/base/cursor/ozone/bitmap_cursor_factory_ozone.cc:96:11
#8 0x15f605c5 in ui::ws::(anonymous namespace)::SetCustomCursorOnResourceThread(base::WeakPtr<ui::ImageCursors>, std::__1::unique_ptr<ui::CursorData, std::__1::default_delete<ui::CursorData> >, ui::CursorFactoryOzone*, ui::PlatformWindow*, scoped_refptr<base::SingleThreadTaskRunner>, base::WeakPtr<ui::ws::ThreadedImageCursors>) services/ui/ws/threaded_image_cursors.cc:94:58
#9 0x15f62bd2 in void base::internal::FunctorTraits<void (*)(base::WeakPtr<ui::ImageCursors>, std::__1::unique_ptr<ui::CursorData, std::__1::default_delete<ui::CursorData> >, ui::CursorFactoryOzone*, ui::PlatformWindow*, scoped_refptr<base::SingleThreadTaskRunner>, base::WeakPtr<ui::ws::ThreadedImageCursors>), void>::Invoke<base::WeakPtr<ui::ImageCursors> const&, std::__1::unique_ptr<ui::CursorData, std::__1::default_delete<ui::CursorData> >, ui::CursorFactoryOzone*, ui::PlatformWindow* const&, scoped_refptr<base::SingleThreadTaskRunner> const&, base::WeakPtr<ui::ws::ThreadedImageCursors> const&>(void (*)(base::WeakPtr<ui::ImageCursors>, std::__1::unique_ptr<ui::CursorData, std::__1::default_delete<ui::CursorData> >, ui::CursorFactoryOzone*, ui::PlatformWindow*, scoped_refptr<base::SingleThreadTaskRunner>, base::WeakPtr<ui::ws::ThreadedImageCursors>), base::WeakPtr<ui::ImageCursors> const&, std::__1::unique_ptr<ui::CursorData, std::__1::default_delete<ui::CursorData> >&&, ui::CursorFactoryOzone*&&, ui::PlatformWindow* const&, scoped_refptr<base::SingleThreadTaskRunner> const&, base::WeakPtr<ui::ws::ThreadedImageCursors> const&) base/bind_internal.h:166:12
#10 0x15f6288c in MakeItSo<void (*const &)(base::WeakPtr<ui::ImageCursors>, std::__1::unique_ptr<ui::CursorData, std::__1::default_delete<ui::CursorData> >, ui::CursorFactoryOzone *, ui::PlatformWindow *, scoped_refptr<base::SingleThreadTaskRunner>, base::WeakPtr<ui::ws::ThreadedImageCursors>), const base::WeakPtr<ui::ImageCursors> &, std::__1::unique_ptr<ui::CursorData, std::__1::default_delete<ui::CursorData> >, ui::CursorFactoryOzone *, ui::PlatformWindow *const &, const scoped_refptr<base::SingleThreadTaskRunner> &, const base::WeakPtr<ui::ws::ThreadedImageCursors> &> base/bind_internal.h:294:12
#11 0x15f6288c in RunImpl<void (*const &)(base::WeakPtr<ui::ImageCursors>, std::__1::unique_ptr<ui::CursorData, std::__1::default_delete<ui::CursorData> >, ui::CursorFactoryOzone *, ui::PlatformWindow *, scoped_refptr<base::SingleThreadTaskRunner>, base::WeakPtr<ui::ws::ThreadedImageCursors>), const std::__1::tuple<base::WeakPtr<ui::ImageCursors>, base::internal::PassedWrapper<std::__1::unique_ptr<ui::CursorData, std::__1::default_delete<ui::CursorData> > >, base::internal::UnretainedWrapper<ui::CursorFactoryOzone>, ui::PlatformWindow *, scoped_refptr<base::SingleThreadTaskRunner>, base::WeakPtr<ui::ws::ThreadedImageCursors> > &, 0, 1, 2, 3, 4, 5> base/bind_internal.h:368
#12 0x15f6288c in base::internal::Invoker<base::internal::BindState<void (*)(base::WeakPtr<ui::ImageCursors>, std::__1::unique_ptr<ui::CursorData, std::__1::default_delete<ui::CursorData> >, ui::CursorFactoryOzone*, ui::PlatformWindow*, scoped_refptr<base::SingleThreadTaskRunner>, base::WeakPtr<ui::ws::ThreadedImageCursors>), base::WeakPtr<ui::ImageCursors>, base::internal::PassedWrapper<std::__1::unique_ptr<ui::CursorData, std::__1::default_delete<ui::CursorData> > >, base::internal::UnretainedWrapper<ui::CursorFactoryOzone>, ui::PlatformWindow*, scoped_refptr<base::SingleThreadTaskRunner>, base::WeakPtr<ui::ws::ThreadedImageCursors> >, void ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:350
#13 0xdbad5c2 in Run base/callback.h:65:12
#14 0xdbad5c2 in base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) base/debug/task_annotator.cc:55
#15 0xde39270 in base::internal::IncomingTaskQueue::RunTask(base::PendingTask*) base/message_loop/incoming_task_queue.cc:123:19
#16 0xdc26b0c in base::MessageLoop::RunTask(base::PendingTask*) base/message_loop/message_loop.cc:394:25
#17 0xdc276d8 in base::MessageLoop::DeferOrRunPendingTask(base::PendingTask) base/message_loop/message_loop.cc:406:5
#18 0xdc28030 in base::MessageLoop::DoWork() base/message_loop/message_loop.cc:450:16
#19 0xdc2ff60 in base::MessagePumpLibevent::Run(base::MessagePump::Delegate*) base/message_loop/message_pump_libevent.cc:220:31
#20 0xdc254d7 in base::MessageLoop::Run(bool) base/message_loop/message_loop.cc:345:12
#21 0xdcc3ccd in base::RunLoop::Run() base/run_loop.cc:130:14
#22 0xf429112 in RunThisRunLoop content/public/test/test_utils.cc:125:13
#23 0xf429112 in content::RunAllPendingInMessageLoop() content/public/test/test_utils.cc:133
#24 0xdf11d8a in InProcessBrowserTest::PreRunTestOnMainThread() chrome/test/base/in_process_browser_test.cc:528:3
#25 0xf306aae in content::BrowserTestBase::ProxyRunTestOnMainThreadLoop() content/public/test/browser_test_base.cc:335:5
#26 0xe012c57 in Run base/callback.h:94:12
#27 0xe012c57 in ChromeBrowserMainParts::PreMainMessageLoopRunImpl() chrome/browser/chrome_browser_main.cc:1898
#28 0xe00fd15 in ChromeBrowserMainParts::PreMainMessageLoopRun() chrome/browser/chrome_browser_main.cc:1218:18
#29 0x4b6fbfc in chromeos::ChromeBrowserMainPartsChromeos::PreMainMessageLoopRun() chrome/browser/chromeos/chrome_browser_main_chromeos.cc:764:32
#30 0x8068257 in content::BrowserMainLoop::PreMainMessageLoopRun() content/browser/browser_main_loop.cc:1177:13
#31 0x9108b77 in Run base/callback.h:94:12
#32 0x9108b77 in content::StartupTaskRunner::RunAllTasksNow() content/browser/startup_task_runner.cc:45
#33 0x8062fdd in content::BrowserMainLoop::CreateStartupTasks() content/browser/browser_main_loop.cc:961:25
#34 0x8072473 in content::BrowserMainRunnerImpl::Initialize(content::MainFunctionParams const&) content/browser/browser_main_runner.cc:119:17
#35 0x805c03f in content::BrowserMain(content::MainFunctionParams const&) content/browser/browser_main.cc:42:32
#36 0xd8f194e in content::RunNamedProcessTypeMain(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, content::MainFunctionParams const&, content::ContentMainDelegate*) content/app/content_main_runner.cc:427:14
#37 0xd8f3c2a in content::ContentMainRunnerImpl::Run() content/app/content_main_runner.cc:723:12
#38 0x14d14795 in service_manager::Main(service_manager::MainParams const&) services/service_manager/embedder/main.cc:456:29
#39 0xd8efcfb in content::ContentMain(content::ContentMainParams const&) content/app/content_main.cc:19:10
-----------------------------------------------------
Full output is here: https://chromium-swarm.appspot.com/task?id=3ae15d57042d8810&refresh=10&show_raw=1&wide_logs=true
,
Jan 11 2018
,
Jan 12 2018
Elliot, could you also looking into making the asan bots run browser_tests --mus? I believe it won't run because of this: https://chromium.googlesource.com/chromium/src/+/master/testing/buildbot/test_suite_exceptions.pyl#2599 . If you remove that dictionary and testing/buildbot/generate_buildbot_json.py then then asan bots should run browser_tests --mus (I hope).
,
Jan 16 2018
There's a few things wrong here: - A bunch of the tests now just timeout when run with browser_tests --mus. I'm currently doing some experiments with increasing the timeout to see whether this is just a simple increase the number fix. - There is at least one real segfault...I think. The mojoified cloud print crashes inside --mus consistently/non-flakily.
,
Jan 17 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/7f73a4cda31fd4aeeb99f51eb7356a078f8db968 commit 7f73a4cda31fd4aeeb99f51eb7356a078f8db968 Author: Elliot Glaysher <erg@chromium.org> Date: Wed Jan 17 06:14:15 2018 Revert "Ensure PlatfromCursors are passed inside scoped_refptr<>." This reverts commit 1a452f42f0c1f2e41e7a1f870412511e87cdc1da. Reason for revert: This is probably responsible for the crash that sky@ and msw@ are seeing. Original change's description: > Ensure PlatfromCursors are passed inside scoped_refptr<>. > > In ThreadedImageCursors, bitmap cursors are created on a different > thread. They are then passed back to the main thread through > PostTask(). However, the entire system passes these objects as void* > pointers under ozone. While the objects are RefCounted<>, they weren't > being passed in a scoped_refptr<>, so if the task runner didn't run a > task (such as during shutdown), we'd leak bitmaps. > > This does the necessary work to ensure we put the ownership of the > object inside a scoped_reptr<> while passing over the thread boundary > and then restores the object to manual refcounting on the receiving > thread. > > Bug: 800219 > Change-Id: I80194d123f436c82b5e6704529869b6310e9b787 > Reviewed-on: https://chromium-review.googlesource.com/861222 > Reviewed-by: Scott Violet <sky@chromium.org> > Commit-Queue: Elliot Glaysher <erg@chromium.org> > Cr-Commit-Position: refs/heads/master@{#528773} TBR=sky@chromium.org,erg@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: 800219 Change-Id: I441980cf73d19bb88aad0c74a83551ede0396682 Reviewed-on: https://chromium-review.googlesource.com/868956 Reviewed-by: Elliot Glaysher <erg@chromium.org> Commit-Queue: Elliot Glaysher <erg@chromium.org> Cr-Commit-Position: refs/heads/master@{#529650} [modify] https://crrev.com/7f73a4cda31fd4aeeb99f51eb7356a078f8db968/services/ui/ws/threaded_image_cursors.cc [modify] https://crrev.com/7f73a4cda31fd4aeeb99f51eb7356a078f8db968/services/ui/ws/threaded_image_cursors.h
,
Jan 18 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a8095a7eeb8d9d342e4dd452c206146a201778e2 commit a8095a7eeb8d9d342e4dd452c206146a201778e2 Author: Elliot Glaysher <erg@chromium.org> Date: Thu Jan 18 01:23:17 2018 Remove 'hard_timeout' from 'mus_browser_tests'. This removes a hard timeout which doesn't exist in the parallel browser_tests definition. After this, mus_browser_tests in asan fails due to three tests instead of consistently timing out on every shard in every run. Bug: 800219 Change-Id: I4bde247363c7aadef83c4c675031d68b981148aa Reviewed-on: https://chromium-review.googlesource.com/872118 Reviewed-by: Scott Violet <sky@chromium.org> Commit-Queue: Elliot Glaysher <erg@chromium.org> Cr-Commit-Position: refs/heads/master@{#529997} [modify] https://crrev.com/a8095a7eeb8d9d342e4dd452c206146a201778e2/testing/buildbot/chromium.chromiumos.json [modify] https://crrev.com/a8095a7eeb8d9d342e4dd452c206146a201778e2/testing/buildbot/chromium.fyi.json [modify] https://crrev.com/a8095a7eeb8d9d342e4dd452c206146a201778e2/testing/buildbot/test_suites.pyl
,
Jan 18 2018
After #6 landed, we consistently complete running the mus_browser_tests under asan. We consistently have only three test failures: - AppListTest.ClickingContextMenuDoesNotDismiss - ChromeScreenshotGrabberBrowserTest.TakeScreenshot - ArcAppDeferredLauncherBrowserTest.StartAppDeferredFromShelfButton All three of these test failures are the leak in the OP of this bug. However, I'm unable to repro these locally...
,
Jan 20 2018
I suspect that my original diagnosis was wrong. I thought that the problem was the reference counting during the transfer of the PlatformCursor from the resource loading thread to the ui thread, as the refcount code wasn't obviously correct. However, I just did an experiment with logging on whether all objects sent from the resource thread make it to the ui thread...and they do. This is some sort of reference counting problem in PlatformWindow or similar.
,
Jan 22 2018
Might it be there were trying to use the PlatformWindow from multiple threads, which makes the ref-count racy?
,
Jan 24 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/cb2ac1ed2fdcd951362067cac957ebf4a852a86c commit cb2ac1ed2fdcd951362067cac957ebf4a852a86c Author: Elliot Glaysher <erg@chromium.org> Date: Wed Jan 24 22:17:36 2018 Fix cursor lifetime and turn on mus browser tests on the bots. Previous attempts at trying to fix the cursor lifetime issue assumed that it was related to ownership while passing refcounted objects across thread boundaries. This patch, instead, frees the passed cursor depending on how it was created. Bug: 800219 Change-Id: Iaee3748716b155dfd180923712838870cfb21c47 Reviewed-on: https://chromium-review.googlesource.com/864833 Reviewed-by: Scott Violet <sky@chromium.org> Commit-Queue: Elliot Glaysher <erg@chromium.org> Cr-Commit-Position: refs/heads/master@{#531711} [modify] https://crrev.com/cb2ac1ed2fdcd951362067cac957ebf4a852a86c/services/ui/ws/threaded_image_cursors.cc [modify] https://crrev.com/cb2ac1ed2fdcd951362067cac957ebf4a852a86c/services/ui/ws/threaded_image_cursors.h [modify] https://crrev.com/cb2ac1ed2fdcd951362067cac957ebf4a852a86c/testing/buildbot/chromium.memory.json [modify] https://crrev.com/cb2ac1ed2fdcd951362067cac957ebf4a852a86c/testing/buildbot/test_suite_exceptions.pyl
,
Jan 24 2018
This should be fixed for real this time. The tests are on, and the one leak was fixed. |
|||||
►
Sign in to add a comment |
|||||
Comment 1 by bugdroid1@chromium.org
, Jan 11 2018