mirror of
https://github.com/apple/swift.git
synced 2026-11-01 23:11:50 +01:00
rdar://181843264 relates on this, we had disabled all unit tests for remote running for any tests using preset=friendly on the backtracer anywhere in the test. This is because friendly needs access to source code files which are not present when doing remote run. Split unit tests into a bit that can be run remotely like most tests, and a bit that uses preset=friendly that can't.
119 lines
12 KiB
Plaintext
119 lines
12 KiB
Plaintext
// RUN: %empty-directory(%t)
|
||
// RUN: %target-build-swift %S/Inputs/StackOverflow.swift -parse-as-library -Onone %swift-debug-flags -o %t/stack-overflow.exe
|
||
// RUN: %target-codesign %t/stack-overflow.exe
|
||
// RUN: ! env %env-SWIFT_BACKTRACE=enable=yes,cache=no %target-run %t/stack-overflow.exe %t/stack-overflow.exe.dSYM > %t/StackOverflow.out 2>&1
|
||
// RUN: %FileCheck %s < %t/StackOverflow.out
|
||
// RUN: ! env %env-SWIFT_BACKTRACE=limit=18,top=6,enable=yes,cache=no %target-run %t/stack-overflow.exe %t/stack-overflow.exe.dSYM > %t/Limited.out 2>&1
|
||
// RUN: %FileCheck %s --check-prefix LIMITED < %t/Limited.out
|
||
|
||
// UNSUPPORTED: use_os_stdlib
|
||
// UNSUPPORTED: back_deployment_runtime
|
||
// UNSUPPORTED: asan
|
||
// REQUIRES: executable_test
|
||
// REQUIRES: backtracing
|
||
// REQUIRES: OS=macosx || OS=linux-gnu || OS=windows-msvc
|
||
|
||
// FIXME: We have to allow all the line numbers below to be off-by-one because
|
||
// of a CoreSymbolication bug. This also means we have to skip checking the
|
||
// source code output because currently, it's pointing at the wrong line :-(
|
||
|
||
// CHECK: *** Program crashed: {{(Bad pointer dereference|Stack overflow)}} at 0x{{[0-9a-f]+}} ***
|
||
|
||
// CHECK: Thread 0 {{(".*" )?}}crashed:
|
||
|
||
// CHECK: 0 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift
|
||
// CHECK-NEXT: 1 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 2 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 3 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 4 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 5 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 6 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 7 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 8 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 9 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 10 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 11 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 12 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 13 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 14 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 15 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 16 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 17 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 18 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 19 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 20 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 21 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 22 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 23 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 24 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 25 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 26 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 27 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 28 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 29 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 30 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 31 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 32 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 33 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 34 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 35 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 36 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 37 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 38 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 39 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 40 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 41 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 42 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 43 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 44 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 45 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: 46 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: ...
|
||
// CHECK-NEXT: {{[0-9]+}} [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: {{[0-9]+}} [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: {{[0-9]+}} [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: {{[0-9]+}} [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: {{[0-9]+}} [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: {{[0-9]+}} [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: {{[0-9]+}} [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: {{[0-9]+}} [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: {{[0-9]+}} [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// CHECK-NEXT: {{[0-9]+}} [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
|
||
// The exact number of recursion frames varies from platform to platform;
|
||
// on macOS, there is a hidden dyld frame at the very top, which takes up one
|
||
// of the 16 frames. On Linux, we may have a couple of libc frames as well.
|
||
|
||
// CHECK: {{[0-9]+}} [ra] 0x{{[0-9a-f]+}} static StackOverflow.main() + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:11:5
|
||
// CHECK-NEXT: {{[0-9]+}} [ra] [system] 0x{{[0-9a-f]+}} static StackOverflow.$main() + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}<compiler-generated>
|
||
// CHECK-NEXT: {{[0-9]+}} [ra] [system] 0x{{[0-9a-f]+}} main + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift
|
||
|
||
// CHECK: Registers:
|
||
|
||
// CHECK: Images ({{[0-9]+}} omitted):
|
||
|
||
// CHECK: {{0x[0-9a-f]+}}–{{0x[0-9a-f]+}}{{ +}}{{[0-9a-f]+|<no build ID>}}{{ +}}stack-overflow.exe{{ +}}{{.*[\\/]}}stack-overflow.exe
|
||
|
||
// LIMITED: *** Program crashed: {{(Bad pointer dereference|Stack overflow)}} at 0x{{[0-9a-f]+}} ***
|
||
|
||
// LIMITED: Thread 0 {{(".*" )?}}crashed:
|
||
|
||
// LIMITED: 0 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift
|
||
// LIMITED-NEXT: 1 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// LIMITED-NEXT: 2 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// LIMITED-NEXT: 3 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// LIMITED-NEXT: 4 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// LIMITED-NEXT: 5 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// LIMITED-NEXT: 6 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// LIMITED-NEXT: 7 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// LIMITED-NEXT: 8 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// LIMITED-NEXT: 9 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// LIMITED-NEXT: 10 [ra] 0x{{[0-9a-f]+}} recurse(_:) + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:5:3
|
||
// LIMITED-NEXT: ...
|
||
|
||
// N.B. There can be platform differences surrounding the exact frame counts
|
||
|
||
// LIMITED: {{[0-9]+}} [ra] 0x{{[0-9a-f]+}} static StackOverflow.main() + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift:11:5
|
||
// LIMITED-NEXT: {{[0-9]+}} [ra] [system] 0x{{[0-9a-f]+}} static StackOverflow.$main() + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}<compiler-generated>
|
||
// LIMITED-NEXT: {{[0-9]+}} [ra] [system] 0x{{[0-9a-f]+}} main + {{[0-9]+}} in stack-overflow.exe at {{.*[\\/]}}StackOverflow.swift
|