New issue
Advanced search Search tips

Issue 917583 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Dec 28
Cc:
EstimatedDays: ----
NextAction: ----
OS: iOS
Pri: 0
Type: Bug



Sign in to add a comment

AssertBaseSyncPrimitivesAllowed() crash at shutdown

Project Member Reported by rohitrao@chromium.org, Dec 22

Issue description

https://chromium-review.googlesource.com/c/chromium/src/+/1384646 introduced a shutdown crash on iOS.  One way to repro is to kill the app while it is in the foreground, triggering a clean shutdown.

ios_web_view_inttests is also crashing on the bots, for similar reasons.

It seems like we need to add an additional exception somewhere.

Thread 0 Crashed:: CrWebMain  Dispatch queue: com.apple.main-thread
0   org.chromium.ChromeWebView    	0x00000001159b9ad4 base::debug::BreakDebugger() + 20
1   org.chromium.ChromeWebView    	0x00000001157ae15c logging::LogMessage::~LogMessage() + 1852
2   org.chromium.ChromeWebView    	0x00000001157aca15 logging::LogMessage::~LogMessage() + 21
3   org.chromium.ChromeWebView    	0x000000011592cb2c base::internal::AssertBaseSyncPrimitivesAllowed() + 188
4   org.chromium.ChromeWebView    	0x000000011591a76d base::internal::ScopedBlockingCallWithBaseSyncPrimitives::ScopedBlockingCallWithBaseSyncPrimitives(base::BlockingType) + 237
5   org.chromium.ChromeWebView    	0x000000011591a86b base::internal::ScopedBlockingCallWithBaseSyncPrimitives::ScopedBlockingCallWithBaseSyncPrimitives(base::BlockingType) + 27
6   org.chromium.ChromeWebView    	0x00000001159d4d9e base::PlatformThread::Join(base::PlatformThreadHandle) + 62
7   org.chromium.ChromeWebView    	0x0000000115920905 base::Thread::Stop() + 293
8   org.chromium.ChromeWebView    	0x000000011456900d web::WebSubThread::~WebSubThread() + 45
9   org.chromium.ChromeWebView    	0x0000000114569035 web::WebSubThread::~WebSubThread() + 21
10  org.chromium.ChromeWebView    	0x0000000114569059 web::WebSubThread::~WebSubThread() + 25
11  org.chromium.ChromeWebView    	0x00000001156797ff std::__1::default_delete<web::WebSubThread>::operator()(web::WebSubThread*) const + 47
12  org.chromium.ChromeWebView    	0x0000000115677acf std::__1::unique_ptr<web::WebSubThread, std::__1::default_delete<web::WebSubThread> >::reset(web::WebSubThread*) + 95
13  org.chromium.ChromeWebView    	0x0000000115677906 web::WebMainLoop::ShutdownThreadsAndCleanUp() + 358
14  org.chromium.ChromeWebView    	0x000000011567a200 web::WebMainRunnerImpl::ShutDown() + 448
15  org.chromium.ChromeWebView    	0x000000011567601d web::WebMain::~WebMain() + 45
16  org.chromium.ChromeWebView    	0x0000000115676065 web::WebMain::~WebMain() + 21
17  org.chromium.ChromeWebView    	0x00000001145ef9ab std::__1::default_delete<web::WebMain>::operator()(web::WebMain*) const + 43
18  org.chromium.ChromeWebView    	0x00000001145ef92f std::__1::unique_ptr<web::WebMain, std::__1::default_delete<web::WebMain> >::reset(web::WebMain*) + 95
19  org.chromium.ChromeWebView    	0x00000001145ef8c9 std::__1::unique_ptr<web::WebMain, std::__1::default_delete<web::WebMain> >::~unique_ptr() + 25
20  org.chromium.ChromeWebView    	0x00000001145ef1e5 std::__1::unique_ptr<web::WebMain, std::__1::default_delete<web::WebMain> >::~unique_ptr() + 21
21  libsystem_c.dylib             	0x00000001111a795d __cxa_finalize_ranges + 351
22  libsystem_c.dylib             	0x00000001111a7c98 exit + 48
23  com.apple.UIKitCore           	0x000000010dde8a12 -[UIApplication _terminateWithStatus:] + 276
 
I've uploaded a potential fix in https://chromium-review.googlesource.com/c/chromium/src/+/1390912.  It looks like you added code to BrowserMainLoop, and I've copied that code into WebMainLoop.

I'm OOO this week, so if possible, I'd love to hand this over to you.  Hopefully it should just be a matter of reviewing + CQ.
Ah, thanks for the report. I was under the impression iOS never went through clean shutdown. I guess it's possible but we don't have CQ coverage for it?
Status: Started (was: Assigned)
Project Member

Comment 4 by bugdroid1@chromium.org, Dec 27

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

commit be8e5da750961cdc67572a9c53ead47c5aa943d7
Author: Rohit Rao <rohitrao@chromium.org>
Date: Thu Dec 27 22:28:41 2018

[ios] Fixes an AssertBaseSyncPrimitivesAllowed() crash at shutdown.

Adds calls to SetWaitAllowed() when shutdown is initiated, similar
to the existing code in BrowserMainLoop.

BUG= 917583 ,800808

Change-Id: I53ad0df9c28a0e14348f6c9ad5be97446732505b
Reviewed-on: https://chromium-review.googlesource.com/c/1390912
Reviewed-by: Gabriel Charette <gab@chromium.org>
Commit-Queue: Gabriel Charette <gab@chromium.org>
Cr-Commit-Position: refs/heads/master@{#619077}
[modify] https://crrev.com/be8e5da750961cdc67572a9c53ead47c5aa943d7/base/threading/thread_restrictions.h
[modify] https://crrev.com/be8e5da750961cdc67572a9c53ead47c5aa943d7/ios/web/app/web_main_loop.mm

Status: Fixed (was: Started)
Should be fixed now, no link to problematic bot in OP but iOS waterfall is green AFAICT.

Sign in to add a comment