From db1fbd4a11db579436f68be3a8f5fe03484aa45d Mon Sep 17 00:00:00 2001 From: Mohsen Zohrevandi Date: Wed, 25 Mar 2020 19:28:14 -0700 Subject: [PATCH 1/4] Process termination tests Related issues: - https://github.com/fortanix/rust-sgx/issues/109 --- .../process-termination-blocking-io.rs | 18 ++++++++++++++++++ .../process-termination-simple.rs | 12 ++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 src/test/ui/process-termination/process-termination-blocking-io.rs create mode 100644 src/test/ui/process-termination/process-termination-simple.rs diff --git a/src/test/ui/process-termination/process-termination-blocking-io.rs b/src/test/ui/process-termination/process-termination-blocking-io.rs new file mode 100644 index 0000000000000..d9027fc89e299 --- /dev/null +++ b/src/test/ui/process-termination/process-termination-blocking-io.rs @@ -0,0 +1,18 @@ +// program should terminate even if a thread is blocked on I/O. +// https://github.com/fortanix/rust-sgx/issues/109 + +// run-pass + +use std::{net::TcpListener, sync::mpsc, thread}; + +fn main() { + let (tx, rx) = mpsc::channel(); + thread::spawn(move || { + let listen = TcpListener::bind("0:0").unwrap(); + tx.send(()).unwrap(); + while let Ok(_) = listen.accept() {} + }); + rx.recv().unwrap(); + for _ in 0..3 { thread::yield_now(); } + println!("Exiting main thread"); +} diff --git a/src/test/ui/process-termination/process-termination-simple.rs b/src/test/ui/process-termination/process-termination-simple.rs new file mode 100644 index 0000000000000..7098a34512ee3 --- /dev/null +++ b/src/test/ui/process-termination/process-termination-simple.rs @@ -0,0 +1,12 @@ +// program should terminate when std::process::exit is called from any thread + +// run-pass + +use std::{process, thread}; + +fn main() { + let h = thread::spawn(|| { + process::exit(0); + }); + let _ = h.join(); +} From 9d8f1170b1fa923373766e26a2847390e0a2ea91 Mon Sep 17 00:00:00 2001 From: Mohsen Zohrevandi Date: Wed, 29 Apr 2020 10:36:56 -0700 Subject: [PATCH 2/4] Ignore wasm in process termination tests --- .../ui/process-termination/process-termination-blocking-io.rs | 1 + src/test/ui/process-termination/process-termination-simple.rs | 1 + 2 files changed, 2 insertions(+) diff --git a/src/test/ui/process-termination/process-termination-blocking-io.rs b/src/test/ui/process-termination/process-termination-blocking-io.rs index d9027fc89e299..864fb776e867d 100644 --- a/src/test/ui/process-termination/process-termination-blocking-io.rs +++ b/src/test/ui/process-termination/process-termination-blocking-io.rs @@ -2,6 +2,7 @@ // https://github.com/fortanix/rust-sgx/issues/109 // run-pass +// ignore-wasm no threads support use std::{net::TcpListener, sync::mpsc, thread}; diff --git a/src/test/ui/process-termination/process-termination-simple.rs b/src/test/ui/process-termination/process-termination-simple.rs index 7098a34512ee3..3660f95b05bc1 100644 --- a/src/test/ui/process-termination/process-termination-simple.rs +++ b/src/test/ui/process-termination/process-termination-simple.rs @@ -1,6 +1,7 @@ // program should terminate when std::process::exit is called from any thread // run-pass +// ignore-wasm no threads support use std::{process, thread}; From 2e749a5ecd3831f8cb947761b15b2b108ca0ec7c Mon Sep 17 00:00:00 2001 From: Mohsen Zohrevandi Date: Fri, 1 May 2020 17:03:39 -0700 Subject: [PATCH 3/4] Correction: ignore emscripten in process termination tests --- .../ui/process-termination/process-termination-blocking-io.rs | 2 +- src/test/ui/process-termination/process-termination-simple.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/ui/process-termination/process-termination-blocking-io.rs b/src/test/ui/process-termination/process-termination-blocking-io.rs index 864fb776e867d..df1a768ebbdaf 100644 --- a/src/test/ui/process-termination/process-termination-blocking-io.rs +++ b/src/test/ui/process-termination/process-termination-blocking-io.rs @@ -2,7 +2,7 @@ // https://github.com/fortanix/rust-sgx/issues/109 // run-pass -// ignore-wasm no threads support +// ignore-emscripten no threads support use std::{net::TcpListener, sync::mpsc, thread}; diff --git a/src/test/ui/process-termination/process-termination-simple.rs b/src/test/ui/process-termination/process-termination-simple.rs index 3660f95b05bc1..8f2e5b94c3a6e 100644 --- a/src/test/ui/process-termination/process-termination-simple.rs +++ b/src/test/ui/process-termination/process-termination-simple.rs @@ -1,7 +1,7 @@ // program should terminate when std::process::exit is called from any thread // run-pass -// ignore-wasm no threads support +// ignore-emscripten no threads support use std::{process, thread}; From 2b3adc9b9472e1d1e384422ceac783f9921f3b0b Mon Sep 17 00:00:00 2001 From: Mohsen Zohrevandi Date: Wed, 6 May 2020 23:41:38 -0700 Subject: [PATCH 4/4] Fix bind address in process-termination-blocking-io test --- .../ui/process-termination/process-termination-blocking-io.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/ui/process-termination/process-termination-blocking-io.rs b/src/test/ui/process-termination/process-termination-blocking-io.rs index df1a768ebbdaf..f306a61a53876 100644 --- a/src/test/ui/process-termination/process-termination-blocking-io.rs +++ b/src/test/ui/process-termination/process-termination-blocking-io.rs @@ -9,7 +9,7 @@ use std::{net::TcpListener, sync::mpsc, thread}; fn main() { let (tx, rx) = mpsc::channel(); thread::spawn(move || { - let listen = TcpListener::bind("0:0").unwrap(); + let listen = TcpListener::bind("0.0.0.0:0").unwrap(); tx.send(()).unwrap(); while let Ok(_) = listen.accept() {} });