introducing GNUNET_abort
authorChristian Grothoff <christian@grothoff.org>
Sat, 5 Nov 2011 18:47:50 +0000 (18:47 +0000)
committerChristian Grothoff <christian@grothoff.org>
Sat, 5 Nov 2011 18:47:50 +0000 (18:47 +0000)
src/datacache/plugin_datacache_mysql.c
src/datastore/plugin_datastore_mysql.c
src/fs/fs.c
src/hello/hello.c
src/include/gnunet_common.h
src/util/common_allocation.c
src/util/common_logging.c
src/util/crypto_random.c
src/util/scheduler.c

index cf282dbdccbb357d1e38ef65c9593852d3b1e6fb..9185c5ca1eab87f54db74624ca03e031c1be1532 100644 (file)
  * a failure of the command 'cmd' with the message given
  * by strerror(errno).
  */
-#define DIE_MYSQL(cmd, dbh) do { GNUNET_log(GNUNET_ERROR_TYPE__ERROR, _("`%s' failed at %s:%d with error: %s\n"), cmd, __FILE__, __LINE__, mysql_error((dbh)->dbf)); abort(); } while(0);
+#define DIE_MYSQL(cmd, dbh) do { GNUNET_log(GNUNET_ERROR_TYPE__ERROR, _("`%s' failed at %s:%d with error: %s\n"), cmd, __FILE__, __LINE__, mysql_error((dbh)->dbf)); GNUNET_abort(); } while(0);
 
 /**
  * Log an error message at log-level 'level' that indicates
index 1048a370f0c1b0ba5dda34470e1437b0a60bf61e..a6e65eeec4a7b96084f4ce1451677f6bb4053697 100644 (file)
  * a failure of the command 'cmd' with the message given
  * by strerror(errno).
  */
-#define DIE_MYSQL(cmd, dbh) do { GNUNET_log(GNUNET_ERROR_TYPE_ERROR, _("`%s' failed at %s:%d with error: %s\n"), cmd, __FILE__, __LINE__, mysql_error((dbh)->dbf)); abort(); } while(0);
+#define DIE_MYSQL(cmd, dbh) do { GNUNET_log(GNUNET_ERROR_TYPE_ERROR, _("`%s' failed at %s:%d with error: %s\n"), cmd, __FILE__, __LINE__, mysql_error((dbh)->dbf)); GNUNET_abort(); } while(0);
 
 /**
  * Log an error message at log-level 'level' that indicates
index 93971075abec31bc5b95e24226c2ee77278bf3ae..83c0bf2715fb0e625b9a38308067515456b1a2f1 100644 (file)
@@ -2464,7 +2464,7 @@ deserialize_download (struct GNUNET_FS_Handle *h,
   }
   if (parent != NULL)
   {
-    abort ();                   // for debugging for now
+    GNUNET_abort ();                   // for debugging for now - FIXME
     GNUNET_CONTAINER_DLL_insert (parent->child_head, parent->child_tail, dc);
   }
   if (search != NULL)
index a0c26d1ab6906b0b6ac3ddee2e3f82452377ccfa..a95c0eee218e57fe6bde9b3670b39b22474e1675 100644 (file)
@@ -130,7 +130,6 @@ get_hello_address_size (const char *buf, size_t max, uint16_t * ralen)
   {
     /* 0-termination not found */
     GNUNET_break_op (0);
-    abort ();
     return 0;
   }
   pos++;
index 8f3ff81278886ac8fb1d5b6f15ac7bba93ed734e..69a428bb5cda73503eb0525bc10ff1495b324e3c 100644 (file)
@@ -245,6 +245,13 @@ GNUNET_log_from_nocheck (enum GNUNET_ErrorType kind, const char *comp,
 #define GNUNET_log_from(...)
 #endif
 
+
+/**
+ * Abort the process, generate a core dump if possible.
+ */
+void
+GNUNET_abort (void);
+
 /**
  * Ignore the next n calls to the log function.
  *
@@ -351,12 +358,12 @@ GNUNET_error_type_to_string (enum GNUNET_ErrorType kind);
 /**
  * Use this for fatal errors that cannot be handled
  */
-#define GNUNET_assert(cond) do { if (! (cond)) { GNUNET_log(GNUNET_ERROR_TYPE_ERROR, _("Assertion failed at %s:%d.\n"), __FILE__, __LINE__); abort(); } } while(0)
+#define GNUNET_assert(cond) do { if (! (cond)) { GNUNET_log(GNUNET_ERROR_TYPE_ERROR, _("Assertion failed at %s:%d.\n"), __FILE__, __LINE__); GNUNET_abort(); } } while(0)
 
 /**
  * Use this for fatal errors that cannot be handled
  */
-#define GNUNET_assert_at(cond, f, l) do { if (! (cond)) { GNUNET_log(GNUNET_ERROR_TYPE_ERROR, _("Assertion failed at %s:%d.\n"), f, l); abort(); } } while(0)
+#define GNUNET_assert_at(cond, f, l) do { if (! (cond)) { GNUNET_log(GNUNET_ERROR_TYPE_ERROR, _("Assertion failed at %s:%d.\n"), f, l); GNUNET_abort(); } } while(0)
 
 /**
  * Use this for internal assertion violations that are
index 340ad53346da13e7f513ecbecbc65a3fc2cb09ee..fd5e993e2fcdff4d72551df9e228bd3f9d8052fb 100644 (file)
@@ -67,7 +67,7 @@ GNUNET_xmalloc_ (size_t size, const char *filename, int linenumber)
   if (ret == NULL)
   {
     LOG_STRERROR (GNUNET_ERROR_TYPE_ERROR, "malloc");
-    abort ();
+    GNUNET_abort ();
   }
   return ret;
 }
@@ -103,7 +103,7 @@ GNUNET_xmemdup_ (const void *buf, size_t size, const char *filename,
   if (ret == NULL)
   {
     LOG_STRERROR (GNUNET_ERROR_TYPE_ERROR, "malloc");
-    abort ();
+    GNUNET_abort ();
   }
 #ifdef W32_MEM_LIMIT
   *((size_t *) ret) = size;
@@ -174,7 +174,7 @@ GNUNET_xrealloc_ (void *ptr, size_t n, const char *filename, int linenumber)
   if ((NULL == ptr) && (n > 0))
   {
     LOG_STRERROR (GNUNET_ERROR_TYPE_ERROR, "realloc");
-    abort ();
+    GNUNET_abort ();
   }
 #ifdef W32_MEM_LIMIT
   ptr = &((size_t *) ptr)[1];
index 101f2fd9febc6277324077501dba0521d71e939e..e96fb8e7888339929bfcef011e0994766130f156 100644 (file)
@@ -260,6 +260,20 @@ resize_logdefs ()
   logdefs = GNUNET_realloc (logdefs, logdefs_size * sizeof (struct LogDef));
 }
 
+
+/**
+ * Abort the process, generate a core dump if possible.
+ */
+void
+GNUNET_abort ()
+{
+#if WINDOWS
+  DebugBreak();
+#endif
+  abort();
+}
+
+
 /**
  * Utility function - adds a parsed definition to logdefs array.
  *
index c74d60f4f8bc7ad2767e7e05d4a8395ed2d99ad0..719acf07c6107e6e78b097f0eb16b76c4e247e47 100644 (file)
@@ -266,7 +266,7 @@ void __attribute__ ((constructor)) GNUNET_CRYPTO_random_init ()
              _
              ("libgcrypt has not the expected version (version %s is required).\n"),
              GCRYPT_VERSION);
-    abort ();
+    GNUNET_abort ();
   }
 #ifdef gcry_fast_random_poll
   gcry_fast_random_poll ();
index 0c43744713afd4c814f3279cda4ae800c8c31dfd..82b888fec63e17e658265f37823784807ba88381 100644 (file)
@@ -676,7 +676,7 @@ run_ready (struct GNUNET_NETWORK_FDSet *rs, struct GNUNET_NETWORK_FDSet *ws)
     if (((tc.reason & GNUNET_SCHEDULER_REASON_WRITE_READY) != 0) &&
         (pos->write_fd != -1) &&
         (!GNUNET_NETWORK_fdset_test_native (ws, pos->write_fd)))
-      abort ();                 // added to ready in previous select loop!
+      GNUNET_abort ();                 // added to ready in previous select loop!
 #if DEBUG_TASKS
     LOG (GNUNET_ERROR_TYPE_DEBUG, "Running task: %llu / %p\n", pos->id,
          pos->callback_cls);
@@ -852,7 +852,7 @@ GNUNET_SCHEDULER_run (GNUNET_SCHEDULER_Task task, void *task_cls)
         LOG_STRERROR (GNUNET_ERROR_TYPE_WARNING, "system");
 #endif
 #endif
-      abort ();
+      GNUNET_abort ();
       break;
     }
     if ((ret == 0) && (timeout.rel_value == 0) && (busy_wait_warning > 16))