sna: Reorder writes during thread task decoupling

So that the lockless reads do not see the task complete signal prior to
marking the task as successful. Otherwise, we falsely detect that the
thread trapped a signal and kill them all.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2014-02-28 08:47:21 +00:00
parent 37d080929a
commit a3bfb4d3c1
1 changed files with 2 additions and 2 deletions

View File

@ -67,8 +67,8 @@ static void *__run__(void *arg)
t->func(t->arg);
pthread_mutex_lock(&t->mutex);
t->func = NULL;
t->arg = NULL;
t->func = NULL;
pthread_cond_signal(&t->cond);
}
pthread_mutex_unlock(&t->mutex);
@ -190,8 +190,8 @@ void sna_threads_trap(int sig)
ERR(("%s: thread[%d] caught signal %d\n", __func__, n, sig));
pthread_mutex_lock(&threads[n].mutex);
threads[n].func = NULL;
threads[n].arg = (void *)(intptr_t)sig;
threads[n].func = NULL;
pthread_cond_signal(&threads[n].cond);
pthread_mutex_unlock(&threads[n].mutex);