Disable linked failure tests
The implementation currently contains a race that leads to segfaults.
This commit is contained in:
parent
b735e6b104
commit
ce95b01014
17 changed files with 48 additions and 8 deletions
|
@ -424,7 +424,7 @@ there is no way to "catch" the exception.
|
||||||
All tasks are, by default, _linked_ to each other. That means that the fates
|
All tasks are, by default, _linked_ to each other. That means that the fates
|
||||||
of all tasks are intertwined: if one fails, so do all the others.
|
of all tasks are intertwined: if one fails, so do all the others.
|
||||||
|
|
||||||
~~~
|
~~~{.xfail-test .linked-failure}
|
||||||
# use std::task::spawn;
|
# use std::task::spawn;
|
||||||
# use std::task;
|
# use std::task;
|
||||||
# fn do_some_work() { loop { task::yield() } }
|
# fn do_some_work() { loop { task::yield() } }
|
||||||
|
@ -447,7 +447,7 @@ pattern-match on a result to check whether it's an `Ok` result with an `int`
|
||||||
field (representing a successful result) or an `Err` result (representing
|
field (representing a successful result) or an `Err` result (representing
|
||||||
termination with an error).
|
termination with an error).
|
||||||
|
|
||||||
~~~
|
~~~{.xfail-test .linked-failure}
|
||||||
# use std::task;
|
# use std::task;
|
||||||
# fn some_condition() -> bool { false }
|
# fn some_condition() -> bool { false }
|
||||||
# fn calculate_result() -> int { 0 }
|
# fn calculate_result() -> int { 0 }
|
||||||
|
@ -490,7 +490,7 @@ proceed). Hence, you will need different _linked failure modes_.
|
||||||
By default, task failure is _bidirectionally linked_, which means that if
|
By default, task failure is _bidirectionally linked_, which means that if
|
||||||
either task fails, it kills the other one.
|
either task fails, it kills the other one.
|
||||||
|
|
||||||
~~~
|
~~~{.xfail-test .linked-failure}
|
||||||
# use std::task;
|
# use std::task;
|
||||||
# use std::comm::oneshot;
|
# use std::comm::oneshot;
|
||||||
# fn sleep_forever() { loop { let (p, c) = oneshot::<()>(); p.recv(); } }
|
# fn sleep_forever() { loop { let (p, c) = oneshot::<()>(); p.recv(); } }
|
||||||
|
@ -512,7 +512,7 @@ function `task::try`, which we saw previously, uses `spawn_supervised`
|
||||||
internally, with additional logic to wait for the child task to finish
|
internally, with additional logic to wait for the child task to finish
|
||||||
before returning. Hence:
|
before returning. Hence:
|
||||||
|
|
||||||
~~~
|
~~~{.xfail-test .linked-failure}
|
||||||
# use std::comm::{stream, Chan, Port};
|
# use std::comm::{stream, Chan, Port};
|
||||||
# use std::comm::oneshot;
|
# use std::comm::oneshot;
|
||||||
# use std::task::{spawn, try};
|
# use std::task::{spawn, try};
|
||||||
|
@ -543,7 +543,7 @@ also fail.
|
||||||
Supervised task failure propagates across multiple generations even if
|
Supervised task failure propagates across multiple generations even if
|
||||||
an intermediate generation has already exited:
|
an intermediate generation has already exited:
|
||||||
|
|
||||||
~~~
|
~~~{.xfail-test .linked-failure}
|
||||||
# use std::task;
|
# use std::task;
|
||||||
# use std::comm::oneshot;
|
# use std::comm::oneshot;
|
||||||
# fn sleep_forever() { loop { let (p, c) = oneshot::<()>(); p.recv(); } }
|
# fn sleep_forever() { loop { let (p, c) = oneshot::<()>(); p.recv(); } }
|
||||||
|
@ -563,7 +563,7 @@ fail!(); // Will kill grandchild even if child has already exited
|
||||||
Finally, tasks can be configured to not propagate failure to each
|
Finally, tasks can be configured to not propagate failure to each
|
||||||
other at all, using `task::spawn_unlinked` for _isolated failure_.
|
other at all, using `task::spawn_unlinked` for _isolated failure_.
|
||||||
|
|
||||||
~~~
|
~~~{.xfail-test .linked-failure}
|
||||||
# use std::task;
|
# use std::task;
|
||||||
# fn random() -> uint { 100 }
|
# fn random() -> uint { 100 }
|
||||||
# fn sleep_for(i: uint) { for _ in range(0, i) { task::yield() } }
|
# fn sleep_for(i: uint) { for _ in range(0, i) { task::yield() } }
|
||||||
|
@ -591,7 +591,7 @@ that repeatedly receives a `uint` message, converts it to a string, and sends
|
||||||
the string in response. The child terminates when it receives `0`.
|
the string in response. The child terminates when it receives `0`.
|
||||||
Here is the function that implements the child task:
|
Here is the function that implements the child task:
|
||||||
|
|
||||||
~~~~
|
~~~{.xfail-test .linked-failure}
|
||||||
# use extra::comm::DuplexStream;
|
# use extra::comm::DuplexStream;
|
||||||
# use std::uint;
|
# use std::uint;
|
||||||
fn stringifier(channel: &DuplexStream<~str, uint>) {
|
fn stringifier(channel: &DuplexStream<~str, uint>) {
|
||||||
|
@ -614,7 +614,7 @@ response itself is simply the stringified version of the received value,
|
||||||
|
|
||||||
Here is the code for the parent task:
|
Here is the code for the parent task:
|
||||||
|
|
||||||
~~~~
|
~~~{.xfail-test .linked-failure}
|
||||||
# use std::task::spawn;
|
# use std::task::spawn;
|
||||||
# use std::uint;
|
# use std::uint;
|
||||||
# use extra::comm::DuplexStream;
|
# use extra::comm::DuplexStream;
|
||||||
|
|
|
@ -611,6 +611,7 @@ mod tests {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test] #[should_fail] #[ignore(cfg(windows))]
|
#[test] #[should_fail] #[ignore(cfg(windows))]
|
||||||
fn test_arc_condvar_poison() {
|
fn test_arc_condvar_poison() {
|
||||||
unsafe {
|
unsafe {
|
||||||
|
|
|
@ -935,6 +935,7 @@ mod tests {
|
||||||
// child task must have finished by the time try returns
|
// child task must have finished by the time try returns
|
||||||
do m.lock { }
|
do m.lock { }
|
||||||
}
|
}
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test] #[ignore(cfg(windows))]
|
#[test] #[ignore(cfg(windows))]
|
||||||
fn test_mutex_killed_cond() {
|
fn test_mutex_killed_cond() {
|
||||||
// Getting killed during cond wait must not corrupt the mutex while
|
// Getting killed during cond wait must not corrupt the mutex while
|
||||||
|
@ -961,6 +962,7 @@ mod tests {
|
||||||
assert!(!woken);
|
assert!(!woken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test] #[ignore(cfg(windows))]
|
#[test] #[ignore(cfg(windows))]
|
||||||
fn test_mutex_killed_broadcast() {
|
fn test_mutex_killed_broadcast() {
|
||||||
use std::unstable::finally::Finally;
|
use std::unstable::finally::Finally;
|
||||||
|
|
|
@ -614,6 +614,7 @@ mod test {
|
||||||
// Test cases don't care about the spare killed flag.
|
// Test cases don't care about the spare killed flag.
|
||||||
fn make_kill_handle() -> KillHandle { let (h,_) = KillHandle::new(); h }
|
fn make_kill_handle() -> KillHandle { let (h,_) = KillHandle::new(); h }
|
||||||
|
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test]
|
#[test]
|
||||||
fn no_tombstone_success() {
|
fn no_tombstone_success() {
|
||||||
do run_in_newsched_task {
|
do run_in_newsched_task {
|
||||||
|
@ -819,6 +820,7 @@ mod test {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test]
|
#[test]
|
||||||
fn block_and_get_killed() {
|
fn block_and_get_killed() {
|
||||||
do with_test_task |mut task| {
|
do with_test_task |mut task| {
|
||||||
|
@ -830,6 +832,7 @@ mod test {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test]
|
#[test]
|
||||||
fn block_already_killed() {
|
fn block_already_killed() {
|
||||||
do with_test_task |mut task| {
|
do with_test_task |mut task| {
|
||||||
|
@ -839,6 +842,7 @@ mod test {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test]
|
#[test]
|
||||||
fn block_unkillably_and_get_killed() {
|
fn block_unkillably_and_get_killed() {
|
||||||
do with_test_task |mut task| {
|
do with_test_task |mut task| {
|
||||||
|
@ -856,6 +860,7 @@ mod test {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test]
|
#[test]
|
||||||
fn block_on_pipe() {
|
fn block_on_pipe() {
|
||||||
// Tests the "killable" path of casting to/from uint.
|
// Tests the "killable" path of casting to/from uint.
|
||||||
|
@ -869,6 +874,7 @@ mod test {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test]
|
#[test]
|
||||||
fn block_unkillably_on_pipe() {
|
fn block_unkillably_on_pipe() {
|
||||||
// Tests the "indestructible" path of casting to/from uint.
|
// Tests the "indestructible" path of casting to/from uint.
|
||||||
|
|
|
@ -659,6 +659,7 @@ pub unsafe fn rekillable<U>(f: &fn() -> U) -> U {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test] #[ignore(cfg(windows))]
|
#[test] #[ignore(cfg(windows))]
|
||||||
fn test_kill_unkillable_task() {
|
fn test_kill_unkillable_task() {
|
||||||
use rt::test::*;
|
use rt::test::*;
|
||||||
|
@ -679,6 +680,7 @@ fn test_kill_unkillable_task() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test] #[ignore(cfg(windows))]
|
#[test] #[ignore(cfg(windows))]
|
||||||
fn test_kill_rekillable_task() {
|
fn test_kill_rekillable_task() {
|
||||||
use rt::test::*;
|
use rt::test::*;
|
||||||
|
@ -720,6 +722,7 @@ fn test_cant_dup_task_builder() {
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
fn block_forever() { let (po, _ch) = stream::<()>(); po.recv(); }
|
fn block_forever() { let (po, _ch) = stream::<()>(); po.recv(); }
|
||||||
|
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test] #[ignore(cfg(windows))]
|
#[test] #[ignore(cfg(windows))]
|
||||||
fn test_spawn_unlinked_unsup_no_fail_down() { // grandchild sends on a port
|
fn test_spawn_unlinked_unsup_no_fail_down() { // grandchild sends on a port
|
||||||
use rt::test::run_in_newsched_task;
|
use rt::test::run_in_newsched_task;
|
||||||
|
@ -738,6 +741,7 @@ fn test_spawn_unlinked_unsup_no_fail_down() { // grandchild sends on a port
|
||||||
po.recv();
|
po.recv();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test] #[ignore(cfg(windows))]
|
#[test] #[ignore(cfg(windows))]
|
||||||
fn test_spawn_unlinked_unsup_no_fail_up() { // child unlinked fails
|
fn test_spawn_unlinked_unsup_no_fail_up() { // child unlinked fails
|
||||||
use rt::test::run_in_newsched_task;
|
use rt::test::run_in_newsched_task;
|
||||||
|
@ -745,6 +749,7 @@ fn test_spawn_unlinked_unsup_no_fail_up() { // child unlinked fails
|
||||||
do spawn_unlinked { fail!(); }
|
do spawn_unlinked { fail!(); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test] #[ignore(cfg(windows))]
|
#[test] #[ignore(cfg(windows))]
|
||||||
fn test_spawn_unlinked_sup_no_fail_up() { // child unlinked fails
|
fn test_spawn_unlinked_sup_no_fail_up() { // child unlinked fails
|
||||||
use rt::test::run_in_newsched_task;
|
use rt::test::run_in_newsched_task;
|
||||||
|
@ -754,6 +759,7 @@ fn test_spawn_unlinked_sup_no_fail_up() { // child unlinked fails
|
||||||
do 16.times { task::yield(); }
|
do 16.times { task::yield(); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test] #[ignore(cfg(windows))]
|
#[test] #[ignore(cfg(windows))]
|
||||||
fn test_spawn_unlinked_sup_fail_down() {
|
fn test_spawn_unlinked_sup_fail_down() {
|
||||||
use rt::test::run_in_newsched_task;
|
use rt::test::run_in_newsched_task;
|
||||||
|
@ -766,6 +772,7 @@ fn test_spawn_unlinked_sup_fail_down() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test] #[ignore(cfg(windows))]
|
#[test] #[ignore(cfg(windows))]
|
||||||
fn test_spawn_linked_sup_fail_up() { // child fails; parent fails
|
fn test_spawn_linked_sup_fail_up() { // child fails; parent fails
|
||||||
use rt::test::run_in_newsched_task;
|
use rt::test::run_in_newsched_task;
|
||||||
|
@ -786,6 +793,7 @@ fn test_spawn_linked_sup_fail_up() { // child fails; parent fails
|
||||||
assert!(result.is_err());
|
assert!(result.is_err());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test] #[ignore(cfg(windows))]
|
#[test] #[ignore(cfg(windows))]
|
||||||
fn test_spawn_linked_sup_fail_down() { // parent fails; child fails
|
fn test_spawn_linked_sup_fail_down() { // parent fails; child fails
|
||||||
use rt::test::run_in_newsched_task;
|
use rt::test::run_in_newsched_task;
|
||||||
|
@ -802,6 +810,7 @@ fn test_spawn_linked_sup_fail_down() { // parent fails; child fails
|
||||||
assert!(result.is_err());
|
assert!(result.is_err());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test] #[ignore(cfg(windows))]
|
#[test] #[ignore(cfg(windows))]
|
||||||
fn test_spawn_linked_unsup_fail_up() { // child fails; parent fails
|
fn test_spawn_linked_unsup_fail_up() { // child fails; parent fails
|
||||||
use rt::test::run_in_newsched_task;
|
use rt::test::run_in_newsched_task;
|
||||||
|
@ -814,6 +823,7 @@ fn test_spawn_linked_unsup_fail_up() { // child fails; parent fails
|
||||||
assert!(result.is_err());
|
assert!(result.is_err());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test] #[ignore(cfg(windows))]
|
#[test] #[ignore(cfg(windows))]
|
||||||
fn test_spawn_linked_unsup_fail_down() { // parent fails; child fails
|
fn test_spawn_linked_unsup_fail_down() { // parent fails; child fails
|
||||||
use rt::test::run_in_newsched_task;
|
use rt::test::run_in_newsched_task;
|
||||||
|
@ -826,6 +836,7 @@ fn test_spawn_linked_unsup_fail_down() { // parent fails; child fails
|
||||||
assert!(result.is_err());
|
assert!(result.is_err());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test] #[ignore(cfg(windows))]
|
#[test] #[ignore(cfg(windows))]
|
||||||
fn test_spawn_linked_unsup_default_opts() { // parent fails; child fails
|
fn test_spawn_linked_unsup_default_opts() { // parent fails; child fails
|
||||||
use rt::test::run_in_newsched_task;
|
use rt::test::run_in_newsched_task;
|
||||||
|
@ -844,6 +855,7 @@ fn test_spawn_linked_unsup_default_opts() { // parent fails; child fails
|
||||||
// A couple bonus linked failure tests - testing for failure propagation even
|
// A couple bonus linked failure tests - testing for failure propagation even
|
||||||
// when the middle task exits successfully early before kill signals are sent.
|
// when the middle task exits successfully early before kill signals are sent.
|
||||||
|
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test] #[ignore(cfg(windows))]
|
#[test] #[ignore(cfg(windows))]
|
||||||
fn test_spawn_failure_propagate_grandchild() {
|
fn test_spawn_failure_propagate_grandchild() {
|
||||||
use rt::test::run_in_newsched_task;
|
use rt::test::run_in_newsched_task;
|
||||||
|
@ -860,6 +872,7 @@ fn test_spawn_failure_propagate_grandchild() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test] #[ignore(cfg(windows))]
|
#[test] #[ignore(cfg(windows))]
|
||||||
fn test_spawn_failure_propagate_secondborn() {
|
fn test_spawn_failure_propagate_secondborn() {
|
||||||
use rt::test::run_in_newsched_task;
|
use rt::test::run_in_newsched_task;
|
||||||
|
@ -876,6 +889,7 @@ fn test_spawn_failure_propagate_secondborn() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test] #[ignore(cfg(windows))]
|
#[test] #[ignore(cfg(windows))]
|
||||||
fn test_spawn_failure_propagate_nephew_or_niece() {
|
fn test_spawn_failure_propagate_nephew_or_niece() {
|
||||||
use rt::test::run_in_newsched_task;
|
use rt::test::run_in_newsched_task;
|
||||||
|
@ -892,6 +906,7 @@ fn test_spawn_failure_propagate_nephew_or_niece() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test] #[ignore(cfg(windows))]
|
#[test] #[ignore(cfg(windows))]
|
||||||
fn test_spawn_linked_sup_propagate_sibling() {
|
fn test_spawn_linked_sup_propagate_sibling() {
|
||||||
use rt::test::run_in_newsched_task;
|
use rt::test::run_in_newsched_task;
|
||||||
|
@ -1195,6 +1210,7 @@ fn test_avoid_copying_the_body_unlinked() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore(cfg(windows))]
|
#[ignore(cfg(windows))]
|
||||||
#[should_fail]
|
#[should_fail]
|
||||||
|
@ -1230,6 +1246,7 @@ fn test_unkillable() {
|
||||||
po.recv();
|
po.recv();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore(cfg(windows))]
|
#[ignore(cfg(windows))]
|
||||||
#[should_fail]
|
#[should_fail]
|
||||||
|
@ -1296,6 +1313,7 @@ fn test_simple_newsched_spawn() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test] #[ignore(cfg(windows))]
|
#[test] #[ignore(cfg(windows))]
|
||||||
fn test_spawn_watched() {
|
fn test_spawn_watched() {
|
||||||
use rt::test::run_in_newsched_task;
|
use rt::test::run_in_newsched_task;
|
||||||
|
@ -1318,6 +1336,7 @@ fn test_spawn_watched() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[ignore(reason = "linked failure")]
|
||||||
#[test] #[ignore(cfg(windows))]
|
#[test] #[ignore(cfg(windows))]
|
||||||
fn test_indestructible() {
|
fn test_indestructible() {
|
||||||
use rt::test::run_in_newsched_task;
|
use rt::test::run_in_newsched_task;
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
// xfail-test linked failure
|
||||||
// error-pattern:explicit failure
|
// error-pattern:explicit failure
|
||||||
// Testing that runtime failure doesn't cause callbacks to abort abnormally.
|
// Testing that runtime failure doesn't cause callbacks to abort abnormally.
|
||||||
// Instead the failure will be delivered after the callbacks return.
|
// Instead the failure will be delivered after the callbacks return.
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
|
||||||
|
// xfail-test linked failure
|
||||||
// error-pattern:1 == 2
|
// error-pattern:1 == 2
|
||||||
extern mod extra;
|
extern mod extra;
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
|
||||||
|
// xfail-test linked failure
|
||||||
// error-pattern:fail
|
// error-pattern:fail
|
||||||
|
|
||||||
use std::comm;
|
use std::comm;
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
|
||||||
|
// xfail-test linked failure
|
||||||
// error-pattern:fail
|
// error-pattern:fail
|
||||||
|
|
||||||
use std::comm;
|
use std::comm;
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
// xfail-test linked failure
|
||||||
// error-pattern:1 == 2
|
// error-pattern:1 == 2
|
||||||
|
|
||||||
use std::comm;
|
use std::comm;
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
// xfail-test linked failure
|
||||||
// xfail-win32
|
// xfail-win32
|
||||||
// error-pattern:explicit
|
// error-pattern:explicit
|
||||||
extern mod extra;
|
extern mod extra;
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
// xfail-test linked failure
|
||||||
// error-pattern:goodfail
|
// error-pattern:goodfail
|
||||||
|
|
||||||
use std::comm;
|
use std::comm;
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
// xfail-test linked failure
|
||||||
// xfail-fast
|
// xfail-fast
|
||||||
// xfail-win32 #7999
|
// xfail-win32 #7999
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
// xfail-test linked failure
|
||||||
// xfail-win32 leaks
|
// xfail-win32 leaks
|
||||||
extern mod extra;
|
extern mod extra;
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
// xfail-test linked failure
|
||||||
// xfail-win32
|
// xfail-win32
|
||||||
extern mod extra;
|
extern mod extra;
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
// xfail-test linked failure
|
||||||
// xfail-win32
|
// xfail-win32
|
||||||
|
|
||||||
// A port of task-killjoin to use a class with a dtor to manage
|
// A port of task-killjoin to use a class with a dtor to manage
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
// xfail-test linked failure
|
||||||
// xfail-win32
|
// xfail-win32
|
||||||
|
|
||||||
// Create a task that is supervised by another task, join the supervised task
|
// Create a task that is supervised by another task, join the supervised task
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue