New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 800219 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Jan 2018
Cc:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug

Blocking:
issue 731255



Sign in to add a comment

Run browser_tests --mus on asan bot

Project Member Reported by sky@chromium.org, Jan 9 2018

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
 
Project Member

Comment 1 by bugdroid1@chromium.org, Jan 11 2018

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

commit 1a452f42f0c1f2e41e7a1f870412511e87cdc1da
Author: Elliot Glaysher <erg@chromium.org>
Date: Thu Jan 11 22:12:59 2018

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}
[modify] https://crrev.com/1a452f42f0c1f2e41e7a1f870412511e87cdc1da/services/ui/ws/threaded_image_cursors.cc
[modify] https://crrev.com/1a452f42f0c1f2e41e7a1f870412511e87cdc1da/services/ui/ws/threaded_image_cursors.h

Comment 2 by e...@chromium.org, Jan 11 2018

Status: Fixed (was: Assigned)

Comment 3 by sky@chromium.org, Jan 12 2018

Status: Started (was: Fixed)
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).

Comment 4 by e...@chromium.org, 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.
Project Member

Comment 5 by bugdroid1@chromium.org, 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

Project Member

Comment 6 by bugdroid1@chromium.org, 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

Comment 7 by e...@chromium.org, 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...

Comment 8 by e...@chromium.org, 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.

Comment 9 by sky@chromium.org, Jan 22 2018

Cc: sadrul@chromium.org
Might it be there were trying to use the PlatformWindow from multiple threads, which makes the ref-count racy?
Project Member

Comment 10 by bugdroid1@chromium.org, 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

Comment 11 by e...@chromium.org, Jan 24 2018

Status: Fixed (was: Started)
This should be fixed for real this time. The tests are on, and the one leak was fixed.

Sign in to add a comment