New issue
Advanced search Search tips

Issue 714209 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: May 2017
Cc:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 2
Type: Bug



Sign in to add a comment

FATAL:resource_bundle_mac.mm(93)] Check failed: sequence_checker_.CalledOnValidSequence().

Project Member Reported by zea@chromium.org, Apr 21 2017

Issue description

Hitting this DCHECK immediately after signin in to the browser while running ToT (r466387) on Mac.

[57455:33795:0421/112202.565480:FATAL:resource_bundle_mac.mm(93)] Check failed: sequence_checker_.CalledOnValidSequence(). 
0   libbase.dylib                       0x0000000107bd9f7e base::debug::StackTrace::StackTrace(unsigned long) + 174
1   libbase.dylib                       0x0000000107bda01d base::debug::StackTrace::StackTrace(unsigned long) + 29
2   libbase.dylib                       0x0000000107bd84ac base::debug::StackTrace::StackTrace() + 28
3   libbase.dylib                       0x0000000107c76def logging::LogMessage::~LogMessage() + 479
4   libbase.dylib                       0x0000000107c74765 logging::LogMessage::~LogMessage() + 21
5   libui_base.dylib                    0x000000010d7247b5 ui::ResourceBundle::GetNativeImageNamed(int) + 261
6   libchrome_dll.dylib                 0x000000011555a0a2 (anonymous namespace)::ImageRepForResource(int) + 50
7   libchrome_dll.dylib                 0x0000000115550d80 (anonymous namespace)::UpdateAppShortcutsSubdirLocalizedName(base::FilePath const&) + 1072
8   libchrome_dll.dylib                 0x000000011554fe88 web_app::WebAppShortcutCreator::CreateShortcuts(web_app::ShortcutCreationReason, web_app::ShortcutLocations) + 696
9   libchrome_dll.dylib                 0x0000000115557ac1 web_app::internals::CreatePlatformShortcuts(base::FilePath const&, web_app::ShortcutInfo const&, web_app::ShortcutLocations const&, web_app::ShortcutCreationReason) + 609
10  libchrome_dll.dylib                 0x00000001155458f0 bool base::internal::FunctorTraits<bool (*)(base::FilePath const&, web_app::ShortcutInfo const&, web_app::ShortcutLocations const&, web_app::ShortcutCreationReason), void>::Invoke<base::FilePath const&, web_app::ShortcutInfo const&, web_app::ShortcutLocations const&, web_app::ShortcutCreationReason const&>(bool (*)(base::FilePath const&, web_app::ShortcutInfo const&, web_app::ShortcutLocations const&, web_app::ShortcutCreationReason), base::FilePath const&&&, web_app::ShortcutInfo const&&&, web_app::ShortcutLocations const&&&, web_app::ShortcutCreationReason const&&&) + 96
11  libchrome_dll.dylib                 0x0000000115545880 void base::internal::FunctorTraits<base::internal::IgnoreResultHelper<bool (*)(base::FilePath const&, web_app::ShortcutInfo const&, web_app::ShortcutLocations const&, web_app::ShortcutCreationReason)>, void>::Invoke<base::internal::IgnoreResultHelper<bool (*)(base::FilePath const&, web_app::ShortcutInfo const&, web_app::ShortcutLocations const&, web_app::ShortcutCreationReason)> const&, base::FilePath const&, web_app::ShortcutInfo const&, web_app::ShortcutLocations const&, web_app::ShortcutCreationReason const&>(base::internal::IgnoreResultHelper<bool (*)(base::FilePath const&, web_app::ShortcutInfo const&, web_app::ShortcutLocations const&, web_app::ShortcutCreationReason)> const&&&, base::FilePath const&&&, web_app::ShortcutInfo const&&&, web_app::ShortcutLocations const&&&, web_app::ShortcutCreationReason const&&&) + 96
12  libchrome_dll.dylib                 0x000000011554577d void base::internal::InvokeHelper<false, void>::MakeItSo<base::internal::IgnoreResultHelper<bool (*)(base::FilePath const&, web_app::ShortcutInfo const&, web_app::ShortcutLocations const&, web_app::ShortcutCreationReason)> const&, base::FilePath const&, web_app::ShortcutInfo const&, web_app::ShortcutLocations const&, web_app::ShortcutCreationReason const&>(base::internal::IgnoreResultHelper<bool (*)(base::FilePath const&, web_app::ShortcutInfo const&, web_app::ShortcutLocations const&, web_app::ShortcutCreationReason)> const&&&, base::FilePath const&&&, web_app::ShortcutInfo const&&&, web_app::ShortcutLocations const&&&, web_app::ShortcutCreationReason const&&&) + 93
13  libchrome_dll.dylib                 0x0000000115545712 void base::internal::Invoker<base::internal::BindState<base::internal::IgnoreResultHelper<bool (*)(base::FilePath const&, web_app::ShortcutInfo const&, web_app::ShortcutLocations const&, web_app::ShortcutCreationReason)>, base::FilePath, base::internal::ConstRefWrapper<web_app::ShortcutInfo>, web_app::ShortcutLocations, web_app::ShortcutCreationReason>, void ()>::RunImpl<base::internal::IgnoreResultHelper<bool (*)(base::FilePath const&, web_app::ShortcutInfo const&, web_app::ShortcutLocations const&, web_app::ShortcutCreationReason)> const&, std::__1::tuple<base::FilePath, base::internal::ConstRefWrapper<web_app::ShortcutInfo>, web_app::ShortcutLocations, web_app::ShortcutCreationReason> const&, 0ul, 1ul, 2ul, 3ul>(base::internal::IgnoreResultHelper<bool (*)(base::FilePath const&, web_app::ShortcutInfo const&, web_app::ShortcutLocations const&, web_app::ShortcutCreationReason)> const&&&, std::__1::tuple<base::FilePath, base::internal::ConstRefWrapper<web_app::ShortcutInfo>, web_app::ShortcutLocations, web_app::ShortcutCreationReason> const&&&, base::IndexSequence<0ul, 1ul, 2ul, 3ul>) + 242
14  libchrome_dll.dylib                 0x000000011554558c base::internal::Invoker<base::internal::BindState<base::internal::IgnoreResultHelper<bool (*)(base::FilePath const&, web_app::ShortcutInfo const&, web_app::ShortcutLocations const&, web_app::ShortcutCreationReason)>, base::FilePath, base::internal::ConstRefWrapper<web_app::ShortcutInfo>, web_app::ShortcutLocations, web_app::ShortcutCreationReason>, void ()>::Run(base::internal::BindStateBase*) + 44
15  libbase.dylib                       0x0000000107bdc77f base::Callback<void (), (base::internal::CopyMode)0, (base::internal::RepeatMode)0>::Run() + 95
16  libbase.dylib                       0x0000000107e88fb6 base::(anonymous namespace)::PostTaskAndReplyRelay::RunTaskAndPostReply() + 54
17  libbase.dylib                       0x0000000107e89715 void base::internal::FunctorTraits<void (base::(anonymous namespace)::PostTaskAndReplyRelay::*)(), void>::Invoke<base::(anonymous namespace)::PostTaskAndReplyRelay*>(void (base::(anonymous namespace)::PostTaskAndReplyRelay::*)(), base::(anonymous namespace)::PostTaskAndReplyRelay*&&) + 133
18  libbase.dylib                       0x0000000107e89654 void base::internal::InvokeHelper<false, void>::MakeItSo<void (base::(anonymous namespace)::PostTaskAndReplyRelay::*)(), base::(anonymous namespace)::PostTaskAndReplyRelay*>(void (base::(anonymous namespace)::PostTaskAndReplyRelay::*&&)(), base::(anonymous namespace)::PostTaskAndReplyRelay*&&) + 68
19  libbase.dylib                       0x0000000107e895e3 void base::internal::Invoker<base::internal::BindState<void (base::(anonymous namespace)::PostTaskAndReplyRelay::*)(), base::internal::UnretainedWrapper<base::(anonymous namespace)::PostTaskAndReplyRelay> >, void ()>::RunImpl<void (base::(anonymous namespace)::PostTaskAndReplyRelay::*)(), std::__1::tuple<base::internal::UnretainedWrapper<base::(anonymous namespace)::PostTaskAndReplyRelay> >, 0ul>(void (base::(anonymous namespace)::PostTaskAndReplyRelay::*&&)(), std::__1::tuple<base::internal::UnretainedWrapper<base::(anonymous namespace)::PostTaskAndReplyRelay> >&&, base::IndexSequence<0ul>) + 99
20  libbase.dylib                       0x0000000107e89529 base::internal::Invoker<base::internal::BindState<void (base::(anonymous namespace)::PostTaskAndReplyRelay::*)(), base::internal::UnretainedWrapper<base::(anonymous namespace)::PostTaskAndReplyRelay> >, void ()>::RunOnce(base::internal::BindStateBase*) + 57

tzik, it looks like you added these restrictions recently?
 

Comment 1 by tzik@chromium.org, Apr 24 2017

Components: -Internals>Skia Content>WebApps
Yes, I added the DCHECK to detect this sort of data race. As gfx::Image is not thread safe even for copies, ui::ResourceBundle's image requires UI thread, while this web_apps runs it on FILE thread.
This is blocking me from getting any work done, as my browser keeps crashing over and over. Is there any workaround aside from commenting out the DCHECK? Is there a plan to fix the race?
Cc: kerrnel@chromium.org

Comment 4 by tzik@chromium.org, May 1 2017

Here is an attempt to fix it: https://codereview.chromium.org/2841433003
Project Member

Comment 5 by bugdroid1@chromium.org, May 2 2017

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

commit 08fb0ca7077abf9c7ddfce597a4015244b16d434
Author: tzik <tzik@chromium.org>
Date: Tue May 02 18:40:26 2017

Do not touch ui::ResourceBundle on non-UI thread in web_app_mac.mm

gfx::ImageStorage has a non-thread-safe ref count, and gfx::Image in
ui::ResourceBundle needs to be copied or destroyed on the UI thread.

This CL removes an access to gfx::Image from non-UI thread in web_app_mac.mm,
to avoid a data race.

BUG= 714209 ,  714280 

Review-Url: https://codereview.chromium.org/2841433003
Cr-Commit-Position: refs/heads/master@{#468712}

[modify] https://crrev.com/08fb0ca7077abf9c7ddfce597a4015244b16d434/chrome/browser/web_applications/web_app_mac.mm

Comment 6 by tzik@chromium.org, May 15 2017

Status: Fixed (was: Assigned)

Sign in to add a comment