Skip to content

Get stack trace on crash when using LLDB #186366

Description

@vashworth

When using Xcode 26, we use devicectl and lldb to deploy to a physical iOS device. When the app crashes, we get logs like this:

[+4293 ms] [devicectl]: 2026-05-08 12:15:11.023818-0500 Runner[1173:276000] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** __boundsFail: index 2 beyond bounds [0 .. 1]'
[   +1 ms] [devicectl]: *** First throw call stack:
[        ] [devicectl]: (0x1a1cefc70 0x19e7c5224 0x1a1d8c38c 0x1a1c4fd94 0x1020ff604 0x1a78848f8 0x1a78a54fc 0x1a788a5e8 0x1a789e6c0 0x1a788b0c8 0x1a78a4214 0x1a788ddd0 0x1a78a7330 0x1a78a48bc 0x2b560156c 0x1a1bfce5c 0x1a1c3f384 0x1a1c3f2ac 0x1a1c0a368 0x1a1c091d0 0x246d01498 0x1a78cd2cc 0x1a7838158 0x100cbc0e4 0x19e81dc1c)
[        ] [devicectl]: *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** __boundsFail: index 2 beyond bounds [0 .. 1]'
[        ] [devicectl]: *** First throw call stack:
[        ] [devicectl]: (0x1a1cefc70 0x19e7c5224 0x1a1d8c38c 0x1a1c4fd94 0x1020ff604 0x1a78848f8 0x1a78a54fc 0x1a788a5e8 0x1a789e6c0 0x1a788b0c8 0x1a78a4214 0x1a788ddd0 0x1a78a7330 0x1a78a48bc 0x2b560156c 0x1a1bfce5c 0x1a1c3f384 0x1a1c3f2ac 0x1a1c0a368 0x1a1c091d0 0x246d01498 0x1a78cd2cc 0x1a7838158 0x100cbc0e4 0x19e81dc1c)
[        ] [devicectl]: libc++abi: terminating due to uncaught exception of type NSException
[  +16 ms] [lldb]: Process 1173 stopped
[   +1 ms] [lldb]: * thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
[        ] [lldb]:     frame #0: 0x00000002502731d0 libsystem_kernel.dylib`__pthread_kill + 8
[        ] [lldb]: libsystem_kernel.dylib`__pthread_kill:
[        ] [lldb]: ->  0x2502731d0 <+8>:  b.lo   0x2502731f0               ; <+40>
[        ] [lldb]:     0x2502731d4 <+12>: pacibsp 
[        ] [lldb]:     0x2502731d8 <+16>: stp    x29, x30, [sp, #-0x10]!
[        ] [lldb]:     0x2502731dc <+20>: mov    x29, sp
[        ] [lldb]: Target 0: (Runner) stopped.

However, we can get even better stack traces if we send LLDB the following command: thread backtrace all or thread backtrace 1.

[+3645 ms] [lldb]: * thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
[        ] [lldb]:   * frame #0: 0x00000002502731d0 libsystem_kernel.dylib`__pthread_kill + 8
[        ] [lldb]:     frame #1: 0x00000002009717dc libsystem_pthread.dylib`pthread_kill + 268
[        ] [lldb]:     frame #2: 0x00000001ad754de4 libsystem_c.dylib`abort + 148
[        ] [lldb]:     frame #3: 0x000000019e8c5fd4 libc++abi.dylib`__abort_message + 132
[        ] [lldb]:     frame #4: 0x000000019e8c7b90 libc++abi.dylib`demangling_terminate_handler() + 296
[        ] [lldb]:     frame #5: 0x000000019e7c7868 libobjc.A.dylib`_objc_terminate() + 156
[        ] [lldb]:     frame #6: 0x000000019e8d21f8 libc++abi.dylib`std::__terminate(void (*)()) + 16
[        ] [lldb]:     frame #7: 0x000000019e8d3e18 libc++abi.dylib`__cxxabiv1::failed_throw(__cxxabiv1::__cxa_exception*) + 88
[        ] [lldb]:     frame #8: 0x000000019e8c0360 libc++abi.dylib`__cxa_throw + 92
[        ] [lldb]:     frame #9: 0x000000019e7c538c libobjc.A.dylib`objc_exception_throw + 448
[        ] [lldb]:     frame #10: 0x00000001a1d8c38c CoreFoundation`__boundsFail + 480
[        ] [lldb]:     frame #11: 0x00000001a1c4fd94 CoreFoundation`-[__NSArrayI objectAtIndex:] + 44
[        ] [lldb]:     frame #12: 0x00000001020ff604 Flutter`-[FlutterViewController dispatchTouches:pointerDataChangeOverride:event:](self=0x00000001014de7a0, _cmd=<unavailable>, touches=1 element, overridden_change=0x0000000000000000, event=0x0000000101cc0800) at FlutterViewController.mm:1097:22 [opt]
[        ] [lldb]:     frame #13: 0x00000001a78848f8 UIKitCore`forwardTouchMethod + 360
[        ] [lldb]:     frame #14: 0x00000001a78a54fc UIKitCore`-[UIWindow _sendTouchesForEvent:] + 452
[        ] [lldb]:     frame #15: 0x00000001a788a5e8 UIKitCore`-[UIWindow sendEvent:] + 3556
[        ] [lldb]:     frame #16: 0x00000001a789e6c0 UIKitCore`-[UIApplication sendEvent:] + 408
[        ] [lldb]:     frame #17: 0x00000001a788b0c8 UIKitCore`__dispatchPreprocessedEventFromEventQueue + 1024
[        ] [lldb]:     frame #18: 0x00000001a78a4214 UIKitCore`__processEventQueue + 4932
[        ] [lldb]:     frame #19: 0x00000001a788ddd0 UIKitCore`updateCycleEntry + 176
[        ] [lldb]:     frame #20: 0x00000001a78a7330 UIKitCore`_UIUpdateSequenceRunNext + 128
[        ] [lldb]:     frame #21: 0x00000001a78a48bc UIKitCore`schedulerStepScheduledMainSectionContinue + 60
[        ] [lldb]:     frame #22: 0x00000002b560156c UpdateCycle`UC::DriverCore::continueProcessing() + 84
[        ] [lldb]:     frame #23: 0x00000001a1bfce5c CoreFoundation`__CFMachPortPerform + 168
[        ] [lldb]:     frame #24: 0x00000001a1c3f384 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 60
[        ] [lldb]:     frame #25: 0x00000001a1c3f2ac CoreFoundation`__CFRunLoopDoSource1 + 504
[        ] [lldb]:     frame #26: 0x00000001a1c0a368 CoreFoundation`__CFRunLoopRun + 2168
[        ] [lldb]:     frame #27: 0x00000001a1c091d0 CoreFoundation`_CFRunLoopRunSpecificWithOptions + 532
[        ] [lldb]:     frame #28: 0x0000000246d01498 GraphicsServices`GSEventRunModal + 120
[        ] [lldb]:     frame #29: 0x00000001a78cd2cc UIKitCore`-[UIApplication _run] + 796
[        ] [lldb]:     frame #30: 0x00000001a7838158 UIKitCore`UIApplicationMain + 332
[        ] [lldb]:     frame #31: 0x0000000100cbc0e4 Runner`main(argc=<unavailable>, argv=<unavailable>) at main.m:10:16 [opt]
[        ] [lldb]:     frame #32: 0x000000019e81dc1c dyld`start + 6928

Metadata

Metadata

Assignees

Labels

P1High-priority issues at the top of the work listplatform-iosiOS applications specificallyteam-iosOwned by iOS platform teamtoolAffects the "flutter" command-line tool. See also t: labels.triaged-iosTriaged by iOS platform team

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions