Skip to content

Commit cc5b498

Browse files
authored
Merge pull request #86050 from carlpeto/eng/PR-166532079
[Backtracing] Fix threads=all in SWIFT_BACKTRACE parameters
2 parents 62ff7d8 + 590f3d7 commit cc5b498

File tree

2 files changed

+52
-2
lines changed

2 files changed

+52
-2
lines changed

stdlib/public/runtime/Backtrace.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1176,10 +1176,10 @@ _swift_spawnBacktracer(CrashInfo *crashInfo)
11761176
backtracer_argv[16] = "preset";
11771177
break;
11781178
case ThreadsToShow::All:
1179-
backtracer_argv[16] = "all";
1179+
backtracer_argv[16] = "true";
11801180
break;
11811181
case ThreadsToShow::Crashed:
1182-
backtracer_argv[16] = "crashed";
1182+
backtracer_argv[16] = "false";
11831183
break;
11841184
}
11851185

test/Backtracing/CrashWithThreads.swift

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// RUN: %target-build-swift %s -Onone -g -o %t/CrashWithThreads
33
// RUN: %target-codesign %t/CrashWithThreads
44
// RUN: (env SWIFT_BACKTRACE=enable=yes,cache=no,swift-backtrace=%backtracer %target-run %t/CrashWithThreads 2>&1 || true) | %FileCheck -vv %s -dump-input-filter=all
5+
// RUN: (env SWIFT_BACKTRACE=enable=yes,cache=no,swift-backtrace=%backtracer,threads=all %target-run %t/CrashWithThreads 2>&1 || true) | %FileCheck -vv %s -dump-input-filter=all --check-prefix WITHTHREADSOPT
56

67
// UNSUPPORTED: use_os_stdlib
78
// UNSUPPORTED: back_deployment_runtime
@@ -80,8 +81,57 @@ while (true) {
8081
// CHECK-NEXT: 2 [ra] 0x{{[0-9a-f]+}} closure #{{[0-9]}} in spawnThread(_:) + {{[0-9]+}} in CrashWithThreads at {{.*}}/CrashWithThreads
8182
// CHECK-NEXT: 3 [ra] [thunk] 0x{{[0-9a-f]+}} @objc closure #{{[0-9]}} in spawnThread(_:) + {{[0-9]+}} in CrashWithThreads at {{.*}}<compiler-generated>
8283

84+
// CHECK: Thread 0{{( ".*")?}}:
85+
86+
// CHECK: 0 0x{{[0-9a-f]+}} __semwait_signal + {{[0-9]+}} in libsystem_kernel.dylib
87+
// CHECK-NEXT: 1 [ra] 0x{{[0-9a-f]+}} main + {{[0-9]+}} in CrashWithThreads at {{.*}}/CrashWithThreads
88+
// CHECK-NEXT: 2 [ra] [system] 0x{{[0-9a-f]+}} start + {{[0-9]+}} in dyld
89+
90+
// CHECK: Thread {{[1-9][0-9]*( ".*")?}}:
91+
92+
// CHECK: 0 0x{{[0-9a-f]+}} __semwait_signal + {{[0-9]+}} in libsystem_kernel.dylib
93+
// CHECK-NEXT: 1 [ra] 0x{{[0-9a-f]+}} closure #{{[0-9]*}} in spawnThread(_:) + {{[0-9]+}} in CrashWithThreads at {{.*}}/CrashWithThreads
94+
// CHECK-NEXT: 2 [ra] [thunk] 0x{{[0-9a-f]+}} @objc closure #{{[0-9]*}} in spawnThread(_:) + {{[0-9]+}} in CrashWithThreads at /<compiler-generated>
95+
// CHECK-NEXT: 3 [ra] 0x{{[0-9a-f]+}} _pthread_start + {{[0-9]+}} in libsystem_pthread.dylib
96+
97+
8398
// CHECK: Registers:
8499

85100
// CHECK: Images ({{[0-9]+}} omitted):
86101

87102
// CHECK: {{0x[0-9a-f]+}}–{{0x[0-9a-f]+}}{{ +}}{{([0-9a-f]+|<no build ID>)}}{{ +}}CrashWithThreads{{ +}}{{.*}}/CrashWithThreads
103+
104+
// WITHTHREADSOPT: *** Program crashed: Bad pointer dereference at 0x{{0+}}4 ***
105+
106+
// make sure there are no threads before the crashing thread (rdar://164566321)
107+
108+
// we expect the first thread not to be thread 0, it should be the crashing thread instead
109+
// WITHTHREADSOPT-NOT: Thread 0{{( ".*")?}}:
110+
111+
// we expect a crash on a thread other than 0
112+
// WITHTHREADSOPT: Thread {{[1-9][0-9]*}} {{(".*" )?}}crashed:
113+
114+
// WITHTHREADSOPT: 0 0x{{[0-9a-f]+}} reallyCrashMe() + {{[0-9]+}} in CrashWithThreads at {{.*}}/CrashWithThreads
115+
// WITHTHREADSOPT-NEXT: 1 [ra] 0x{{[0-9a-f]+}} crashMe() + {{[0-9]+}} in CrashWithThreads at {{.*}}/CrashWithThreads
116+
// WITHTHREADSOPT-NEXT: 2 [ra] 0x{{[0-9a-f]+}} closure #{{[0-9]}} in spawnThread(_:) + {{[0-9]+}} in CrashWithThreads at {{.*}}/CrashWithThreads
117+
// WITHTHREADSOPT-NEXT: 3 [ra] [thunk] 0x{{[0-9a-f]+}} @objc closure #{{[0-9]}} in spawnThread(_:) + {{[0-9]+}} in CrashWithThreads at {{.*}}<compiler-generated>
118+
119+
// WITHTHREADSOPT: Thread 0{{( ".*")?}}:
120+
121+
// WITHTHREADSOPT: 0 0x{{[0-9a-f]+}} __semwait_signal + {{[0-9]+}} in libsystem_kernel.dylib
122+
// WITHTHREADSOPT-NEXT: 1 [ra] 0x{{[0-9a-f]+}} main + {{[0-9]+}} in CrashWithThreads at {{.*}}/CrashWithThreads
123+
// WITHTHREADSOPT-NEXT: 2 [ra] [system] 0x{{[0-9a-f]+}} start + {{[0-9]+}} in dyld
124+
125+
// WITHTHREADSOPT: Thread {{[1-9][0-9]*( ".*")?}}:
126+
127+
// WITHTHREADSOPT: 0 0x{{[0-9a-f]+}} __semwait_signal + {{[0-9]+}} in libsystem_kernel.dylib
128+
// WITHTHREADSOPT-NEXT: 1 [ra] 0x{{[0-9a-f]+}} closure #{{[0-9]*}} in spawnThread(_:) + {{[0-9]+}} in CrashWithThreads at {{.*}}/CrashWithThreads
129+
// WITHTHREADSOPT-NEXT: 2 [ra] [thunk] 0x{{[0-9a-f]+}} @objc closure #{{[0-9]*}} in spawnThread(_:) + {{[0-9]+}} in CrashWithThreads at /<compiler-generated>
130+
// WITHTHREADSOPT-NEXT: 3 [ra] 0x{{[0-9a-f]+}} _pthread_start + {{[0-9]+}} in libsystem_pthread.dylib
131+
132+
// WITHTHREADSOPT: Registers:
133+
134+
// WITHTHREADSOPT: Images ({{[0-9]+}} omitted):
135+
136+
// WITHTHREADSOPT: {{0x[0-9a-f]+}}–{{0x[0-9a-f]+}}{{ +}}{{([0-9a-f]+|<no build ID>)}}{{ +}}CrashWithThreads{{ +}}{{.*}}/CrashWithThreads
137+

0 commit comments

Comments
 (0)