File tree 3 files changed +10
-9
lines changed 3 files changed +10
-9
lines changed Original file line number Diff line number Diff line change @@ -81,11 +81,13 @@ enum task { task_handle(task_id) }
81
81
/**
82
82
* Indicates the manner in which a task exited.
83
83
*
84
- * A task that completes without failing and whose supervised children
85
- * complete without failing is considered to exit successfully.
84
+ * A task that completes without failing is considered to exit successfully.
85
+ * Supervised ancestors and linked siblings may yet fail after this task
86
+ * succeeds. Also note that in such a case, it may be nondeterministic whether
87
+ * linked failure or successful exit happen first.
86
88
*
87
- * FIXME (See #1868): This description does not indicate the current behavior
88
- * for linked failure .
89
+ * If you wish for this result's delivery to block until all linked and/or
90
+ * children tasks complete, recommend using a result future .
89
91
*/
90
92
enum task_result {
91
93
success,
@@ -1505,8 +1507,7 @@ fn test_spawn_linked_unsup_default_opts() { // parent fails; child fails
1505
1507
// A couple bonus linked failure tests - testing for failure propagation even
1506
1508
// when the middle task exits successfully early before kill signals are sent.
1507
1509
1508
- #[ test] #[ should_fail] // #[ignore(cfg(windows))]
1509
- #[ ignore] // FIXME (#1868) (bblum) make this work
1510
+ #[ test] #[ should_fail] #[ ignore( cfg( windows) ) ]
1510
1511
fn test_spawn_failure_propagate_grandchild( ) {
1511
1512
// Middle task exits; does grandparent's failure propagate across the gap?
1512
1513
do spawn_supervised {
Original file line number Diff line number Diff line change @@ -634,7 +634,7 @@ rust_task::on_rust_stack() {
634
634
void
635
635
rust_task::inhibit_kill () {
636
636
scoped_lock with (lifecycle_lock);
637
- // FIXME (#1868) Check here if we have to die
637
+ // Here might be good, though not mandatory, to check if we have to die.
638
638
disallow_kill++;
639
639
}
640
640
Original file line number Diff line number Diff line change @@ -431,10 +431,10 @@ rust_task::call_on_rust_stack(void *args, void *fn_ptr) {
431
431
assert (get_sp_limit () != 0 && " Stack must be configured" );
432
432
assert (next_rust_sp);
433
433
434
- bool had_reentered_rust_stack = reentered_rust_stack ;
434
+ bool had_reentered_rust_stack;
435
435
{
436
- // FIXME (#1868) This must be racy. Figure it out.
437
436
scoped_lock with (lifecycle_lock);
437
+ had_reentered_rust_stack = reentered_rust_stack;
438
438
reentered_rust_stack = true ;
439
439
}
440
440
You can’t perform that action at this time.
0 commit comments