UIViewController.deserialize(from: [:]) crash
- Dominant language
- Swift
- Stars
- 4.3k
- Forks
- 677
- PR merge metrics
- No merged PRs in 30d
Description
HandyJSON Version: 5.0.2
iOS Version: 15.4.1
Device Model Name: iPhone 11
Xcode Version: 13.3.1
thread #1, queue = 'com.apple.main-thread', stop reason = Fatal error: Range requires lowerBound <= upperBound
frame #0: 0x00000001b2861458 libswiftCore.dylib`_swift_runtime_on_report
frame #1: 0x00000001b28f69e4 libswiftCore.dylib`_swift_stdlib_reportFatalErrorInFile + 208
frame #2: 0x00000001b25028c8 libswiftCore.dylib`closure #1 (Swift.UnsafeBufferPointer) -> () in closure #1 (Swift.UnsafeBufferPointer) -> () in closure #1 (Swift.UnsafeBufferPointer) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.StaticString, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 360
frame #3: 0x00000001b250262c libswiftCore.dylib`closure #1 (Swift.UnsafeBufferPointer) -> () in closure #1 (Swift.UnsafeBufferPointer) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.StaticString, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 196
frame #4: 0x00000001b2502434 libswiftCore.dylib`closure #1 (Swift.UnsafeBufferPointer) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.StaticString, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 208
frame #5: 0x00000001b2501f7c libswiftCore.dylib`Swift._assertionFailure(_: Swift.StaticString, _: Swift.StaticString, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 232
* frame #6: 0x0000000102f158b0 HandyJSON`ContextDescriptorType.fieldOffsets.getter(self=HandyJSON.Metadata.Class @ 0x000000016d3bc4b0) at ContextDescriptorType.swift:83:22
frame #7: 0x0000000102f37480 HandyJSON`Metadata.Class._propertyDescriptionsAndStartPoint(self=HandyJSON.Metadata.Class @ 0x000000016d3bc4c8) at Metadata.swift:187:40
frame #8: 0x0000000102f37c94 HandyJSON`Metadata.Class.propertyDescriptions(self=HandyJSON.Metadata.Class @ 0x000000016d3bc6b8) at Metadata.swift:214:31
frame #9: 0x0000000102f3dc18 HandyJSON`getProperties(type=UIViewController) at Properties.swift:62:32
frame #10: 0x0000000102f3dc98 HandyJSON`getProperties(type=UIViewController) at Properties.swift:65:16
frame #11: 0x0000000102f2194c HandyJSON`static _ExtendCustomModelType._transform(dict=0 key/value pairs, instance=0x000000010390d160, self=UIViewController) at ExtendCustomModelType.swift:140:32
frame #12: 0x0000000102f21798 HandyJSON`static _ExtendCustomModelType._transform(dict=0 key/value pairs, self=UIViewController) at ExtendCustomModelType.swift:134:9
frame #13: 0x0000000102f1bf34 HandyJSON`static JSONDeserializer.deserializeFrom(dict=0 key/value pairs, designatedPath=nil, self=HandyJSON.JSONDeserializer) at Deserializer.swift:78:22
frame #14: 0x0000000102f1bcd4 HandyJSON`static HandyJSON.deserialize(dict=0 key/value pairs, designatedPath=nil, self=UIViewController) at Deserializer.swift:33:39
frame #15: 0x0000000102a47758 LibRoute_Example`AppDelegate.application(application=0x0000000103805610, launchOptions=nil, self=0x00000002814fc180) at AppDelegate.swift:19:26
frame #16: 0x0000000102a48088 LibRoute_Example`@objc AppDelegate.application(_:didFinishLaunchingWithOptions:) at :0
frame #17: 0x00000001b01a1f88 UIKitCore`-[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 340
frame #18: 0x00000001b0388da4 UIKitCore`-[UIApplication _callInitializationDelegatesWithActions:forCanvas:payload:fromOriginatingProcess:] + 3572
frame #19: 0x00000001b0371958 UIKitCore`-[UIApplication _runWithMainScene:transitionContext:completion:] + 1180
frame #20: 0x00000001b01cf590 UIKitCore`-[_UISceneLifecycleMultiplexer completeApplicationLaunchWithFBSScene:transitionContext:] + 152
frame #21: 0x00000001b0029c44 UIKitCore`_UIScenePerformActionsWithLifecycleActionMask + 104
frame #22: 0x00000001b01545ec UIKitCore`__101-[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:]_block_invoke + 216
frame #23: 0x00000001b02742fc UIKitCore`-[_UISceneLifecycleMultiplexer _performBlock:withApplicationOfDeactivationReasons:fromReasons:] + 248
frame #24: 0x00000001b04b2fa4 UIKitCore`-[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:] + 772
frame #25: 0x00000001b043e554 UIKitCore`-[_UISceneLifecycleMultiplexer uiScene:transitionedFromState:withTransitionContext:] + 340
frame #26: 0x00000001b002aa30 UIKitCore`__186-[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:]_block_invoke + 196
frame #27: 0x00000001b00ea934 UIKitCore`+[BSAnimationSettings(UIKit) tryAnimatingWithSettings:actions:completion:] + 892
frame #28: 0x00000001b002c934 UIKitCore`_UISceneSettingsDiffActionPerformChangesWithTransitionContext + 276
frame #29: 0x00000001b0116aa0 UIKitCore`-[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:] + 384
frame #30: 0x00000001b059b564 UIKitCore`__64-[UIScene scene:didUpdateWithDiff:transitionContext:completion:]_block_invoke.615 + 776
frame #31: 0x00000001b005ad14 UIKitCore`-[UIScene _emitSceneSettingsUpdateResponseForCompletion:afterSceneUpdateWork:] + 256
frame #32: 0x00000001b009e528 UIKitCore`-[UIScene scene:didUpdateWithDiff:transitionContext:completion:] + 288
frame #33: 0x00000001b01d4394 UIKitCore`-[UIApplication workspace:didCreateScene:withTransitionContext:completion:] + 584
frame #34: 0x00000001b0114d64 UIKitCore`-[UIApplicationSceneClientAgent scene:didInitializeWithEvent:completion:] + 388
frame #35: 0x00000001bfc24294 FrontBoardServices`-[FBSScene _callOutQueue_agent_didCreateWithTransitionContext:completion:] + 440
frame #36: 0x00000001bfc4a090 FrontBoardServices`__94-[FBSWorkspaceScenesClient createWithSceneID:groupID:parameters:transitionContext:completion:]_block_invoke.215 + 128
frame #37: 0x00000001bfc05308 FrontBoardServices`-[FBSWorkspace _calloutQueue_executeCalloutFromSource:withBlock:] + 240
frame #38: 0x00000001bfc06958 FrontBoardServices`__94-[FBSWorkspaceScenesClient createWithSceneID:groupID:parameters:transitionContext:completion:]_block_invoke + 372
frame #39: 0x000000010368a7bc libdispatch.dylib`_dispatch_client_callout + 20
frame #40: 0x000000010368e264 libdispatch.dylib`_dispatch_block_invoke_direct + 368
frame #41: 0x00000001bfc06c70 FrontBoardServices`__FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 48
frame #42: 0x00000001bfc06040 FrontBoardServices`-[FBSSerialQueue _targetQueue_performNextIfPossible] + 220
frame #43: 0x00000001bfc0a700 FrontBoardServices`-[FBSSerialQueue _performNextFromRunLoopSource] + 28
frame #44: 0x00000001adac7f04 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28
frame #45: 0x00000001adad8c90 CoreFoundation`__CFRunLoopDoSource0 + 208
frame #46: 0x00000001ada12184 CoreFoundation`__CFRunLoopDoSources0 + 268
frame #47: 0x00000001ada17b4c CoreFoundation`__CFRunLoopRun + 828
frame #48: 0x00000001ada2b6b8 CoreFoundation`CFRunLoopRunSpecific + 600
frame #49: 0x00000001c9ac5374 GraphicsServices`GSEventRunModal + 164
frame #50: 0x00000001b0390e88 UIKitCore`-[UIApplication _run] + 1100
frame #51: 0x00000001b01125ec UIKitCore`UIApplicationMain + 364
frame #52: 0x0000000102a487f4 LibRoute_Example`main at AppDelegate.swift:13:7
frame #53: 0x0000000102e79ce4 dyld`start + 520
Contributor guide
No contributing guide indexed for this repository
Research direction
Reproduce UIViewController deserialization with an empty dictionary from AppDelegate.swift:19, then inspect ContextDescriptorType.swift:83 and the callers in Metadata.swift and Properties.swift. Trace why fieldOffsets creates an invalid range for UIViewController; done means the reported deserialize(from: [:]) crash no longer occurs.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- swift
- Domain
- backend-api-design
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100