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]