diff options
author | Manish Goregaokar <manishsmail@gmail.com> | 2016-04-01 10:18:10 +0530 |
---|---|---|
committer | Manish Goregaokar <manishsmail@gmail.com> | 2016-04-01 11:20:18 +0530 |
commit | 1aa6d558ac4d613c1ca7093bc34feade795f2a52 (patch) | |
tree | f206935e628a87d38ac0ac700cee19f1b4ec650b | |
parent | ed3f7f5818156229b7af4e5b1c4834745ffa7342 (diff) | |
download | servo-1aa6d558ac4d613c1ca7093bc34feade795f2a52.tar.gz servo-1aa6d558ac4d613c1ca7093bc34feade795f2a52.zip |
Lock stderr in custom panic handler
-rw-r--r-- | components/util/thread.rs | 10 |
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; } |