Post

Replies

Boosts

Views

Activity

Reply to What does Arg[0] = Dead in a UICollectionViewDataSource crash mean?
Yes, I have the full crash log at hand. The crashed thread looks like this: Exception Type: SIGTRAP Exception Codes: TRAP_BRKPT at 0x102f59f38 Crashed Thread: 0 Thread 0 Crashed: 0 MyApp 0x0000000102f59f38 function signature specialization <Arg[0] = Dead> of MyApp.MyDataSource.collectionView(_: __C.UICollectionView, didSelectItemAt: Foundation.IndexPath) -> () (<compiler-generated>:0) 1 MyApp 0x0000000102f59258 @objc MyApp.MyDataSource.collectionView(_: __C.UICollectionView, didSelectItemAt: Foundation.IndexPath) -> () (<compiler-generated>:0) 2 UIKitCore 0x0000000183ab06e8 -[UICollectionView _selectItemAtIndexPath:animated:scrollPosition:notifyDelegate:deselectPrevious:performCustomSelectionAction:] + 896 3 UIKitCore 0x0000000183e4a300 -[UICollectionView touchesEnded:withEvent:] + 612 4 UIKitCore 0x00000001839940f8 forwardTouchMethod + 340 5 UIKitCore 0x00000001839940f8 forwardTouchMethod + 340 6 UIKitCore 0x00000001839940f8 forwardTouchMethod + 340 7 UIKitCore 0x0000000183903574 _UIGestureEnvironmentUpdate + 6704 8 UIKitCore 0x00000001839360b0 -[UIGestureEnvironment _updateForEvent:window:] + 780 9 UIKitCore 0x0000000183943250 -[UIWindow sendEvent:] + 4424 10 UIKitCore 0x0000000183af3918 -[UIApplication sendEvent:] + 824 11 UIKitCore 0x0000000183916464 __dispatchPreprocessedEventFromEventQueue + 7900 12 UIKitCore 0x000000018390b250 __processEventQueue + 6756 13 UIKitCore 0x00000001839106fc __eventFetcherSourceCallback + 168 14 CoreFoundation 0x00000001813b30d0 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24 15 CoreFoundation 0x00000001813c3d90 __CFRunLoopDoSource0 + 204 16 CoreFoundation 0x00000001812fe098 __CFRunLoopDoSources0 + 264 17 CoreFoundation 0x00000001813038a4 __CFRunLoopRun + 816 18 CoreFoundation 0x0000000181317468 CFRunLoopRunSpecific + 596 19 GraphicsServices 0x000000019cea338c GSEventRunModal + 160 20 UIKitCore 0x0000000183cb9088 -[UIApplication _run] + 1096 21 UIKitCore 0x0000000183a37958 UIApplicationMain + 2088 22 MyApp 0x0000000102ea2870 main (MyAppDelegate.swift:15) 23 ??? 0x0000000103885aa4 0x0 + 0 Thread 1: 0 libsystem_kernel.dylib 0x00000001b88c5504 mach_msg_trap + 8 1 CoreFoundation 0x00000001812ff738 __CFRunLoopServiceMachPort + 368 2 CoreFoundation 0x0000000181303a2c __CFRunLoopRun + 1208 3 CoreFoundation 0x0000000181317468 CFRunLoopRunSpecific + 596 4 Foundation 0x0000000182b33c94 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 232 5 Foundation 0x0000000182b74dc8 -[NSRunLoop(NSRunLoop) runUntilDate:] + 88 6 UIKitCore 0x0000000183c32230 -[UIEventFetcher threadMain] + 520 7 Foundation 0x0000000182b8340c __NSThread__start__ + 804 8 libsystem_pthread.dylib 0x00000001f1d639a4 _pthread_start + 144 9 libsystem_pthread.dylib 0x00000001f1d62ea0 thread_start + 4 Thread 2: … Thread 3: … Thread 4: … Thread 5: … Thread 0 crashed with arm64 Thread State: x21: 0x40000002826da4c0 x2: 0x0000000000000001 x16: 0x0000000185a20ea8 x3: 0x0000000150928fa0 x22: 0x0000000103fa2aa8 x4: 0x0000000000000280 x17: 0x04f80001dbbb7688 cpsr: 0x0000000020000000 x5: 0x0000000150928fa0 x23: 0x00000001509285d0 x6: 0x0000000000000029 x18: 0x000000015500b940 x10: 0x00000000000d9f00 lr: 0x0000000102f59cc0 x7: 0x0000000000000001 x24: 0xc000000000000024 x11: 0x0000000000179f41 x8: 0x0000000000000003 x19: 0x00000002826c3780 x25: 0x000000016cf605d0 x9: 0x0000000000000005 x12: 0x00000000000030ef fp: 0x000000016cf605c0 x26: 0x000000016cf60080 x13: 0x00000000c7700670 pc: 0x0000000102f59f38 x27: 0x000000016cf60150 x14: 0x00000001041a4b60 x20: 0x000000016cf605d0 x0: 0x0000000000000005 sp: 0x000000016cf60080 x28: 0x0000000103fa2fc0 x15: 0x00000000c7700675 x1: 0x0000000000000005 And yes, it seems as if something gets deallocated faster than some other code would expect it to be gone. At least that's my assumption now.
Jul ’22
Reply to What does Arg[0] = Dead in a UICollectionViewDataSource crash mean?
But why would a Dead argument cause a crash? The didSelectItemAt would look like this: class CollectionViewDataSource: NSObject, UICollectionViewDelegate, UICollectionViewDataSource { var sectionAHandler: (() -> Void)? var sectionBandler: ((URL) -> Void)? … public func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { guard let section = Section(rawValue: indexPath.section), let item = self.item else { return } switch section { case .sectionA: sectionAHandler?() case .sectionB: if case .someEnum(let url) = item.urlKind { sectionBHandler?(url) } } } … } I try to resolve an enum defining the available sections, check if some item is available and if that is case, I switch on the section enum and call some function if available.
Jul ’22