Changeset: f7d7df6b897a for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/f7d7df6b897a Modified Files: gdk/gdk_align.c gdk/gdk_strimps.c Branch: string_imprints Log Message:
Take a lock before getting the strimp This needs some more thought diffs (49 lines): diff --git a/gdk/gdk_align.c b/gdk/gdk_align.c --- a/gdk/gdk_align.c +++ b/gdk/gdk_align.c @@ -378,7 +378,6 @@ VIEWdestroy(BAT *b) IMPSdestroy(b); OIDXdestroy(b); PROPdestroy(b); - STRMPdestroy(b); VIEWunlink(b); MT_lock_set(&b->theaplock); diff --git a/gdk/gdk_strimps.c b/gdk/gdk_strimps.c --- a/gdk/gdk_strimps.c +++ b/gdk/gdk_strimps.c @@ -501,12 +501,16 @@ STRMPfilter(BAT *b, BAT *s, const str q) BAT *pb = BBP_cache(VIEWtparent(b)); if (!BATcheckstrimps(pb)) goto sfilter_fail; + MT_lock_set(&pb->batIdxLock); strmps = pb->tstrimps; + MT_lock_unset(&pb->batIdxLock); } else { if (!BATcheckstrimps(b)) goto sfilter_fail; + MT_lock_set(&b->batIdxLock); strmps = b->tstrimps; + MT_lock_unset(&b->batIdxLock); } ncand = canditer_init(&ci, b, s); @@ -793,12 +797,17 @@ STRMPappendBitstring(BAT *b, const str s void STRMPdecref(Strimps *strimps, bool remove) { + TRC_DEBUG(ACCELERATOR, "Decrement ref count of %s to " ULLFMT "\n", + strimps->strimps.filename, ATOMIC_GET(&strimps->strimps.refs) - 1); strimps->strimps.remove |= remove; if (ATOMIC_DEC(&strimps->strimps.refs) == 0) { ATOMIC_DESTROY(&strimps->strimps.refs); HEAPfree(&strimps->strimps, strimps->strimps.remove); GDKfree(strimps); } + +} + void STRMPincref(Strimps *strimps) { _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list