Changeset: 221eed9afe12 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/221eed9afe12 Modified Files: gdk/gdk.h gdk/gdk_bbp.c gdk/gdk_logger.c monetdb5/mal/mal_client.c monetdb5/mal/mal_interpreter.c sql/storage/bat/bat_utils.h Branch: Jul2021 Log Message:
Fix some data races. diffs (81 lines): diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -1154,7 +1154,7 @@ typedef var_t stridx_t; #define BUNtloc(bi,p) (assert((bi).type != TYPE_msk), ((void *) ((char *) (bi).base + ((p) << (bi).shift)))) #define BUNtpos(bi,p) Tpos(&(bi),p) #define BUNtvar(bi,p) (assert((bi).type && (bi).b->tvarsized), (void *) ((bi).vh->base+BUNtvaroff(bi,p))) -#define BUNtail(bi,p) ((bi).type?(bi).b->tvarsized?BUNtvar(bi,p):(bi).type==TYPE_msk?BUNtmsk(bi,p):BUNtloc(bi,p):BUNtpos(bi,p)) +#define BUNtail(bi,p) ((bi).type?(bi).vh?BUNtvar(bi,p):(bi).type==TYPE_msk?BUNtmsk(bi,p):BUNtloc(bi,p):BUNtpos(bi,p)) #define BUNlast(b) (assert((b)->batCount <= BUN_MAX), (b)->batCount) diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -2218,7 +2218,7 @@ BBPinsert(BAT *bn) MT_lock_unset(&GDKswapLock(i)); #ifdef HAVE_HGE - if (bn->ttype == TYPE_hge) + if (bn->ttype == TYPE_hge && !havehge) havehge = true; #endif diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -2451,7 +2451,7 @@ string_writer(logger *lg, BAT *b, lng of } char *dst = buf; for(; p < end && sz < bufsz; p++) { - char *s = BUNtail(bi, p); + char *s = BUNtvar(bi, p); size_t len = strlen(s)+1; if ((sz+len) > bufsz) { if (len > bufsz) diff --git a/monetdb5/mal/mal_client.c b/monetdb5/mal/mal_client.c --- a/monetdb5/mal/mal_client.c +++ b/monetdb5/mal/mal_client.c @@ -515,9 +515,11 @@ MCactiveClients(void) int active = 0; Client cntxt = mal_clients; + MT_lock_set(&mal_contextLock); for(cntxt = mal_clients; cntxt<mal_clients+MAL_MAXCLIENTS; cntxt++){ active += (cntxt->idle == 0 && cntxt->mode == RUNCLIENT); } + MT_lock_unset(&mal_contextLock); return active; } diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c --- a/monetdb5/mal/mal_interpreter.c +++ b/monetdb5/mal/mal_interpreter.c @@ -875,9 +875,11 @@ str runMALsequence(Client cntxt, MalBlkP if (garbage[i] >= 0) { bid = stk->stk[garbage[i]].val.bval; - stk->stk[garbage[i]].val.bval = bat_nil; - BBPcold(bid); - BBPrelease(bid); + if (!is_bat_nil(bid)) { + stk->stk[garbage[i]].val.bval = bat_nil; + BBPcold(bid); + BBPrelease(bid); + } } } } diff --git a/sql/storage/bat/bat_utils.h b/sql/storage/bat/bat_utils.h --- a/sql/storage/bat/bat_utils.h +++ b/sql/storage/bat/bat_utils.h @@ -15,7 +15,7 @@ /* when returning a log_bid, errors are reported using BID_NIL */ #define BID_NIL 0 -#define bat_set_access(b,access) b->batRestricted = access +#define bat_set_access(b,access) do { if (b->batRestricted != access) b->batRestricted = access; } while (0) extern BAT *temp_descriptor(log_bid b); extern BAT *quick_descriptor(log_bid b); _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org