You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
While working on a Client's App, Firebase reported a weird crash that is caused by FormViewController trying to remove some rows from a section that does contain anything, when actually it says the opposite.
The trace starts here in the Client's app code:
if !self.feedSection.isEmpty {
self.feedSection.removeAll()
}
where feedSection is Eureka.Section.
The .isEmpty property states that the section is not empty, so the App proceeds to remove the content. Then, it crashes at FormViewController.rowsHaveBeenRemoved(_:at:) with the following message:
attempt to delete row 4 from section 0 which only contains 0 rows before the update
Here you go the stack trace I got from Firebase:
Fatal Exception: NSInternalInconsistencyException
0 CoreFoundation 0x827cc __exceptionPreprocess
1 libobjc.A.dylib 0x172e4 objc_exception_throw
2 Foundation 0x80f8d8 _userInfoForFileAndLine
3 UIKitCore 0x354630 -[UITableView _endCellAnimationsWithContext:]
4 UIKitCore 0x388f78 -[UITableView endUpdatesWithContext:]
5 Pan 0x51de70 FormViewController.rowsHaveBeenRemoved(_:at:) + 733 (Core.swift:733)
6 Pan 0x55ed00 specialized Section.KVOWrapper.observeValue(forKeyPath:of:change:context:) + 94 (Section.swift:94)
7 Pan 0x555dd8 @objc Section.KVOWrapper.observeValue(forKeyPath:of:change:context:) (<compiler-generated>)
8 Foundation 0x1a72c NSKeyValueNotifyObserver
9 Foundation 0x1a420 NSKeyValueDidChange
10 Foundation 0x11d17c -[NSObject(NSKeyValueObservingPrivate) _changeValueForKeys:count:maybeOldValuesDict:maybeNewValuesDict:usingBlock:]
11 Foundation 0x11cd98 -[NSObject(NSKeyValueObservingPrivate) _changeValueForKey:key:key:usingBlock:]
12 Foundation 0x11c22c _NSSetObjectValueAndNotify
13 Pan 0x55f784 specialized Section.removeAll(keepingCapacity:) + 78 (Section.swift:78)
Steps To Reproduce
Sadly, I was not able to reproduce it myself 😞 but it is constantly crashing according to Firebase: 207 crash events affecting 206 users in the last week since today.
Expected behavior
I would have expected the .isEmpty function to work as intended, so the App does not tries to remove rows if the section is already empty. Also, I would have expected the SDK to check the section's content before updating it.
Having a look, I have seen that there are no checks done before the Form updates the TableView in FormViewController.rowsHaveBeenRemoved(_:at:).
Versions
Device: iPhone 13
OS: iOS 18.1.1
Eureka Version: 5.5.0
Xcode version: 15.4
Additional context
Just in case it helps, the % of free RAM according to Firebase is 160.43 MB.
The text was updated successfully, but these errors were encountered:
Hi 👋🏻
While working on a Client's App, Firebase reported a weird crash that is caused by
FormViewController
trying to remove some rows from a section that does contain anything, when actually it says the opposite.The trace starts here in the Client's app code:
where
feedSection
isEureka.Section
.The
.isEmpty
property states that the section is not empty, so the App proceeds to remove the content. Then, it crashes atFormViewController.rowsHaveBeenRemoved(_:at:)
with the following message:Here you go the stack trace I got from Firebase:
Steps To Reproduce
Sadly, I was not able to reproduce it myself 😞 but it is constantly crashing according to Firebase: 207 crash events affecting 206 users in the last week since today.
Expected behavior
I would have expected the
.isEmpty
function to work as intended, so the App does not tries to remove rows if the section is already empty. Also, I would have expected the SDK to check the section's content before updating it.Having a look, I have seen that there are no checks done before the Form updates the
TableView
inFormViewController.rowsHaveBeenRemoved(_:at:)
.Versions
Additional context
Just in case it helps, the % of free RAM according to Firebase is 160.43 MB.
The text was updated successfully, but these errors were encountered: