Open Bug 1271576 Opened 8 years ago Updated 2 years ago

Crash in storage on initial sync after sign-in (with a particular account)

Categories

(Firefox for iOS :: Data Storage, defect)

All
iOS
defect

Tracking

()

Tracking Status
fxios-v5.0 --- affected
fxios + ---

People

(Reporter: SimonB, Unassigned)

Details

(Keywords: crash)

Attachments

(1 file)

Build master 4593dfdc

Steps to reproduce:
1. Sign to Firefox account with synced tabs and browsing data from the histoy panel
2. Wait for Firefox to finish sync
3. Minimize Firefox by pressing the home button
4 Return to Firefox
5. Repeat steps 7 and 8

Actual results: 
- The application will crash
Hello Stefan, the secure flag was checked by mistake. Can you please remove it? Sorry for the inconvenience.
I notice there are no steps 7 and 8, per comment 0. Can you clarify the steps?
Group: firefox-core-security
(In reply to Al Billings [:abillings] from comment #2)
> I notice there are no steps 7 and 8, per comment 0. Can you clarify the
> steps?

Please see below the correct steps to reproduce:
1. Sign to Firefox account with synced tabs and browsing data from the history panel
2. Wait for Firefox to finish sync
3. Minimize Firefox by pressing the home button
4. Return to Firefox
5. Repeat steps 3 and 4
Works for me, iPhone 6 (master checkout 05/15).

This must be an issue with a record on your account.

Thread 6 name:  Dispatch queue: SwiftData queue: /private/var/mobile/Containers/Shared/AppGroup/EF855EAD-79D4-4877-9D79-CF0C9190AC80/profile.profile/browser.db
Thread 6:
0   libsystem_kernel.dylib        	0x0000000197d9287c __kill + 8
1   libsystem_platform.dylib      	0x0000000197e5594c _sigtramp + 68
2   libswiftCore.dylib            	0x000000010224af70 0x10210c000 + 1306480
3   Storage                       	0x00000001018473dc BrowserDB.(withConnection<A> (flags : SwiftData.Flags, err : inout NSError?, callback : (connection : SQLiteDBConnection, err : inout NSError?) -> A) -> A).(closure #1) (BrowserDB.swift:250)
4   Storage                       	0x0000000101879de8 SwiftData.(withConnection(SwiftData.Flags, synchronous : Bool, cb : (db : SQLiteDBConnection) -> NSError?) -> NSError?).(closure #1) (SwiftData.swift:116)
5   Storage                       	0x0000000101863ee0 thunk (SQLiteBookmarksBase.swift:0)
6   libdispatch.dylib             	0x0000000197c456a8 _dispatch_client_callout + 16
7   libdispatch.dylib             	0x0000000197c50954 _dispatch_barrier_sync_f_invoke + 100
8   Storage                       	0x00000001018682e0 SwiftData.withConnection(SwiftData.Flags, synchronous : Bool, cb : (db : SQLiteDBConnection) -> NSError?) -> NSError? (SwiftData.swift:117)
9   Storage                       	0x000000010183fde0 BrowserDB.withConnection<A> (flags : SwiftData.Flags, err : inout NSError?, callback : (connection : SQLiteDBConnection, err : inout NSError?) -> A) -> A (BrowserDB.swift:248)
10  Storage                       	0x00000001018402c8 BrowserDB.withReadableConnection<A> (inout NSError?, callback : (connection : SQLiteDBConnection, err : inout NSError?) -> Cursor<A>) -> Cursor<A> (BrowserDB.swift:264)
11  Storage                       	0x000000010175ae78 SQLiteRemoteClientsAndTabs.getClientsAndTabs() -> Deferred<Maybe<[ClientAndTabs]>> (SQLiteRemoteClientsAndTabs.swift:193)
12  Storage                       	0x000000010175df68 protocol witness for RemoteClientsAndTabs.getClientsAndTabs() -> Deferred<Maybe<[ClientAndTabs]>> in conformance SQLiteRemoteClientsAndTabs (SQLiteRemoteClientsAndTabs.swift:187)
13  Client                        	0x000000010026a93c BrowserProfile.getCachedClientsAndTabs() -> Deferred<Maybe<[ClientAndTabs]>> (Profile.swift:393)
14  Client                        	0x000000010027b200 protocol witness for Profile.getCachedClientsAndTabs() -> Deferred<Maybe<[ClientAndTabs]>> in conformance BrowserProfile (Profile.swift:392)
15  Client                        	0x00000001002000f4 (RemoteTabsTableViewController in _392C62692D7959CC2F600BB6CBEB13E4).refreshTabs() -> () (RemoteTabsPanel.swift:610)
16  Client                        	0x00000001001f401c RemoteTabsPanel.notificationReceived(NSNotification) -> () (RemoteTabsPanel.swift:101)
17  Client                        	0x00000001001f419c @objc RemoteTabsPanel.notificationReceived(NSNotification) -> () (RemoteTabsPanel.swift:0)

For investigation we might need access your databases and or account off the device.
Severity: normal → critical
Component: General → Data Storage
Keywords: crash
Summary: The application will crash after signing in to Firefox account → Crash in storage on initial sync after sign-in (with a particular account)
Tested on build afdbc70.

The issue was reproduced following the above steps using the account:

User: softvisionmozilla1@gmail.com
Password: sv12test
Assignee: nobody → sleroux
Status: NEW → ASSIGNED
I gave the profile a try on the iPhone 6 simulator and on device (iOS 9.3.1/6) and wasn't able to reproduce it from commit 11fe03e7832a894ffe0337370595de18cb043811. If the account has been used in the last 8 hours the data might have change in such a way that doesn't cause this crash :(
Assuming that this is a Fennec/Development build since it was built from master, the line that's throwing the crash is the following assert [1]. On a release build, this won't crash since asserts are ignored. Now, the actual consequence of hitting this assert is another thing. This bug [2] chronicles the life and times of this problem explaining how in some cases we may not be able to open a connection to SQLite. Since this won't crash on release builds, it might be worth moving to tracking+ for investigation later.

[1] https://github.com/mozilla/firefox-ios/blob/master/Storage/SQL/BrowserDB.swift#L250
[2] https://bugzilla.mozilla.org/show_bug.cgi?id=1236956
Assignee: sleroux → nobody
Status: ASSIGNED → NEW
Severity: critical → S2
You need to log in before you can comment on or make changes to this bug.