Changeset: b93a5ae3fdc7 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b93a5ae3fdc7
Modified Files:
gdk/gdk_bbp.c
Branch: multi-cachelock
Log Message:
fix potential deadlock between BBPinsert and decref
diffs (29 lines):
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -2569,6 +2569,7 @@ bbpclear(bat i, int idx, bool lock)
TRC_DEBUG(BAT_, "clear %d (%s)\n", (int) i, BBP_logical(i));
BBPuncacheit(i, true);
TRC_DEBUG(BAT_, "set to unloading %d\n", i);
+ MT_lock_set(&BBPnameLock);
if (lock) {
MT_lock_set(&GDKcacheLock(idx));
MT_lock_set(&GDKswapLock(i));
@@ -2580,9 +2581,7 @@ bbpclear(bat i, int idx, bool lock)
if (lock)
MT_lock_unset(&GDKswapLock(i));
if (!BBPtmpcheck(BBP_logical(i))) {
- MT_lock_set(&BBPnameLock);
BBP_delete(i);
- MT_lock_unset(&BBPnameLock);
}
if (BBP_logical(i) != BBP_bak(i))
GDKfree(BBP_logical(i));
@@ -2593,6 +2592,7 @@ bbpclear(bat i, int idx, bool lock)
BBP_pid(i) = ~(MT_Id)0; /* not zero, not a valid thread id */
if (lock)
MT_lock_unset(&GDKcacheLock(idx));
+ MT_lock_unset(&BBPnameLock);
}
void
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]