about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2015-07-21 08:26:19 +0000
committerbors <bors@rust-lang.org>2015-07-21 08:26:19 +0000
commit247a0d185446fb145e1e5843c44c97b9a564e135 (patch)
tree991585e1ba9f5d980f46f4a0cc0833152c522d4e
parent691ce23479b08a292ad106606dab347306fc381f (diff)
parent013d47b19b25b94e9740f725425bc836bac6efde (diff)
downloadrust-247a0d185446fb145e1e5843c44c97b9a564e135.tar.gz
rust-247a0d185446fb145e1e5843c44c97b9a564e135.zip
Auto merge of #27153 - alexcrichton:flaky-tests, r=brson
This commit ensures that the rustc thread does not leak a panic message whenever
a call to `fatal` happens. This already happens for the main rustc thread as
part of the `rustc_driver::monitor` function, but the compiler also spawns
threads for other operations like `-C codegen-units`, and sometimes errors are
emitted on these threads as well. To ensure that there's a consistent
error-handling experience across threads this unifies these two to never print
the panic message in the case of a normal and expected fatal error.

This should also fix the flaky `asm-src-loc-codegen-units.rs` test as the output
is sometimes garbled if diagnostics are printed while the panic message is also
being printed.
-rw-r--r--src/libsyntax/diagnostic.rs4
-rw-r--r--src/libsyntax/lib.rs1
2 files changed, 5 insertions, 0 deletions
diff --git a/src/libsyntax/diagnostic.rs b/src/libsyntax/diagnostic.rs
index fbf015169f8..e95813e44ba 100644
--- a/src/libsyntax/diagnostic.rs
+++ b/src/libsyntax/diagnostic.rs
@@ -208,6 +208,10 @@ impl Handler {
     }
     pub fn fatal(&self, msg: &str) -> ! {
         self.emit.borrow_mut().emit(None, msg, None, Fatal);
+
+        // Suppress the fatal error message from the panic below as we've
+        // already terminated in our own "legitimate" fashion.
+        io::set_panic(Box::new(io::sink()));
         panic!(FatalError);
     }
     pub fn err(&self, msg: &str) {
diff --git a/src/libsyntax/lib.rs b/src/libsyntax/lib.rs
index 7333265bdd4..d93af5da13c 100644
--- a/src/libsyntax/lib.rs
+++ b/src/libsyntax/lib.rs
@@ -32,6 +32,7 @@
 #![feature(libc)]
 #![feature(ref_slice)]
 #![feature(rustc_private)]
+#![feature(set_stdio)]
 #![feature(staged_api)]
 #![feature(str_char)]
 #![feature(str_escape)]