Changeset: 2597830bdf9d for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/2597830bdf9d Modified Files: gdk/gdk.h gdk/gdk_bbp.c gdk/gdk_logger.c monetdb5/ChangeLog.Jan2022 monetdb5/mal/mal_client.c monetdb5/mal/mal_interpreter.c monetdb5/mal/mal_session.c sql/storage/bat/bat_utils.h Branch: Jan2022 Log Message:
Merge with Jul2021 branch. diffs (87 lines): diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -1157,7 +1157,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/monetdb5/ChangeLog.Jan2022 b/monetdb5/ChangeLog.Jan2022 --- a/monetdb5/ChangeLog.Jan2022 +++ b/monetdb5/ChangeLog.Jan2022 @@ -1,6 +1,12 @@ # ChangeLog file for MonetDB5 # This file is updated with Maddlog +* Mon Apr 24 2023 Sjoerd Mullender <sjo...@acm.org> +- A bug was fixed where data from a client context was freed after the + context was closed. This meant that the data being freed could belong + to the next user of the context (a next client that just connected), + leading to chaos (i.e. crashes). + * Fri Mar 24 2023 Sjoerd Mullender <sjo...@acm.org> - Client connections are cleaned up better so that we get fewer instances of clients that cannot connect. 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 @@ -517,9 +517,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 @@ -883,9 +883,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/monetdb5/mal/mal_session.c b/monetdb5/mal/mal_session.c --- a/monetdb5/mal/mal_session.c +++ b/monetdb5/mal/mal_session.c @@ -567,10 +567,6 @@ MSserveClient(Client c) } */ - if (c->usermodule /*&& strcmp(c->usermodule->name, "user") == 0*/) { - freeModule(c->usermodule); - c->usermodule = NULL; - } MCcloseClient(c); return MAL_SUCCEED; } 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