]> git.mdlowis.com Git - projs/tide.git/commitdiff
added handling of abort signal to dbc.c
authorMichael D. Lowis <mike.lowis@gentex.com>
Wed, 25 Sep 2019 20:02:17 +0000 (16:02 -0400)
committerMichael D. Lowis <mike.lowis@gentex.com>
Wed, 25 Sep 2019 20:02:17 +0000 (16:02 -0400)
Rsconscript
src/lib/dbc.c
src/tide.c

index 9b012078f0c4cca62b1c48f81c2afefa65d68944..458df2459824a8ac415109d6c941edc45ee375d1 100644 (file)
@@ -9,9 +9,10 @@ end
 
 build do
   env = Environment.new
+  env["prefix"] = ENV["PREFIX"] || env["prefix"]
   env["CC"] = "./acc"
-  env["CFLAGS"] += ["-g", "-fsanitize=undefined,address"]
-  env["LDFLAGS"] += ["-g", "-fsanitize=undefined,address"]
+#  env["CFLAGS"] += ["-g", "-fsanitize=undefined,address"]
+#  env["LDFLAGS"] += ["-g", "-fsanitize=undefined,address"]
   env["CPPPATH"] += %w[. inc]
   env["LIBPATH"] += %w[.]
 
index ed179570bbaa50f8a11fb6f0991030e10f45bb75..24a4596758f43ae8289e667b2a506654aba1d863 100644 (file)
@@ -11,11 +11,13 @@ static void dump_and_abort(char* msg) {
     fprintf(f, "%s\n\n", msg);
     if (DumpFn) DumpFn(f);
     fclose(f);
-    abort();
+    _Exit(1);
 }
 
 static void handle_signal(int sig) {
-    if (SIGBUS == sig) {
+    if (SIGABRT == sig) {
+        dump_and_abort("SIGABRT - Process abort signal");
+    } else if (SIGBUS == sig) {
         dump_and_abort("SIGBUS - Access to an undefined portion of a memory object");
     } else if (SIGFPE == sig) {
         dump_and_abort("SIGFPE - Erroneous arithmetic operation");
@@ -31,6 +33,7 @@ static void handle_signal(int sig) {
 void dbc_init(char* path, void (*dumpfn)(FILE*)) {
     DumpPath = path;
     DumpFn = dumpfn;
+    signal(SIGABRT,  handle_signal);
     signal(SIGBUS,  handle_signal);
     signal(SIGFPE,  handle_signal);
     signal(SIGILL,  handle_signal);
index c21d88da2e0899793ba6bfd9de9af15d3c58df81..26e281585b7f772252145d7e1f3816b34d767657 100644 (file)
@@ -65,20 +65,20 @@ void dumpdata(FILE* f) {
         fprintf(f, "\t.nrows:\t\t%zu\n",   Regions[i].nrows);
         fprintf(f, "\t.rows:\t\t%p\n",     (void*)Regions[i].rows);
         fprintf(f, "\t.buffer:\n");
-        fprintf(f, "\t\t.status:\t%d\n",    Regions[i].buffer.status);
-        fprintf(f, "\t\t.modtime:\t%llu\n", Regions[i].buffer.modtime);
-        fprintf(f, "\t\t.bufsize:\t%zu\n",  Regions[i].buffer.bufsize);
-        fprintf(f, "\t\t.bufstart:\t%p\n",  (void*)Regions[i].buffer.bufstart);
-        fprintf(f, "\t\t.bufend:\t%p\n",    (void*)Regions[i].buffer.bufend);
-        fprintf(f, "\t\t.gapstart:\t%p\n",  (void*)Regions[i].buffer.gapstart);
-        fprintf(f, "\t\t.gapend:\t%p\n",    (void*)Regions[i].buffer.gapend);
-        fprintf(f, "\t\t.undo:\t\t%p\n",    (void*)Regions[i].buffer.undo);
-        fprintf(f, "\t\t.redo:\t\t%p\n",    (void*)Regions[i].buffer.redo);
-        fprintf(f, "\t\t.save:\t\t%p\n",    (void*)Regions[i].buffer.save);
-        fprintf(f, "\t\t.transid:\t%d\n",   Regions[i].buffer.transid);
-        fprintf(f, "\t\t.selbeg:\t%zu\n",   Regions[i].buffer.selection.beg);
-        fprintf(f, "\t\t.selend:\t%zu\n",   Regions[i].buffer.selection.end);
-        fprintf(f, "\t\t.selcol:\t%zu\n",   Regions[i].buffer.selection.col);
+        fprintf(f, "\t\t.status:\t%d\n",   Regions[i].buffer.status);
+        fprintf(f, "\t\t.modtime:\t%lu\n", Regions[i].buffer.modtime);
+        fprintf(f, "\t\t.bufsize:\t%zu\n", Regions[i].buffer.bufsize);
+        fprintf(f, "\t\t.bufstart:\t%p\n", (void*)Regions[i].buffer.bufstart);
+        fprintf(f, "\t\t.bufend:\t%p\n",   (void*)Regions[i].buffer.bufend);
+        fprintf(f, "\t\t.gapstart:\t%p\n", (void*)Regions[i].buffer.gapstart);
+        fprintf(f, "\t\t.gapend:\t%p\n",   (void*)Regions[i].buffer.gapend);
+        fprintf(f, "\t\t.undo:\t\t%p\n",   (void*)Regions[i].buffer.undo);
+        fprintf(f, "\t\t.redo:\t\t%p\n",   (void*)Regions[i].buffer.redo);
+        fprintf(f, "\t\t.save:\t\t%p\n",   (void*)Regions[i].buffer.save);
+        fprintf(f, "\t\t.transid:\t%d\n",  Regions[i].buffer.transid);
+        fprintf(f, "\t\t.selbeg:\t%zu\n",  Regions[i].buffer.selection.beg);
+        fprintf(f, "\t\t.selend:\t%zu\n",  Regions[i].buffer.selection.end);
+        fprintf(f, "\t\t.selcol:\t%zu\n",  Regions[i].buffer.selection.col);
     }
 }