Changeset: 28695de5bc98 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/28695de5bc98
Modified Files:
        gdk/gdk_logger.c
        gdk/gdk_system.c
        gdk/gdk_tracer.c
        monetdb5/mal/mal_client.c
        monetdb5/mal/mal_listing.c
        monetdb5/mal/mal_namespace.c
Branch: Jun2023
Log Message:

Fixed some minor issues.


diffs (162 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1001,15 +1001,17 @@ log_create_types_file(logger *lg, const 
        }
        if (fprintf(fp, "%06d\n\n", lg->version) < 0) {
                fclose(fp);
-               MT_remove(filename);
                GDKerror("writing log file %s failed", filename);
+               if (MT_remove(filename) < 0)
+                       GDKsyserror("remove %s failed\n", filename);
                return GDK_FAIL;
        }
 
        if (log_write_new_types(lg, fp, append) != GDK_SUCCEED) {
                fclose(fp);
-               MT_remove(filename);
                GDKerror("writing log file %s failed", filename);
+               if (MT_remove(filename) < 0)
+                       GDKsyserror("remove %s failed\n", filename);
                return GDK_FAIL;
        }
        if (fflush(fp) < 0 || (!(ATOMIC_GET(&GDKdebug) & NOSYNCMASK)
@@ -1023,12 +1025,14 @@ log_create_types_file(logger *lg, const 
            )) {
                GDKsyserror("flushing log file %s failed", filename);
                fclose(fp);
-               MT_remove(filename);
+               if (MT_remove(filename) < 0)
+                       GDKsyserror("remove %s failed\n", filename);
                return GDK_FAIL;
        }
        if (fclose(fp) < 0) {
                GDKsyserror("closing log file %s failed", filename);
-               MT_remove(filename);
+               if (MT_remove(filename) < 0)
+                       GDKsyserror("remove %s failed\n", filename);
                return GDK_FAIL;
        }
        return GDK_SUCCEED;
@@ -1986,7 +1990,8 @@ log_load(const char *fn, const char *log
                /* bm_subcommit releases the lock */
                if (bm_subcommit(lg, NULL, 0) != GDK_SUCCEED) {
                        /* cannot commit catalog, so remove log */
-                       MT_remove(filename);
+                       if (MT_remove(filename) < 0)
+                               GDKsyserror("remove %s failed\n", filename);
                        BBPrelease(lg->catalog_bid->batCacheid);
                        BBPrelease(lg->catalog_id->batCacheid);
                        BBPrelease(lg->dcatalog->batCacheid);
diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c
--- a/gdk/gdk_system.c
+++ b/gdk/gdk_system.c
@@ -199,7 +199,8 @@ static struct winthread {
        char algorithm[512];    /* the algorithm used in the last operation */
        size_t algolen;         /* length of string in .algorithm */
        ATOMIC_TYPE exited;
-       bool detached:1, waiting:1, limit_override:1;
+       bool detached:1, waiting:1;
+       bool limit_override;    /* not in bit field because of data races */
        char threadname[MT_NAME_LEN];
        QryCtx *qry_ctx;
 } *winthreads = NULL;
@@ -681,7 +682,8 @@ static struct posthread {
        pthread_t tid;
        MT_Id mtid;
        ATOMIC_TYPE exited;
-       bool detached:1, waiting:1, limit_override:1;
+       bool detached:1, waiting:1;
+       bool limit_override;    /* not in bit field because of data races */
        QryCtx *qry_ctx;
 } *posthreads = NULL;
 static struct posthread mainthread = {
@@ -997,7 +999,7 @@ join_threads(void)
        do {
                waited = false;
                for (struct posthread *p = posthreads; p; p = p->next) {
-                       if (p->detached && !p->waiting && 
ATOMIC_GET(&p->exited)) {
+                       if (ATOMIC_GET(&p->exited) && p->detached && 
!p->waiting) {
                                p->waiting = true;
                                pthread_mutex_unlock(&posthread_lock);
                                TRC_DEBUG(THRD, "Join thread \"%s\"\n", 
p->threadname);
diff --git a/gdk/gdk_tracer.c b/gdk/gdk_tracer.c
--- a/gdk/gdk_tracer.c
+++ b/gdk/gdk_tracer.c
@@ -547,10 +547,14 @@ GDKtracer_log(const char *file, const ch
                                 func);
        if (bytes_written > 0 && bytes_written < (int) sizeof(buffer)) {
                msg = buffer + bytes_written;
-               bytes_written = vsnprintf(msg,
-                                         sizeof(buffer) - bytes_written,
-                                         fmt, va);
+       } else {
+               /* exceedingly unlikely that we ever come here */
+               msg = buffer;
+               bytes_written = 0;
        }
+       bytes_written = vsnprintf(msg,
+                                 sizeof(buffer) - bytes_written,
+                                 fmt, va);
        isexit = strstr(msg, EXITING_MSG) != NULL;
        va_end(va);
        if (bytes_written < 0) {
@@ -576,7 +580,7 @@ GDKtracer_log(const char *file, const ch
                }
        }
 
-       /* don't write to file on embedded case, but set the GDK error buffer */
+       /* don't write to file in embedded case, but set the GDK error buffer */
        if ((adapter_t) ATOMIC_GET(&cur_adapter) == MBEDDED)
                return;
 
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
@@ -397,7 +397,6 @@ MCcloseClient(Client c)
                freeModule(c->usermodule);
        c->usermodule = c->curmodule = 0;
        c->father = 0;
-       c->idle = c->login = c->lastcmd = 0;
        strcpy_len(c->optimizer, "default_pipe", sizeof(c->optimizer));
        c->workerlimit = 0;
        c->memorylimit = 0;
@@ -434,6 +433,7 @@ MCcloseClient(Client c)
        assert(c->qryctx.datasize == 0);
        MT_sema_destroy(&c->s);
        MT_lock_set(&mal_contextLock);
+       c->idle = c->login = c->lastcmd = 0;
        if (shutdowninprogress) {
                c->mode = BLOCKCLIENT;
        } else {
diff --git a/monetdb5/mal/mal_listing.c b/monetdb5/mal/mal_listing.c
--- a/monetdb5/mal/mal_listing.c
+++ b/monetdb5/mal/mal_listing.c
@@ -305,13 +305,13 @@ fmtRemark(MalBlkPtr mb, MalStkPtr stk, I
                if (getFunctionId(pci)) {
                        char *arg1 = renderTerm(mb, stk, pci, 1, flg);
                        char *arg2 = renderTerm(mb, stk, pci, 2, flg);
-                       if (arg1 && arg2)
+                       if (arg1 && arg2) {
                                snprintf(aux, 128, "%-36s %d actions %ld usec",
                                                 getFunctionId(pci), 
atoi(arg1), atol(arg2));
+                               (void) copystring(&t, aux, &len);
+                       }
                        GDKfree(arg1);
                        GDKfree(arg2);
-                       if (!copystring(&t, aux, &len))
-                               return base;
                }
        } else if (pci->argc == 1) {
                if (getFunctionId(pci)) {
diff --git a/monetdb5/mal/mal_namespace.c b/monetdb5/mal/mal_namespace.c
--- a/monetdb5/mal/mal_namespace.c
+++ b/monetdb5/mal/mal_namespace.c
@@ -117,6 +117,7 @@ findName(const char *nme, size_t len, bo
        if (namespace == NULL || namespace->count == 4096) {
                struct namespace *ns = GDKmalloc(sizeof(struct namespace));
                if (ns == NULL) {
+                       MT_lock_unset(&mal_namespaceLock);
                        return NULL;
                }
                ns->next = namespace;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to