Skip to content

Commit 2f0e42b

Browse files
committed
[Backtracing] Use stderr by default unless interactive.
This means we don't need to specify `output-to` in CI. rdar://110371557
1 parent 5d03a72 commit 2f0e42b

File tree

4 files changed

+14
-3
lines changed

4 files changed

+14
-3
lines changed

include/swift/Runtime/Backtrace.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ enum class SanitizePaths {
109109
};
110110

111111
enum class OutputTo {
112+
Auto = -1,
112113
Stdout = 0,
113114
Stderr = 2,
114115
};

stdlib/public/runtime/Backtrace.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ SWIFT_RUNTIME_STDLIB_INTERNAL BacktraceSettings _swift_backtraceSettings = {
123123
true,
124124

125125
// outputTo,
126-
OutputTo::Stdout,
126+
OutputTo::Auto,
127127

128128
// swiftBacktracePath
129129
NULL,
@@ -322,6 +322,13 @@ BacktraceInitializer::BacktraceInitializer() {
322322
_swift_backtraceSettings.preset = Preset::Full;
323323
}
324324

325+
if (_swift_backtraceSettings.outputTo == OutputTo::Auto) {
326+
if (_swift_backtraceSettings.interactive == OnOffTty::On)
327+
_swift_backtraceSettings.outputTo = OutputTo::Stdout;
328+
else
329+
_swift_backtraceSettings.outputTo = OutputTo::Stderr;
330+
}
331+
325332
#if !defined(SWIFT_RUNTIME_FIXED_BACKTRACER_PATH)
326333
if (_swift_backtraceSettings.enabled == OnOffTty::On
327334
&& !_swift_backtraceSettings.swiftBacktracePath) {
@@ -648,7 +655,9 @@ _swift_processBacktracingSetting(llvm::StringRef key,
648655
} else if (key.equals_insensitive("cache")) {
649656
_swift_backtraceSettings.cache = parseBoolean(value);
650657
} else if (key.equals_insensitive("output-to")) {
651-
if (value.equals_insensitive("stdout"))
658+
if (value.equals_insensitive("auto"))
659+
_swift_backtraceSettings.outputTo = OutputTo::Auto;
660+
else if (value.equals_insensitive("stdout"))
652661
_swift_backtraceSettings.outputTo = OutputTo::Stdout;
653662
else if (value.equals_insensitive("stderr"))
654663
_swift_backtraceSettings.outputTo = OutputTo::Stderr;

stdlib/public/runtime/CrashHandlerMacOS.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,7 @@ run_backtracer()
428428
case OutputTo::Stdout:
429429
backtracer_argv[30] = "stdout";
430430
break;
431+
case OutputTo::Auto: // Shouldn't happen, but if it does pick stderr
431432
case OutputTo::Stderr:
432433
backtracer_argv[30] = "stderr";
433434
break;

test/lit.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,7 @@ if backtracing is not None:
494494

495495
backtrace_on_crash = lit_config.params.get('backtrace_on_crash', None)
496496
if backtrace_on_crash is not None:
497-
config.environment['SWIFT_BACKTRACE'] = 'enable=on,output-to=stderr'
497+
config.environment['SWIFT_BACKTRACE'] = 'enable=on'
498498

499499
config.available_features.add('lld_lto')
500500

0 commit comments

Comments
 (0)