Changeset: cf19c0f0e696 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/cf19c0f0e696
Modified Files:
        monetdb5/mal/mal_runtime.c
        sql/backends/monet5/UDF/capi/capi.c
Branch: Jul2021
Log Message:

THRgettid returns a values between 1 and THREADS inclusive.


diffs (97 lines):

diff --git a/monetdb5/mal/mal_runtime.c b/monetdb5/mal/mal_runtime.c
--- a/monetdb5/mal/mal_runtime.c
+++ b/monetdb5/mal/mal_runtime.c
@@ -385,7 +385,8 @@ runtimeProfileBegin(Client cntxt, MalBlk
 
        assert(pci);
        /* keep track on the instructions taken in progress for stethoscope*/
-       if( tid < THREADS){
+       if( tid > 0 && tid <= THREADS){
+               tid--;
                MT_lock_set(&mal_delayLock);
                workingset[tid].cntxt = cntxt;
                workingset[tid].mb = mb;
@@ -409,7 +410,8 @@ runtimeProfileExit(Client cntxt, MalBlkP
        lng ticks = GDKusec();
 
        /* keep track on the instructions in progress*/
-       if ( tid < THREADS) {
+       if ( tid > 0 && tid <= THREADS) {
+               tid--;
                MT_lock_set(&mal_delayLock);
                workingset[tid].mb = 0;
                workingset[tid].stk = 0;
diff --git a/sql/backends/monet5/UDF/capi/capi.c 
b/sql/backends/monet5/UDF/capi/capi.c
--- a/sql/backends/monet5/UDF/capi/capi.c
+++ b/sql/backends/monet5/UDF/capi/capi.c
@@ -117,7 +117,7 @@ static _Noreturn void handler(int sig, s
        (void)si;
        (void)unused;
 
-       longjmp(jump_buffer[tid], 1);
+       longjmp(jump_buffer[tid-1], 1);
 }
 
 static bool can_mprotect_region(void* addr) {
@@ -173,7 +173,7 @@ static void *jump_GDK_malloc(size_t size
                return NULL;
        void *ptr = GDKmalloc(size);
        if (!ptr && option_enable_longjmp) {
-               longjmp(jump_buffer[THRgettid()], 2);
+               longjmp(jump_buffer[THRgettid()-1], 2);
        }
        return ptr;
 }
@@ -183,8 +183,8 @@ static void *add_allocated_region(void *
        allocated_region *region;
        int tid = THRgettid();
        region = (allocated_region *)ptr;
-       region->next = allocated_regions[tid];
-       allocated_regions[tid] = region;
+       region->next = allocated_regions[tid-1];
+       allocated_regions[tid-1] = region;
        return (char *)ptr + sizeof(allocated_region);
 }
 
@@ -237,7 +237,7 @@ static void *wrapped_GDK_zalloc_nojump(s
                }                                                               
       \
                b = COLnew(0, TYPE_##tpename, count, TRANSIENT);                
       \
                if (!b) {                                                       
       \
-                       if (option_enable_longjmp) 
longjmp(jump_buffer[THRgettid()], 2);   \
+                       if (option_enable_longjmp) 
longjmp(jump_buffer[THRgettid()-1], 2); \
                        else return;                                            
           \
                }                                                               
       \
                self->bat = (void*) b;                                          
       \
@@ -509,7 +509,7 @@ static str CUDFeval(Client cntxt, MalBlk
 
        (void)cntxt;
 
-       allocated_regions[tid] = NULL;
+       allocated_regions[tid-1] = NULL;
 
        if (!GDKgetenv_istrue("embedded_c") && !GDKgetenv_isyes("embedded_c"))
                throw(MAL, "cudf.eval", "Embedded C has not been enabled. "
@@ -1324,7 +1324,7 @@ static str CUDFeval(Client cntxt, MalBlk
        // this longjmp point is used for some error handling in the C function
        // such as failed mallocs
        if (option_enable_longjmp) {
-               ret = setjmp(jump_buffer[tid]);
+               ret = setjmp(jump_buffer[tid-1]);
                if (ret < 0) {
                        // error value
                        msg = createException(MAL, "cudf.eval", "Failed setjmp: 
%s",
@@ -1598,10 +1598,10 @@ wrapup:
                        regions = next;
                }
        }
-       while (allocated_regions[tid]) {
-               allocated_region *next = allocated_regions[tid]->next;
-               GDKfree(allocated_regions[tid]);
-               allocated_regions[tid] = next;
+       while (allocated_regions[tid-1]) {
+               allocated_region *next = allocated_regions[tid-1]->next;
+               GDKfree(allocated_regions[tid-1]);
+               allocated_regions[tid-1] = next;
        }
        if (option_enable_mprotect) {
                // block segfaults and bus errors again after we exit
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to