Skip to content

Commit 4c4f0d8

Browse files
committed
[lldb/crashlog] Add support for Last Exception Backtrace
This patch adds support to the "Last Exception Backtrace" to the `crashlog` command. This metadata is homologous to the "Application Specific Backtrace", however the format is closer to a regular stack frame. Since the thread that "contains" the "Last Exception Backtrace" doesn't really exist, this information is displayed when requesting an extended backtrace of the crashed thread, similarly to the "Application Specific Backtrace". To achieve that, this patch includes some refactors and fixes to the existing "Application Specific Backtrace" handling. rdar://113046509 Differential Revision: https://reviews.llvm.org/D157851 Signed-off-by: Med Ismail Bennani <[email protected]>
1 parent 3054a0c commit 4c4f0d8

File tree

5 files changed

+206
-8
lines changed

5 files changed

+206
-8
lines changed

lldb/examples/python/crashlog.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -586,10 +586,15 @@ def parse(self):
586586
self.parse_threads(self.data["threads"])
587587
if "asi" in self.data:
588588
self.crashlog.asi = self.data["asi"]
589+
# FIXME: With the current design, we can either show the ASI or Last
590+
# Exception Backtrace, not both. Is there a situation where we would
591+
# like to show both ?
589592
if "asiBacktraces" in self.data:
590593
self.parse_app_specific_backtraces(self.data["asiBacktraces"])
591594
if "lastExceptionBacktrace" in self.data:
592-
self.crashlog.asb = self.data["lastExceptionBacktrace"]
595+
self.parse_last_exception_backtraces(
596+
self.data["lastExceptionBacktrace"]
597+
)
593598
self.parse_errors(self.data)
594599
thread = self.crashlog.threads[self.crashlog.crashed_thread_idx]
595600
reason = self.parse_crash_reason(self.data["exception"])
@@ -792,11 +797,22 @@ def parse_asi_backtrace(self, thread, bt):
792797
return True
793798

794799
def parse_app_specific_backtraces(self, json_app_specific_bts):
795-
for idx, backtrace in enumerate(json_app_specific_bts):
796-
thread = self.crashlog.Thread(idx, True, self.crashlog.process_arch)
797-
thread.queue = "Application Specific Backtrace"
798-
if self.parse_asi_backtrace(thread, backtrace):
799-
self.crashlog.threads.append(thread)
800+
thread = self.crashlog.Thread(
801+
len(self.crashlog.threads), True, self.crashlog.process_arch
802+
)
803+
thread.queue = "Application Specific Backtrace"
804+
if self.parse_asi_backtrace(thread, json_app_specific_bts[0]):
805+
self.crashlog.threads.append(thread)
806+
else:
807+
print("error: Couldn't parse Application Specific Backtrace.")
808+
809+
def parse_last_exception_backtraces(self, json_last_exc_bts):
810+
thread = self.crashlog.Thread(
811+
len(self.crashlog.threads), True, self.crashlog.process_arch
812+
)
813+
thread.queue = "Last Exception Backtrace"
814+
self.parse_frames(thread, json_last_exc_bts)
815+
self.crashlog.threads.append(thread)
800816

801817
def parse_thread_registers(self, json_thread_state, prefix=None):
802818
registers = dict()

lldb/examples/python/scripted_process/crashlog_scripted_process.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ def __init__(self, process, args, crashlog_thread):
178178
self.idx = self.backing_thread.index
179179
self.tid = self.backing_thread.id
180180
if self.backing_thread.app_specific_backtrace:
181-
self.name = "Application Specific Backtrace - " + str(self.idx)
181+
self.name = "Application Specific Backtrace"
182182
else:
183183
self.name = self.backing_thread.name
184184
self.queue = self.backing_thread.queue

lldb/test/Shell/ScriptInterpreter/Python/Crashlog/Inputs/application_specific_info/asi.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
"asi" : {"CoreFoundation":["*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** __boundsFail: index 10 beyond bounds [0 .. 3]'"],"libsystem_c.dylib":["abort() called"],"libc++abi.dylib":["terminating with uncaught exception of type NSException"]},
3838
"asiBacktraces" : ["0 CoreFoundation 0x00000001a0a58418 __exceptionPreprocess + 176\n1 libobjc.A.dylib 0x00000001a05a2ea8 objc_exception_throw + 60\n2 CoreFoundation 0x00000001a0b3dcc4 -[__NSCFString characterAtIndex:].cold.1 + 0\n3 CoreFoundation 0x00000001a0b46af4 -[__NSArrayI getObjects:range:].cold.1 + 0\n4 CoreFoundation 0x00000001a09a12a4 __CFPropertyListIsArrayPlistAux + 0\n5 asi 0x00000001047e3ed0 main + 128\n6 dyld 0x00000001a05d3e50 start + 2544"],
3939
"extMods" : {"caller":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"system":{"thread_create":0,"thread_set_state":4,"task_for_pid":4},"targeted":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"warnings":0},
40-
"lastExceptionBacktrace" : [{"imageOffset":1033228,"symbol":"__exceptionPreprocess","symbolLocation":164,"imageIndex":5},{"imageOffset":110248,"symbol":"objc_exception_throw","symbolLocation":60,"imageIndex":4},{"imageOffset":1973444,"symbol":"-[__NSCFString characterAtIndex:].cold.1","symbolLocation":0,"imageIndex":5},{"imageOffset":2009844,"symbol":"-[__NSArrayI getObjects:range:].cold.1","symbolLocation":0,"imageIndex":5},{"imageOffset":283300,"symbol":"__CFPropertyListIsArrayPlistAux","symbolLocation":0,"imageIndex":5},{"imageOffset":16080,"symbol":"main","symbolLocation":128,"imageIndex":6},{"imageOffset":24144,"symbol":"start","symbolLocation":2544,"imageIndex":7}],
4140
"faultingThread" : 0,
4241
"threads" : [{"triggered":true,"id":1767667,"threadState":{"x":[{"value":0},{"value":0},{"value":0},{"value":0},{"value":6988476661},{"value":6096540848},{"value":110},{"value":512},{"value":502518818286880576},{"value":502518810403597248},{"value":512},{"value":11},{"value":11},{"value":2095104},{"value":2043},{"value":2195963912},{"value":328},{"value":8604857144},{"value":0},{"value":6},{"value":8522738816,"symbolLocation":0,"symbol":"_main_thread"},{"value":259},{"value":8522739040,"symbolLocation":224,"symbol":"_main_thread"},{"value":105553117118464},{"value":8528036928,"symbolLocation":0,"symbol":"gProcessInfo"},{"value":0},{"value":0},{"value":0},{"value":0}],"flavor":"ARM_THREAD_STATE64","lr":{"value":6988750060},"cpsr":{"value":1073745920},"fp":{"value":6096540704},"sp":{"value":6096540672},"esr":{"value":1442840704,"description":" Address size fault"},"pc":{"value":6988526116,"matchesCrashFrame":1},"far":{"value":5452680264}},"queue":"com.apple.main-thread","frames":[{"imageOffset":37412,"symbol":"__pthread_kill","symbolLocation":8,"imageIndex":0},{"imageOffset":27884,"symbol":"pthread_kill","symbolLocation":288,"imageIndex":1},{"imageOffset":496328,"symbol":"abort","symbolLocation":180,"imageIndex":2},{"imageOffset":72472,"symbol":"abort_message","symbolLocation":132,"imageIndex":3},{"imageOffset":6668,"symbol":"demangling_terminate_handler()","symbolLocation":336,"imageIndex":3},{"imageOffset":145252,"symbol":"_objc_terminate()","symbolLocation":144,"imageIndex":4},{"imageOffset":69300,"symbol":"std::__terminate(void (*)())","symbolLocation":20,"imageIndex":3},{"imageOffset":80940,"symbol":"__cxxabiv1::failed_throw(__cxxabiv1::__cxa_exception*)","symbolLocation":36,"imageIndex":3},{"imageOffset":80856,"symbol":"__cxa_throw","symbolLocation":140,"imageIndex":3},{"imageOffset":110600,"symbol":"objc_exception_throw","symbolLocation":412,"imageIndex":4},{"imageOffset":1973444,"symbol":"_CFThrowFormattedException","symbolLocation":108,"imageIndex":5},{"imageOffset":2009844,"symbol":"__boundsFail","symbolLocation":92,"imageIndex":5},{"imageOffset":283300,"symbol":"-[__NSArrayI objectAtIndex:]","symbolLocation":60,"imageIndex":5},{"imageOffset":16080,"symbol":"main","symbolLocation":128,"imageIndex":6},{"imageOffset":24144,"symbol":"start","symbolLocation":2544,"imageIndex":7}]}],
4342
"usedImages" : [
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
{"app_name":"asi","timestamp":"2022-10-07 11:31:53.00 -0700","app_version":"","slice_uuid":"2cee52c2-2d9c-3e64-bdd0-c43ccd1b37ec","build_version":"","platform":1,"share_with_app_devs":0,"is_first_party":1,"bug_type":"309","os_version":"macOS 13.0","roots_installed":0,"incident_id":"E62DF457-8BBC-4E92-AECA-11D1B55246E3","name":"asi"}
2+
{
3+
"uptime" : 90000,
4+
"procRole" : "Unspecified",
5+
"version" : 2,
6+
"userID" : 501,
7+
"deployVersion" : 210,
8+
"modelCode" : "Mac13,1",
9+
"coalitionID" : 495,
10+
"osVersion" : {
11+
"train" : "macOS 13.0",
12+
"build" : "",
13+
"releaseType" : ""
14+
},
15+
"captureTime" : "2022-10-07 11:31:52.6211 -0700",
16+
"incident" : "E62DF457-8BBC-4E92-AECA-11D1B55246E3",
17+
"pid" : 96535,
18+
"translated" : false,
19+
"cpuType" : "ARM-64",
20+
"roots_installed" : 0,
21+
"bug_type" : "309",
22+
"procLaunch" : "2022-10-07 11:31:52.4969 -0700",
23+
"procStartAbsTime" : 2167631132529,
24+
"procExitAbsTime" : 2167634104978,
25+
"procName" : "asi",
26+
"procPath" : "\/Users\/USER\/*\/asi",
27+
"parentProc" : "zsh",
28+
"parentPid" : 96199,
29+
"coalitionName" : "com.apple.Terminal",
30+
"crashReporterKey" : "533C17C1-DBB1-4134-1FDE-68346F18AAA2",
31+
"responsiblePid" : 615,
32+
"responsibleProc" : "Terminal",
33+
"wakeTime" : 1351,
34+
"sleepWakeUUID" : "AD23E0A0-A4A5-4B6B-925F-2FC3665C17BF",
35+
"sip" : "enabled",
36+
"exception" : {"codes":"0x0000000000000000, 0x0000000000000000","rawCodes":[0,0],"type":"EXC_CRASH","signal":"SIGABRT"},
37+
"asi" : {"CoreFoundation":["*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** __boundsFail: index 10 beyond bounds [0 .. 3]'"],"libsystem_c.dylib":["abort() called"],"libc++abi.dylib":["terminating with uncaught exception of type NSException"]},
38+
"asiBacktraces" : ["0 CoreFoundation 0x00000001a0a58418 __exceptionPreprocess + 176\n1 libobjc.A.dylib 0x00000001a05a2ea8 objc_exception_throw + 60\n2 CoreFoundation 0x00000001a0b3dcc4 -[__NSCFString characterAtIndex:].cold.1 + 0\n3 CoreFoundation 0x00000001a0b46af4 -[__NSArrayI getObjects:range:].cold.1 + 0\n4 CoreFoundation 0x00000001a09a12a4 __CFPropertyListIsArrayPlistAux + 0\n5 asi 0x00000001047e3ed0 main + 128\n6 dyld 0x00000001a05d3e50 start + 2544"],
39+
"extMods" : {"caller":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"system":{"thread_create":0,"thread_set_state":4,"task_for_pid":4},"targeted":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"warnings":0},
40+
"lastExceptionBacktrace" : [{"imageOffset":1033228,"symbol":"__exceptionPreprocess","symbolLocation":164,"imageIndex":5},{"imageOffset":110248,"symbol":"objc_exception_throw","symbolLocation":60,"imageIndex":4},{"imageOffset":1973444,"symbol":"-[__NSCFString characterAtIndex:].cold.1","symbolLocation":0,"imageIndex":5},{"imageOffset":2009844,"symbol":"-[__NSArrayI getObjects:range:].cold.1","symbolLocation":0,"imageIndex":5},{"imageOffset":283300,"symbol":"__CFPropertyListIsArrayPlistAux","symbolLocation":0,"imageIndex":5},{"imageOffset":16080,"symbol":"main","symbolLocation":128,"imageIndex":6},{"imageOffset":24144,"symbol":"start","symbolLocation":2544,"imageIndex":7}],
41+
"faultingThread" : 0,
42+
"threads" : [{"triggered":true,"id":1767667,"threadState":{"x":[{"value":0},{"value":0},{"value":0},{"value":0},{"value":6988476661},{"value":6096540848},{"value":110},{"value":512},{"value":502518818286880576},{"value":502518810403597248},{"value":512},{"value":11},{"value":11},{"value":2095104},{"value":2043},{"value":2195963912},{"value":328},{"value":8604857144},{"value":0},{"value":6},{"value":8522738816,"symbolLocation":0,"symbol":"_main_thread"},{"value":259},{"value":8522739040,"symbolLocation":224,"symbol":"_main_thread"},{"value":105553117118464},{"value":8528036928,"symbolLocation":0,"symbol":"gProcessInfo"},{"value":0},{"value":0},{"value":0},{"value":0}],"flavor":"ARM_THREAD_STATE64","lr":{"value":6988750060},"cpsr":{"value":1073745920},"fp":{"value":6096540704},"sp":{"value":6096540672},"esr":{"value":1442840704,"description":" Address size fault"},"pc":{"value":6988526116,"matchesCrashFrame":1},"far":{"value":5452680264}},"queue":"com.apple.main-thread","frames":[{"imageOffset":37412,"symbol":"__pthread_kill","symbolLocation":8,"imageIndex":0},{"imageOffset":27884,"symbol":"pthread_kill","symbolLocation":288,"imageIndex":1},{"imageOffset":496328,"symbol":"abort","symbolLocation":180,"imageIndex":2},{"imageOffset":72472,"symbol":"abort_message","symbolLocation":132,"imageIndex":3},{"imageOffset":6668,"symbol":"demangling_terminate_handler()","symbolLocation":336,"imageIndex":3},{"imageOffset":145252,"symbol":"_objc_terminate()","symbolLocation":144,"imageIndex":4},{"imageOffset":69300,"symbol":"std::__terminate(void (*)())","symbolLocation":20,"imageIndex":3},{"imageOffset":80940,"symbol":"__cxxabiv1::failed_throw(__cxxabiv1::__cxa_exception*)","symbolLocation":36,"imageIndex":3},{"imageOffset":80856,"symbol":"__cxa_throw","symbolLocation":140,"imageIndex":3},{"imageOffset":110600,"symbol":"objc_exception_throw","symbolLocation":412,"imageIndex":4},{"imageOffset":1973444,"symbol":"_CFThrowFormattedException","symbolLocation":108,"imageIndex":5},{"imageOffset":2009844,"symbol":"__boundsFail","symbolLocation":92,"imageIndex":5},{"imageOffset":283300,"symbol":"-[__NSArrayI objectAtIndex:]","symbolLocation":60,"imageIndex":5},{"imageOffset":16080,"symbol":"main","symbolLocation":128,"imageIndex":6},{"imageOffset":24144,"symbol":"start","symbolLocation":2544,"imageIndex":7}]}],
43+
"usedImages" : [
44+
{
45+
"source" : "P",
46+
"arch" : "arm64e",
47+
"base" : 6988488704,
48+
"size" : 233468,
49+
"uuid" : "15147572-bf8d-359e-a6bb-97f4489e7f78",
50+
"path" : "\/usr\/lib\/system\/libsystem_kernel.dylib",
51+
"name" : "libsystem_kernel.dylib"
52+
},
53+
{
54+
"source" : "P",
55+
"arch" : "arm64e",
56+
"base" : 6988722176,
57+
"size" : 53244,
58+
"uuid" : "19a65066-147a-37e1-be56-bd78821ef285",
59+
"path" : "\/usr\/lib\/system\/libsystem_pthread.dylib",
60+
"name" : "libsystem_pthread.dylib"
61+
},
62+
{
63+
"source" : "P",
64+
"arch" : "arm64e",
65+
"base" : 6987440128,
66+
"size" : 528372,
67+
"uuid" : "cd2fafb3-239f-3929-9b9d-ed1768c25159",
68+
"path" : "\/usr\/lib\/system\/libsystem_c.dylib",
69+
"name" : "libsystem_c.dylib"
70+
},
71+
{
72+
"source" : "P",
73+
"arch" : "arm64e",
74+
"base" : 6988390400,
75+
"size" : 98300,
76+
"uuid" : "88025d90-bb66-34a8-8628-91ec5b3fb900",
77+
"path" : "\/usr\/lib\/libc++abi.dylib",
78+
"name" : "libc++abi.dylib"
79+
},
80+
{
81+
"source" : "P",
82+
"arch" : "arm64e",
83+
"base" : 6985121792,
84+
"size" : 286112,
85+
"uuid" : "9a019b6d-aeb6-3a3e-9c74-717c18dd5d43",
86+
"path" : "\/usr\/lib\/libobjc.A.dylib",
87+
"name" : "libobjc.A.dylib"
88+
},
89+
{
90+
"source" : "P",
91+
"arch" : "arm64e",
92+
"base" : 6989135872,
93+
"CFBundleShortVersionString" : "6.9",
94+
"CFBundleIdentifier" : "com.apple.CoreFoundation",
95+
"size" : 5079040,
96+
"uuid" : "0cb1d6ec-b4ee-33d5-9828-29db31cad6fc",
97+
"path" : "\/System\/Library\/Frameworks\/CoreFoundation.framework\/Versions\/A\/CoreFoundation",
98+
"name" : "CoreFoundation",
99+
"CFBundleVersion" : "1953.1"
100+
},
101+
{
102+
"source" : "P",
103+
"arch" : "arm64",
104+
"base" : 4370333696,
105+
"size" : 16384,
106+
"uuid" : "2cee52c2-2d9c-3e64-bdd0-c43ccd1b37ec",
107+
"path" : "\/Users\/USER\/*\/asi",
108+
"name" : "asi"
109+
},
110+
{
111+
"source" : "P",
112+
"arch" : "arm64e",
113+
"base" : 6985408512,
114+
"size" : 566452,
115+
"uuid" : "0d973234-ed2d-3a07-889a-46b424e29ae0",
116+
"path" : "\/usr\/lib\/dyld",
117+
"name" : "dyld"
118+
}
119+
],
120+
"sharedCache" : {
121+
"base" : 6984761344,
122+
"size" : 3405660160,
123+
"uuid" : "5fe7ffdc-ba32-33ba-8827-d3d9094c6bc3"
124+
},
125+
"vmSummary" : "ReadOnly portion of Libraries: Total=861.7M resident=0K(0%) swapped_out_or_unallocated=861.7M(100%)\nWritable regions: Total=666.4M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=666.4M(100%)\n\n VIRTUAL REGION \nREGION TYPE SIZE COUNT (non-coalesced) \n=========== ======= ======= \nActivity Tracing 256K 1 \nKernel Alloc Once 32K 1 \nMALLOC 154.2M 14 \nMALLOC guard page 96K 5 \nMALLOC_MEDIUM (reserved) 120.0M 1 reserved VM address space (unallocated)\nMALLOC_NANO (reserved) 384.0M 1 reserved VM address space (unallocated)\nSTACK GUARD 56.0M 1 \nStack 8176K 1 \n__AUTH 307K 58 \n__AUTH_CONST 3560K 142 \n__DATA 1494K 136 \n__DATA_CONST 3988K 144 \n__DATA_DIRTY 361K 58 \n__LINKEDIT 763.4M 2 \n__OBJC_CONST 289K 36 \n__OBJC_RO 65.1M 1 \n__OBJC_RW 1983K 1 \n__TEXT 98.3M 151 \ndyld private memory 256K 1 \nshared memory 80K 4 \n=========== ======= ======= \nTOTAL 1.6G 759 \nTOTAL, minus reserved VM space 1.1G 759 \n",
126+
"legacyInfo" : {
127+
"threadTriggered" : {
128+
"queue" : "com.apple.main-thread"
129+
}
130+
}
131+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# REQUIRES: python, native && target-aarch64 && system-darwin
2+
3+
# RUN: mkdir -p %t.dir
4+
# RUN: yaml2obj %S/Inputs/application_specific_info/asi.yaml > %t.dir/asi
5+
# RUN: %lldb -o 'command script import lldb.macosx.crashlog' \
6+
# RUN: -o 'crashlog -a -i -t %t.dir/asi %S/Inputs/application_specific_info/leb.txt' \
7+
# RUN: -o "thread list" -o "bt all" 2>&1 | FileCheck %s
8+
9+
# CHECK: "crashlog" {{.*}} commands have been installed, use the "--help" options on these commands
10+
11+
# CHECK: (lldb) process status --verbose
12+
# CHECK-NEXT: Process 96535 stopped
13+
# CHECK-NEXT: * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_CRASH (code=0, subcode=0x0)
14+
# CHECK-NEXT: frame #0: 0x00000001a08c7224{{.*}}[artificial]
15+
# CHECK: Extended Crash Information:
16+
# CHECK: Application Specific Information:
17+
# CHECK-NEXT: CoreFoundation: *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** __boundsFail: index 10 beyond bounds [0 .. 3]'
18+
# CHECK-NEXT: libc++abi.dylib: terminating with uncaught exception of type NSException
19+
# CHECK-NEXT: libsystem_c.dylib: abort() called
20+
21+
22+
# CHECK: (lldb) thread backtrace --extended true
23+
# CHECK: * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_CRASH (code=0, subcode=0x0)
24+
# CHECK-NEXT: * frame #0: 0x00000001a08c7224{{.*}}[artificial]
25+
# CHECK-NEXT: frame #1: 0x00000001a08fdceb{{.*}}[artificial]
26+
# CHECK-NEXT: frame #2: 0x00000001a08372c7{{.*}}[artificial]
27+
# CHECK-NEXT: frame #3: 0x00000001a08b7b17{{.*}}[artificial]
28+
# CHECK-NEXT: frame #4: 0x00000001a08a7a0b{{.*}}[artificial]
29+
# CHECK-NEXT: frame #5: 0x00000001a05ab763{{.*}}[artificial]
30+
# CHECK-NEXT: frame #6: 0x00000001a08b6eb3{{.*}}[artificial]
31+
# CHECK-NEXT: frame #7: 0x00000001a08b9c2b{{.*}}[artificial]
32+
# CHECK-NEXT: frame #8: 0x00000001a08b9bd7{{.*}}[artificial]
33+
# CHECK-NEXT: frame #9: 0x00000001a05a3007{{.*}}[artificial]
34+
# CHECK-NEXT: frame #10: 0x00000001a0b3dcc3{{.*}}[artificial]
35+
# CHECK-NEXT: frame #11: 0x00000001a0b46af3{{.*}}[artificial]
36+
# CHECK-NEXT: frame #12: 0x00000001a09a12a3{{.*}}[artificial]
37+
# CHECK-NEXT: frame #13: 0x00000001047e3ecf asi`main{{.*}}[artificial]
38+
# CHECK-NEXT: frame #14: 0x00000001a05d3e4f{{.*}}[artificial]
39+
40+
# CHECK: thread #4294967295: tid = 0x0001, 0x00000001a0a5840c{{.*}}, queue = 'Application Specific Backtrace'
41+
# CHECK-NEXT: frame #0: 0x00000001a0a5840c{{.*}}
42+
# CHECK-NEXT: frame #1: 0x00000001a05a2ea7{{.*}}
43+
# CHECK-NEXT: frame #2: 0x00000001a0b3dcc3{{.*}}
44+
# CHECK-NEXT: frame #3: 0x00000001a0b46af3{{.*}}
45+
# CHECK-NEXT: frame #4: 0x00000001a09a12a3{{.*}}
46+
# CHECK-NEXT: frame #5: 0x00000001047e3ecf asi`main{{.*}}
47+
# CHECK-NEXT: frame #6: 0x00000001a05d3e4f
48+
49+
50+
# CHECK: (lldb) thread list
51+
# CHECK-NEXT: Process 96535 stopped
52+
# CHECK-NEXT: * thread #1: tid = 0x1af8f3, 0x00000001a08c7224{{.*}}, queue = 'com.apple.main-thread', stop reason = EXC_CRASH (code=0, subcode=0x0)

0 commit comments

Comments
 (0)