* 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
* 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
}
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)
{
/* 0-termination not found */
GNUNET_break_op (0);
- abort ();
return 0;
}
pos++;
#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.
*
/**
* 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
if (ret == NULL)
{
LOG_STRERROR (GNUNET_ERROR_TYPE_ERROR, "malloc");
- abort ();
+ GNUNET_abort ();
}
return ret;
}
if (ret == NULL)
{
LOG_STRERROR (GNUNET_ERROR_TYPE_ERROR, "malloc");
- abort ();
+ GNUNET_abort ();
}
#ifdef W32_MEM_LIMIT
*((size_t *) ret) = size;
if ((NULL == ptr) && (n > 0))
{
LOG_STRERROR (GNUNET_ERROR_TYPE_ERROR, "realloc");
- abort ();
+ GNUNET_abort ();
}
#ifdef W32_MEM_LIMIT
ptr = &((size_t *) ptr)[1];
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.
*
_
("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 ();
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);
LOG_STRERROR (GNUNET_ERROR_TYPE_WARNING, "system");
#endif
#endif
- abort ();
+ GNUNET_abort ();
break;
}
if ((ret == 0) && (timeout.rel_value == 0) && (busy_wait_warning > 16))