about summary refs log tree commit diff stats
path: root/src/libtools
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-02-19 10:05:41 +0100
committerptitSeb <sebastien.chev@gmail.com>2023-02-19 10:05:41 +0100
commitc5632360d6dbe6561d624f258a05b2f63a53739c (patch)
treeffa09fcb26252015a64a7a5ae3ab7d258ae9d7a7 /src/libtools
parent9705d5e38bdf4ec72daf480de0830dfde6e33a70 (diff)
parenta379b4aab880201110be9292747117338446271f (diff)
downloadbox64-c5632360d6dbe6561d624f258a05b2f63a53739c.tar.gz
box64-c5632360d6dbe6561d624f258a05b2f63a53739c.zip
Merge branch 'main' into steam_chrome
Diffstat (limited to 'src/libtools')
-rwxr-xr-xsrc/libtools/signals.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/libtools/signals.c b/src/libtools/signals.c
index 9ab18a75..ffe36ea6 100755
--- a/src/libtools/signals.c
+++ b/src/libtools/signals.c
@@ -751,7 +751,7 @@ void my_sigactionhandler_oldcode(int32_t sig, int simple, siginfo_t* info, void
             //relockMutex(Locks);   // do not relock mutex, because of the siglongjmp, whatever was running is canceled
             #ifdef DYNAREC
             if(Locks & is_dyndump_locked)
-                CancelBlock64();
+                CancelBlock64(1);
             #endif
             siglongjmp(ejb->jmpbuf, 1);
         }
@@ -793,7 +793,7 @@ void my_sigactionhandler_oldcode(int32_t sig, int simple, siginfo_t* info, void
         //relockMutex(Locks);   // the thread will exit, so no relock there
         #ifdef DYNAREC
         if(Locks & is_dyndump_locked)
-            CancelBlock64();
+            CancelBlock64(1);
         #endif
         exit(ret);
     }
@@ -850,7 +850,7 @@ void my_box64signalhandler(int32_t sig, siginfo_t* info, void * ucntx)
 #ifdef DYNAREC
     if((Locks & is_dyndump_locked) && (sig==SIGSEGV) && current_helper) {
         relockMutex(Locks);
-        CancelBlock64();
+        CancelBlock64(0);
         cancelFillBlock();  // Segfault inside a Fillblock, cancel it's creation...
     }
     dynablock_t* db = NULL;
@@ -901,11 +901,11 @@ void my_box64signalhandler(int32_t sig, siginfo_t* info, void * ucntx)
                     dynarec_log(LOG_INFO, "Dynablock unprotected, getting out!\n");
                 }
                 //relockMutex(Locks);
+                mutex_unlock(&mutex_dynarec_prot);
                 #ifdef DYNAREC
                 if(Locks & is_dyndump_locked)
-                    CancelBlock64();
+                    CancelBlock64(1);
                 #endif
-                mutex_unlock(&mutex_dynarec_prot);
                 siglongjmp(ejb->jmpbuf, 2);
             }
             dynarec_log(LOG_INFO, "Warning, Auto-SMC (%p for db %p/%p) detected, but jmpbuffer not ready!\n", (void*)addr, db, (void*)db->x64_addr);