aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2016-04-01 10:18:10 +0530
committerManish Goregaokar <manishsmail@gmail.com>2016-04-01 11:20:18 +0530
commit1aa6d558ac4d613c1ca7093bc34feade795f2a52 (patch)
treef206935e628a87d38ac0ac700cee19f1b4ec650b
parented3f7f5818156229b7af4e5b1c4834745ffa7342 (diff)
downloadservo-1aa6d558ac4d613c1ca7093bc34feade795f2a52.tar.gz
servo-1aa6d558ac4d613c1ca7093bc34feade795f2a52.zip
Lock stderr in custom panic handler
-rw-r--r--components/util/thread.rs10
1 files changed, 7 insertions, 3 deletions
diff --git a/components/util/thread.rs b/components/util/thread.rs
index d51fd3dfa37..9175996a4b2 100644
--- a/components/util/thread.rs
+++ b/components/util/thread.rs
@@ -11,7 +11,7 @@ use std::sync::mpsc::Sender;
use std::thread;
use std::thread::Builder;
use thread_state;
-#[allow(unused_must_use)]
+
pub fn spawn_named<F>(name: String, f: F)
where F: FnOnce() + Send + 'static
{
@@ -24,11 +24,15 @@ pub fn spawn_named<F>(name: String, f: F)
let payload = info.payload();
if let Some(s) = payload.downcast_ref::<String>() {
if s.contains("SendError") {
- write!(stderr(), "Thread \"{}\" panicked with an unwrap of `SendError` (backtrace skipped)\n",
+ let err = stderr();
+ let _ = write!(err.lock(), "Thread \"{}\" panicked with an unwrap of \
+ `SendError` (backtrace skipped)\n",
thread::current().name().unwrap_or("<unknown thread>"));
return;
} else if s.contains("RecvError") {
- write!(stderr(), "Thread \"{}\" panicked with an unwrap of `RecvError` (backtrace skipped)\n",
+ let err = stderr();
+ let _ = write!(err.lock(), "Thread \"{}\" panicked with an unwrap of \
+ `RecvError` (backtrace skipped)\n",
thread::current().name().unwrap_or("<unknown thread>"));
return;
}