From dd175a926c0e9654cd6ac8d9d26b183540c87331 Mon Sep 17 00:00:00 2001 From: Ben Gamari Date: Mon, 5 Oct 2020 18:12:38 -0400 Subject: Document schedulePushWork race --- rts/Schedule.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) (limited to 'rts/Schedule.c') diff --git a/rts/Schedule.c b/rts/Schedule.c index e8bb9c1bf0..20f661ac97 100644 --- a/rts/Schedule.c +++ b/rts/Schedule.c @@ -826,14 +826,9 @@ schedulePushWork(Capability *cap USED_IF_THREADS, appendToRunQueue(free_caps[i],t); traceEventMigrateThread (cap, t, free_caps[i]->no); + // See Note [Benign data race due to work-pushing]. if (t->bound) { - // N.B. we typically would need to hold 't->bound->task->lock' to change 'cap' - // but this is safe because the Task lives on our run queue. See - // Note [Ownership of Task]. - TSAN_ANNOTATE_HAPPENS_BEFORE(&t->bound->task->cap); - // The happens-before matches the happens-after in - // waitForWorkerCapability - RELAXED_STORE(&t->bound->task->cap, free_caps[i]); + t->bound->task->cap = free_caps[i]; } t->cap = free_caps[i]; n--; // we have one fewer threads now -- cgit v1.2.1