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

Reply via email to