Commit d8afb649 authored by Federico G. Schwindt's avatar Federico G. Schwindt

Set the task arguments under the lock

I've been torturing varnish with this change for some time and was
not able to reproduce the problem.

Should fix #2719.
parent 47dc5fd7
......@@ -214,13 +214,12 @@ Pool_Task_Arg(struct worker *wrk, enum task_prio prio, task_func_t *func,
wrk2 = wrk;
retval = 0;
}
Lck_Unlock(&pp->mtx);
AZ(wrk2->task.func);
assert(arg_len <= WS_Reserve(wrk2->aws, arg_len));
memcpy(wrk2->aws->f, arg, arg_len);
wrk2->task.func = func;
wrk2->task.priv = wrk2->aws->f;
Lck_Unlock(&pp->mtx);
if (retval)
AZ(pthread_cond_signal(&wrk2->cond));
return (retval);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment