Changeset: 804426b5fa79 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/804426b5fa79
Modified Files:
        gdk/gdk_heap.c
        gdk/gdk_logger.c
        tools/mserver/mserver5.c
Branch: Dec2025
Log Message:

Fix error handling with testing mask.
If running under Mtest.py, we want USR1 output when heap allocations
fail.  The test was reversed so that didn't happen.
Also, we only want a delay when triggering USR1 output when it is
initiated by the server itself, not when there was an actual signal.


diffs (85 lines):

diff --git a/gdk/gdk_heap.c b/gdk/gdk_heap.c
--- a/gdk/gdk_heap.c
+++ b/gdk/gdk_heap.c
@@ -159,7 +159,7 @@ HEAPalloc(Heap *h, size_t nitems, size_t
            !MT_thread_override_limits()) {
                GDKerror("allocating too much memory (current: %zu, requested: 
%zu, limit: %zu)\n", GDKvm_cursize(), h->size, GDK_vm_maxsize);
                if (GDKtriggerusr1 &&
-                   !(ATOMIC_GET(&GDKdebug) & TESTINGMASK))
+                   (ATOMIC_GET(&GDKdebug) & TESTINGMASK))
                        (*GDKtriggerusr1)();
                return GDK_FAIL;
        }
@@ -265,7 +265,7 @@ HEAPextend(Heap *h, size_t size, bool ma
            !MT_thread_override_limits()) {
                GDKerror("allocating too much memory (current: %zu, requested: 
%zu, limit: %zu)\n", GDKvm_cursize(), size - h->size, GDK_vm_maxsize);
                if (GDKtriggerusr1 &&
-                   !(ATOMIC_GET(&GDKdebug) & TESTINGMASK))
+                   (ATOMIC_GET(&GDKdebug) & TESTINGMASK))
                        (*GDKtriggerusr1)();
                return GDK_FAIL;
        }
@@ -782,7 +782,7 @@ HEAPload(Heap *h, const char *nme, const
            !MT_thread_override_limits()) {
                GDKerror("allocating too much memory (current: %zu, requested: 
%zu, limit: %zu)\n", GDKvm_cursize(), h->size, GDK_vm_maxsize);
                if (GDKtriggerusr1 &&
-                   !(ATOMIC_GET(&GDKdebug) & TESTINGMASK))
+                   (ATOMIC_GET(&GDKdebug) & TESTINGMASK))
                        (*GDKtriggerusr1)();
                return GDK_FAIL;
        }
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -2620,7 +2620,7 @@ log_new(int debug, const char *fn, const
        int max_pending = GDKgetenv_int("wal_max_pending", 5);
        lng max_file_size = 0;
 
-       if (GDKdebug & TESTINGMASK) {
+       if (ATOMIC_GET(&GDKdebug) & TESTINGMASK) {
                max_file_size = 2048; /* 2 KiB */
        } else {
                const char *max_file_size_str = GDKgetenv("wal_max_file_size");
@@ -2932,7 +2932,7 @@ log_flush(logger *lg, ulng ts)
                        lg->cur_max_pending *= 2; /* when to warn again */
                        TRC_WARNING(GDK, "Too many pending log files " ULLFMT 
"\n", (lg->id - lg->saved_id));
                        if (GDKtriggerusr1 &&
-                           !(ATOMIC_GET(&GDKdebug) & TESTINGMASK))
+                           (ATOMIC_GET(&GDKdebug) & TESTINGMASK))
                                (*GDKtriggerusr1)();
                }
                /* log files went down, reduce cur_max_pending */
diff --git a/tools/mserver/mserver5.c b/tools/mserver/mserver5.c
--- a/tools/mserver/mserver5.c
+++ b/tools/mserver/mserver5.c
@@ -236,9 +236,16 @@ static volatile sig_atomic_t usr1_interr
 static volatile sig_atomic_t usr2_interrupted = 0;
 
 static void
+handler_usr1(int sig)
+{
+       (void) sig;
+       usr1_interrupted = 1;
+}
+
+static void
 usr1trigger(void)
 {
-       usr1_interrupted = 1;
+       handler_usr1(0);
        MT_sleep_ms(150); /* sleep slightly longer than delay for handling usr1 
*/
 }
 
@@ -258,12 +265,6 @@ handler(int sig)
        interrupted = 1;
 }
 static void
-handler_usr1(int sig)
-{
-       (void) sig;
-       usr1trigger();
-}
-static void
 handler_usr2(int sig)
 {
        (void) sig;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to