wordpress-mobile / wordpress-mobile/MediaEditor-iOS
Example App Crash: First time accessing device media library before giving permission.
Nobody has claimed this yet.
- Dominant language
- Swift
- Stars
- 54
- Forks
- 6
- Avg merge
- 8h 43m
- Merged PRs (30d)
- 5
Description
Expected behavior
To edit a photo in the local device photo library.
Actual behavior
Prompted for permission to access Photos then crashed.
Steps to reproduce the behavior
Settings app > General > Reset > Reset Location & Privacy > Reset Warnings.
Example app > Main screen > Image Editing > Device Library > Edit button.
💥
Works fine on the next launch.
Tested on [device], iOS [version], WPiOS [version]
iPhone X Simulator
Stack Trace
2020-02-10 13:40:58.540740-0600 Example[55893:1421849] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'attempt to scroll to invalid index path: <NSIndexPath: 0x60c000223c40> {length = 2, path = 0 - 0}'
*** First throw call stack:
(
0 CoreFoundation 0x000000010b95b1e6 __exceptionPreprocess + 294
1 libobjc.A.dylib 0x0000000107687031 objc_exception_throw + 48
2 CoreFoundation 0x000000010b9d0975 +[NSException raise:format:] + 197
3 UIKit 0x00000001097c73ef -[UICollectionView _contentOffsetForScrollingToItemAtIndexPath:atScrollPosition:] + 212
4 UIKit 0x00000001097c7e5b -[UICollectionView _scrollToItemAtIndexPath:atScrollPosition:animated:] + 70
5 UIKit 0x00000001097af155 -[UICollectionView _selectItemAtIndexPath:animated:scrollPosition:notifyDelegate:] + 537
6 UIKit 0x00000001097af29b -[UICollectionView selectItemAtIndexPath:animated:scrollPosition:] + 129
7 MediaEditor 0x0000000106feee4b $s11MediaEditor0aB3HubC25reloadImagesAndReposition33_9A39579BAD8EDF62FEB03FFB3FF99D41LLyyF + 1595
8 MediaEditor 0x0000000106feb110 $s11MediaEditor0aB3HubC24traitCollectionDidChangeyySo07UITraitE0CSgF + 128
9 MediaEditor 0x0000000106feb164 $s11MediaEditor0aB3HubC24traitCollectionDidChangeyySo07UITraitE0CSgFTo + 68
10 UIKit 0x0000000108e93288 -[UIViewController _traitCollectionDidChange:] + 108
11 UIKit 0x0000000108e933ab -[UIViewController _updateTraitsIfNecessary] + 269
12 UIKit 0x0000000108dc05f3 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1078
13 QuartzCore 0x000000010beb2456 -[CALayer layoutSublayers] + 177
14 QuartzCore 0x000000010beb6667 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 395
15 UIKit 0x0000000108daa62d -[UIView(Hierarchy) layoutBelowIfNeeded] + 662
16 MediaEditor 0x0000000106fee949 $s11MediaEditor0aB3HubC25reloadImagesAndReposition33_9A39579BAD8EDF62FEB03FFB3FF99D41LLyyF + 313
17 MediaEditor 0x0000000106feb110 $s11MediaEditor0aB3HubC24traitCollectionDidChangeyySo07UITraitE0CSgF + 128
18 MediaEditor 0x0000000106feb164 $s11MediaEditor0aB3HubC24traitCollectionDidChangeyySo07UITraitE0CSgFTo + 68
19 UIKit 0x0000000108e93288 -[UIViewController _traitCollectionDidChange:] + 108
20 UIKit 0x0000000108e933ab -[UIViewController _updateTraitsIfNecessary] + 269
21 UIKit 0x0000000108dc05f3 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1078
22 QuartzCore 0x000000010beb2456 -[CALayer layoutSublayers] + 177
23 QuartzCore 0x000000010beb6667 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 395
24 QuartzCore 0x000000010be3d0fb _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 343
25 QuartzCore 0x000000010be6a79c _ZN2CA11Transaction6commitEv + 568
26 UIKit 0x0000000108d19f2c _afterCACommitHandler + 272
27 CoreFoundation 0x000000010b8fd607 CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION + 23
28 CoreFoundation 0x000000010b8fd55e __CFRunLoopDoObservers + 430
29 CoreFoundation 0x000000010b8e1b81 __CFRunLoopRun + 1537
30 CoreFoundation 0x000000010b8e130b CFRunLoopRunSpecific + 635
31 GraphicsServices 0x000000010fa36a73 GSEventRunModal + 62
32 UIKit 0x0000000108cf1057 UIApplicationMain + 159
33 Example 0x0000000106c6418b main + 75
34 libdyld.dylib 0x000000010d493955 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
Screen shot of the moment of the crash
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the crash by resetting Location & Privacy, then opening Example app > Image Editing > Device Library > Edit. Start with MediaEditorHub.reloadImagesAndReposition, identified in the stack trace, and inspect the first-permission path around collection-view selection. Done means the initial photo-library access prompts for permission and reaches editing without an invalid-index crash.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ios, swift
- Domain
- mobile
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100