UINibDecoderDecodeObjectForValue + 404 only iPhone X

I'm working on an app that crashed under review on an iPhone X with iOS 13.4

I don't have an iPhone X, but a client of mine get this crash too via TestFlight on his iPhone X.

The crash appear only on iPhone X, i also tested via Testflight on an iPhone 7 and iPhone 11 Pro but without crash.

I tried to run the app on iPhone X via Simulator in release mode, but no crashes occurs.

The only way i have to fix this crash is reading the logs i received via TestFlight but I don't see any way to fix it.


What i know is that the crash log point me inside the HomeHeaderView.swift on the line 18.

On line 18 inside HomeHeaderView I have a simple "@IBOutlet var benvenutoLabel: UILabel!"


This is a part of HomeHeaderView.swift:

my crash log on line 18 point to the row "@IBOutlet var benvenutoLabel: UILabel!"


class HomeHeaderView: UITableViewHeaderFooterView {
   
    @IBOutlet var subView: UIView!
    @IBOutlet var headerImageView: UIImageView!
    @IBOutlet var benvenutoLabel: UILabel!
    @IBOutlet var dettagliLabel: UILabel!
    @IBOutlet var nomeLabel: UILabel!


HomeHeaderView.swift is the xib that I use to build the header of a tableview and I suppose that everything must be linked right, because on other devices it's running right without crash.


This is the crash log:


Incident Identifier: 04028EAD-E72C-4C55-B534-68B865CD2B07
Beta Identifier:     5A3244D8-1BB6-475C-8DD1-CAD2DA4390F9
Hardware Model:      iPhone10,6
Process:             AppName [10395]
Path:                Path
Identifier:          Identifier
Version:             36 (1.1.0)
AppStoreTools:       11E146
AppVariant:          1:iPhone10,6:13
Beta:                YES
Code Type:           ARM-64 (Native)
Role:                Foreground
Parent Process:      launchd [1]
Coalition:           Coalition




Date/Time:           2020-04-12 00:02:52.5229 +0200
Launch Time:         2020-04-12 00:02:43.8570 +0200
OS Version:          iPhone OS 13.4 (17E255)
Release Type:        User
Baseband Version:    3.04.02
Report Version:      104


Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Triggered by Thread:  0


Last Exception Backtrace:
0   CoreFoundation                 0x1ba4c95f0 __exceptionPreprocess + 224 (NSException.m:199)
1   libobjc.A.dylib               0x1ba1ebbcc objc_exception_throw + 56 (objc-exception.mm:565)
2   CoreFoundation                 0x1ba3bfb28 +[NSException raise:format:] + 108 (NSException.m:155)
3   UIFoundation                   0x1bdad3ad4 UINibDecoderDecodeObjectForValue + 404 (UINibDecoder.m:695)
4   UIFoundation                   0x1bdad3e34 UINibDecoderDecodeObjectForValue + 1268 (UINibDecoder.m:611)
5   UIFoundation                   0x1bda70a2c -[UINibDecoder decodeObjectForKey:] + 308 (UINibDecoder.m:811)
6   UIKitCore                     0x1be9f2e38 -[UIView initWithCoder:] + 784 (UIView.m:4251)
7   UIFoundation                   0x1bdad3c14 UINibDecoderDecodeObjectForValue + 724 (UINibDecoder.m:717)
8   UIFoundation                   0x1bda70a2c -[UINibDecoder decodeObjectForKey:] + 308 (UINibDecoder.m:811)
9   UIKitCore                     0x1be20b344 -[UIRuntimeConnection initWithCoder:] + 172 (UIRuntimeConnection.m:23)
10  UIFoundation                   0x1bdad3c14 UINibDecoderDecodeObjectForValue + 724 (UINibDecoder.m:717)
11  UIFoundation                   0x1bdad3e34 UINibDecoderDecodeObjectForValue + 1268 (UINibDecoder.m:611)
12  UIFoundation                   0x1bda70a2c -[UINibDecoder decodeObjectForKey:] + 308 (UINibDecoder.m:811)
13  UIKitCore                     0x1be206434 -[NSCoder(UIIBDependencyInjectionInternal) _decodeObjectsWithSourceSegueTemplate:creator:sender:f... + 488 (UIClassSwapper.m:57)
14  UIKitCore                     0x1be208fb4 -[UINib instantiateWithOwner:options:] + 1064 (UINib.m:347)
15  UIKitCore                     0x1bdf3286c -[UIViewController _loadViewFromNibNamed:bundle:] + 364 (UIViewController.m:3105)
16  UIKitCore                     0x1bdf332e4 -[UIViewController loadView] + 176 (UIViewController.m:3247)
17  UIKitCore                     0x1bdf3359c -[UIViewController loadViewIfRequired] + 172 (UIViewController.m:3346)
18  UIKitCore                     0x1bdf33ca0 -[UIViewController view] + 28 (UIViewController.m:3404)
19  UIKitCore                     0x1bdeb228c -[UINavigationController preferredContentSize] + 168 (UINavigationController.m:9352)
20  UIKitCore                     0x1bde5aab4 -[UIPresentationController preferredContentSizeDidChangeForChildContentContainer:] + 68 (UIPresentationController.m:1753)
21  UIKitCore                     0x1bde56d38 __56-[UIPresentationController runTransitionForCurrentState]_block_invoke.465 + 196 (UIPresentationController.m:1016)
22  UIKitCore                     0x1be57d94c _runAfterCACommitDeferredBlocks + 316 (UIApplication.m:3082)
23  UIKitCore                     0x1be56d2f4 _cleanUpAfterCAFlushAndRunDeferredBlocks + 232 (UIApplication.m:3060)
24  UIKitCore                     0x1be59d744 _afterCACommitHandler + 76 (UIApplication.m:3112)
25  CoreFoundation                 0x1ba446fb8 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32 (CFRunLoop.c:1758)
26  CoreFoundation                 0x1ba441eac __CFRunLoopDoObservers + 420 (CFRunLoop.c:1868)
27  CoreFoundation                 0x1ba442328 __CFRunLoopRun + 968 (CFRunLoop.c:2910)
28  CoreFoundation                 0x1ba441c34 CFRunLoopRunSpecific + 424 (CFRunLoop.c:3192)
29  GraphicsServices               0x1c458b38c GSEventRunModal + 160 (GSEvent.c:2246)
30  UIKitCore                     0x1be57422c UIApplicationMain + 1932 (UIApplication.m:4820)
31  AppName           0x10059cec4 main + 68 (HomeHeaderView.swift:18)
32  libdyld.dylib                 0x1ba2c9800 start + 4


Thread 0 name:
Thread 0 Crashed:
0   libsystem_kernel.dylib         0x00000001ba2bed88 __pthread_kill + 8
1   libsystem_pthread.dylib       0x00000001ba1db74c pthread_kill$VARIANT$armv81 + 216 (pthread.c:1458)
2   libsystem_c.dylib             0x00000001ba12a644 abort + 100 (abort.c:110)
3   libc++abi.dylib               0x00000001ba292cc0 abort_message + 128 (abort_message.cpp:76)
4   libc++abi.dylib               0x00000001ba284e10 demangling_terminate_handler() + 296 (cxa_default_handlers.cpp:65)
5   libobjc.A.dylib               0x00000001ba1ebe80 _objc_terminate() + 124 (objc-exception.mm:701)
6   libc++abi.dylib               0x00000001ba29214c std::__terminate(void (*)()) + 16 (cxa_handlers.cpp:59)
7   libc++abi.dylib               0x00000001ba294e58 __cxa_rethrow + 144 (cxa_exception.cpp:617)
8   libobjc.A.dylib               0x00000001ba1ebd80 objc_exception_rethrow + 40 (objc-exception.mm:604)
9   CoreFoundation                 0x00000001ba441ca0 CFRunLoopRunSpecific + 532 (CFRunLoop.c:3206)
10  GraphicsServices               0x00000001c458b38c GSEventRunModal + 160 (GSEvent.c:2246)
11  UIKitCore                     0x00000001be57422c UIApplicationMain + 1932 (UIApplication.m:4820)
12  AppName           0x000000010059cec4 main + 68 (HomeHeaderView.swift:18)
13  libdyld.dylib                 0x00000001ba2c9800 start + 4

Can anyone please point me to the right direction to fix it?

Thanks

Accepted Reply

Yeah, that’s gotcha has bitten me. If you don’t directly call WebKit,

WKWebView
is not available to the Objective-C runtime when it tries to load your nib.

In Xcode, Project -> General -> Frameworks, Libraries, and Embedded Content, the WebKit.framework is missing. May be this the problem?

Quite possibly. Add it there and retest.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"

Replies

a client of mine get this crash too via TestFlight on his iPhone X.

You should have your client grab a sysdiagnose immediately after the crash and then send it your way. When an app crashes like this the exception message generally ends up in the sysdiagnose log and that should give you a hint as to what’s gone wrong.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"

Thank you eskimo for your valuable feedback.

I have to explain a bit better how the crash occurs for others reading.

The crash occurs when after pressing a button, a new viewcontroller with a WebKitView opens.

Reading the sysdiagnose I found this:



*** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named WKWebView because no class named WKWebView was found; the class needs to be defined in source code or linked in from a library (ensure the class is part of the correct target)'



In xCode, Project -> General -> Frameworks, Libraries, and Embedded Content, the WebKit.framework is missing. May be this the problem?

If yes, how can it be possible that it affects only some devices? I'd like to understand a bit more.



Thanks in advance

Yeah, that’s gotcha has bitten me. If you don’t directly call WebKit,

WKWebView
is not available to the Objective-C runtime when it tries to load your nib.

In Xcode, Project -> General -> Frameworks, Libraries, and Embedded Content, the WebKit.framework is missing. May be this the problem?

Quite possibly. Add it there and retest.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"

Thank you very much eskimo . But there are 3 options in "Embed" title: 1-Do Not Embed 2-Embed & Sign 3-Embed Without Signing , What they meaning ? is it Ok to keep the default option "Do Not Embed" ??

Do Not Embed is the correct option here. WebKit is part of the OS install; you don’t want to carry a copy around with your app (and it wouldn’t work anyway).

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"