dyld3::AllImages::runInitialzersBottomUp

Could you please help me with solving this crash? The app is in production and I have seen this crash in Xcode Organizer. A user sent me a video and app crash while launching the app. I cannot see any of these crashes in Crashlytics.


Incident Identifier: A3E8AB0D-DC78-4CA2-B116-C3491C6B16DE
CrashReporter Key:   e4c3ff3cc411f26656139c4f0e38a51d7da58418
Hardware Model:      iPhone11,8
Process:             MYAPP [398]
Path:                /private/var/containers/Bundle/Application/02F163A4-7C25-4E13-AD4D-2E9B9E76E90E/MYAPP.app/MYAPP
Identifier:          com.MYAPP
Version:             01010101 (1.1.1)
AppStoreTools:       11C29
AppVariant:          1:iPhone11,8:13
Code Type:           ARM-64 (Native)
Role:                Foreground
Parent Process:      launchd [1]
Coalition:           com.MYAPP [560]




Date/Time:           2020-01-10 10:55:04.9746 +0100
Launch Time:         2020-01-10 10:55:04.9169 +0100
OS Version:          iPhone OS 13.3 (17C54)
Release Type:        User
Baseband Version:    2.03.07
Report Version:      104


Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000000
VM Region Info: 0 is not in any region.  Bytes before following region: 4304158720
      REGION TYPE                      START - END             [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      UNUSED SPACE AT START
--->  
      __TEXT                 00000001008c4000-00000001041f0000 [ 57.2M] r-x/r-x SM=COW  ...pp/MYAPP


Termination Signal: Segmentation fault: 11
Termination Reason: Namespace SIGNAL, Code 0xb
Terminating Process: exc handler [398]
Triggered by Thread:  0


Thread 0 name:
Thread 0 Crashed:
0   MYAPP                     0x0000000101b736fc mnq + 1612
1   libobjc.A.dylib               0x00000001aaa753f8 load_images + 912 (objc-loadmethod.mm:204)
2   libdyld.dylib                 0x00000001aab58168 invocation function for block in dyld3::AllImages::runInitialzersBottomUp(dyld3::closure::Image c... + 224 (AllImages.cpp:1607)
3   libdyld.dylib                 0x00000001aab4a7e8 dyld3::closure::Image::forEachImageToInitBefore(void (unsigned int, bool&) block_pointer) const + 104 (Closure.cpp:886)
4   libdyld.dylib                 0x00000001aab57bf4 dyld3::AllImages::runStartupInitialzers() + 280 (AllImages.cpp:1596)
5   libdyld.dylib                 0x00000001aab72ee4 dyld3::entry_runInitialzersBottomUp(mach_header const*) + 32 (libdyldEntryVector.cpp:126)
6   dyld                           0x0000000104ab0530 dyld::launchWithClosure(dyld3::closure::LaunchClosure const*, DyldSharedCache const*, dyld3::Mach... + 1080 (dyld2.cpp:5934)
7   dyld                           0x0000000104aae98c dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**, un... + 2960 (dyld2.cpp:6575)
8   dyld                           0x0000000104aa922c dyldbootstrap::start(dyld3::MachOLoaded const*, int, char const**, dyld3::MachOLoaded const*, uns... + 432 (dyldInitialization.cpp:145)
9   dyld                           0x0000000104aa9038 _dyld_start + 56


Thread 1 name:
Thread 1:
0   libsystem_kernel.dylib         0x00000001aab3f8f0 __ulock_wait + 8
1   libdispatch.dylib             0x00000001aa9fa958 _dlock_wait + 56 (lock.c:324)
2   libdispatch.dylib             0x00000001aa9fa898 _dispatch_once_wait + 124 (lock.c:380)
3   UIKitCore                     0x00000001aeac1524 -[_UIApplicationConfigurationLoader _loadInitializationContext] + 140 (once.h:84)
4   UIKitCore                     0x00000001aeac1864 __70-[_UIApplicationConfigurationLoader startPreloadInitializationContext]_block_invoke + 28 (_UIApplicationConfigurationLoader.m:136)
5   libdispatch.dylib             0x00000001aa9f8b7c _dispatch_call_block_and_release + 32 (init.c:1408)
6   libdispatch.dylib             0x00000001aa9f9fd8 _dispatch_client_callout + 20 (object.m:495)
7   libdispatch.dylib             0x00000001aaa08cfc _dispatch_root_queue_drain + 644 (inline_internal.h:2484)
8   libdispatch.dylib             0x00000001aaa09384 _dispatch_worker_thread2 + 120 (queue.c:6628)
9   libsystem_pthread.dylib       0x00000001aaa5f690 _pthread_wqthread + 216 (pthread.c:2364)
10  libsystem_pthread.dylib       0x00000001aaa659e8 start_wqthread + 8


Thread 2 name:
Thread 2:
0   libsystem_kernel.dylib         0x00000001aab1cc04 mach_msg_trap + 8
1   libsystem_kernel.dylib         0x00000001aab1c020 mach_msg + 76 (mach_msg.c:103)
2   libxpc.dylib                   0x00000001aa961258 _xpc_pipe_routine + 388 (pipe.c:369)
3   libxpc.dylib                   0x00000001aa961450 xpc_pipe_routine_with_flags + 72 (pipe.c:905)
4   libxpc.dylib                   0x00000001aa946d7c _xpc_interface_routine + 224 (interface.c:89)
5   libxpc.dylib                   0x00000001aa9471c4 _xpc_look_up_endpoint + 236 (launch.c:23)
6   libxpc.dylib                   0x00000001aa94dd10 _xpc_connection_bootstrap_look_up_slow + 280 (connection.c:563)
7   libxpc.dylib                   0x00000001aa950518 _xpc_connection_init + 552 (connection.c:595)
8   libxpc.dylib                   0x00000001aa94f20c _xpc_connection_activate_if_needed + 104 (connection.c:3290)
9   RunningBoardServices           0x00000001ad8eacc4 -[RBSConnection _lock_connect] + 312 (RBSConnection.m:1094)
10  RunningBoardServices           0x00000001ad8eb92c __27-[RBSConnection _handshake]_block_invoke + 336 (RBSConnection.m:1221)
11  libdispatch.dylib             0x00000001aa9f8b7c _dispatch_call_block_and_release + 32 (init.c:1408)
12  libdispatch.dylib             0x00000001aa9f9fd8 _dispatch_client_callout + 20 (object.m:495)
13  libdispatch.dylib             0x00000001aaa00450 _dispatch_lane_serial_drain + 568 (inline_internal.h:2484)
14  libdispatch.dylib             0x00000001aaa00eb4 _dispatch_lane_invoke + 424 (inline_internal.h:1851)
15  libdispatch.dylib             0x00000001aaa09f20 _dispatch_workloop_worker_thread + 580 (queue.c:6445)
16  libsystem_pthread.dylib       0x00000001aaa5f6d0 _pthread_wqthread + 280 (pthread.c:2352)
17  libsystem_pthread.dylib       0x00000001aaa659e8 start_wqthread + 8


Thread 3:
0   libsystem_pthread.dylib       0x00000001aaa659e0 pthread_dependency_wait_np + 180 (pthread_dependency.c:112)


Thread 4:
0   libsystem_pthread.dylib       0x00000001aaa659e0 pthread_dependency_wait_np + 180 (pthread_dependency.c:112)


Thread 0 crashed with ARM Thread State (64-bit):
    x0: 0x0000000161010000   x1: 0x000000010567b200   x2: 0x0000000161010000   x3: 0x000000000000001d
    x4: 0x000000000000004d   x5: 0x0000000000000068   x6: 0x0000000000000000   x7: 0x0000000000000250
    x8: 0x0000000000000000   x9: 0x0000000000000407  x10: 0x00000000007e6a00  x11: 0x0000000000bf3d01
   x12: 0x0000000161014000  x13: 0x0000000000004009  x14: 0x0000000161010000  x15: 0x0000000000003fff
   x16: 0x00000000649cf625  x17: 0x0000000000004334  x18: 0x0000000000000000  x19: 0x000000016f538690
   x20: 0x00000001046cc360  x21: 0x000000010465fd8e  x22: 0x000000016f538600  x23: 0x0000000104272380
   x24: 0x000000016f5386f0  x25: 0x00000001045e1bc0  x26: 0x000000016f5385f0  x27: 0x00000001046cc350
   x28: 0x00000001046cc348   fp: 0x000000016f538920   lr: 0x5b27148101b7437c
    sp: 0x000000016f5385f0   pc: 0x0000000101b736fc cpsr: 0x60000000
   esr: 0x92000046 (Data Abort) byte write Translation fault

Replies

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)  
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000000

This means the code has crashed because it tried to reference a

NULL
pointer. Now consider the backtrace of the crashing thread:
0   MYAPP           … mnq + 1612  
1   libobjc.A.dylib … load_images + 912 (objc-loadmethod.mm:204)  
2   libdyld.dylib   … invocation function for block in dyld3::AllImage…
3   libdyld.dylib   … dyld3::closure::Image::forEachImageToInitBefore(…
4   libdyld.dylib   … dyld3::AllImages::runStartupInitialzers() + 280 …
5   libdyld.dylib   … dyld3::entry_runInitialzersBottomUp(mach_header …
6   dyld            … dyld::launchWithClosure(dyld3::closure::LaunchCl…
7   dyld            … dyld::_main(macho_header const*, unsigned long, …
8   dyld            … dyldbootstrap::start(dyld3::MachOLoaded const*, …
9   dyld            … _dyld_start + 56

Frames 9 through 2 are dyld starting up your process. Specifically, frame 2 is dyld calling various image initialisation functions. Frame 1 is the Objective-C runtime image initialisation function. It’s probably calling a

+load
method in one of your classes. Finally, frame 0 is the frame that crashed. It it not symbolicated, making it very hard to know where you focus your investigations.

My recommendation is that you symbolicate you log and then investigate why that code might be dereferencing a

NULL
pointer.

Share and Enjoy

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

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