Changeset: d37b51802d90 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d37b51802d90 Modified Files: monetdb5/mal/mal_dataflow.c Branch: Feb2013 Log Message:
Fix race condition. If multiple runMALdataflow's are called simultaneously all may end up calling DFLOWinitialize(). If one is slightly ahead and initializes todo, and the next then tests todo, and returns, it may hit the assert(workers[0]) before the first thread forked off the first worker thread. diffs (17 lines): diff --git a/monetdb5/mal/mal_dataflow.c b/monetdb5/mal/mal_dataflow.c --- a/monetdb5/mal/mal_dataflow.c +++ b/monetdb5/mal/mal_dataflow.c @@ -353,9 +353,11 @@ DFLOWinitialize(void) { int i, limit; - if (todo) + MT_lock_set(&mal_contextLock, "DFLOWinitialize"); + if (todo) { + MT_lock_unset(&mal_contextLock, "DFLOWinitialize"); return; - MT_lock_set(&mal_contextLock, "DFLOWinitialize"); + } todo = q_create(2048); limit = GDKnr_threads ? GDKnr_threads : 1; for (i = 0; i < limit; i++) _______________________________________________ checkin-list mailing list checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list