]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/debug.cpp
Mapnode: Replace rotateAlongYAxis with improved version
[dragonfireclient.git] / src / debug.cpp
index bd970a8e4b953de49265dad7d5f7e99b75a51497..3608f42d2315254f829a105ee22766332d30a3ce 100644 (file)
@@ -26,8 +26,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include <stdlib.h>
 #include <cstring>
 #include <map>
-#include "jthread/jmutex.h"
-#include "jthread/jmutexautolock.h"
+#include "threading/mutex.h"
+#include "threading/mutex_auto_lock.h"
 #include "config.h"
 
 #ifdef _MSC_VER
@@ -133,11 +133,11 @@ Nullstream dummyout;
        Assert
 */
 
-void assert_fail(const char *assertion, const char *file,
+void sanity_check_fn(const char *assertion, const char *file,
                unsigned int line, const char *function)
 {
        DEBUGPRINT("\nIn thread %lx:\n"
-                       "%s:%u: %s: Assertion '%s' failed.\n",
+                       "%s:%u: %s: An engine assumption '%s' failed.\n",
                        (unsigned long)get_current_thread_id(),
                        file, line, function, assertion);
 
@@ -149,6 +149,22 @@ void assert_fail(const char *assertion, const char *file,
        abort();
 }
 
+void fatal_error_fn(const char *msg, const char *file,
+               unsigned int line, const char *function)
+{
+       DEBUGPRINT("\nIn thread %lx:\n"
+                       "%s:%u: %s: A fatal error occurred: %s\n",
+                       (unsigned long)get_current_thread_id(),
+                       file, line, function, msg);
+
+       debug_stacks_print();
+
+       if(g_debugstreams[1])
+               fclose(g_debugstreams[1]);
+
+       abort();
+}
+
 /*
        DebugStack
 */
@@ -213,7 +229,7 @@ void DebugStack::print(std::ostream &os, bool everything)
 }
 
 std::map<threadid_t, DebugStack*> g_debug_stacks;
-JMutex g_debug_stacks_mutex;
+Mutex g_debug_stacks_mutex;
 
 void debug_stacks_init()
 {
@@ -221,7 +237,7 @@ void debug_stacks_init()
 
 void debug_stacks_print_to(std::ostream &os)
 {
-       JMutexAutoLock lock(g_debug_stacks_mutex);
+       MutexAutoLock lock(g_debug_stacks_mutex);
 
        os<<"Debug stacks:"<<std::endl;
 
@@ -235,7 +251,7 @@ void debug_stacks_print_to(std::ostream &os)
 
 void debug_stacks_print()
 {
-       JMutexAutoLock lock(g_debug_stacks_mutex);
+       MutexAutoLock lock(g_debug_stacks_mutex);
 
        DEBUGPRINT("Debug stacks:\n");
 
@@ -257,7 +273,7 @@ DebugStacker::DebugStacker(const char *text)
 {
        threadid_t threadid = get_current_thread_id();
 
-       JMutexAutoLock lock(g_debug_stacks_mutex);
+       MutexAutoLock lock(g_debug_stacks_mutex);
 
        std::map<threadid_t, DebugStack*>::iterator n;
        n = g_debug_stacks.find(threadid);
@@ -291,7 +307,7 @@ DebugStacker::DebugStacker(const char *text)
 
 DebugStacker::~DebugStacker()
 {
-       JMutexAutoLock lock(g_debug_stacks_mutex);
+       MutexAutoLock lock(g_debug_stacks_mutex);
 
        if(m_overflowed == true)
                return;
@@ -369,9 +385,11 @@ long WINAPI Win32ExceptionHandler(struct _EXCEPTION_POINTERS *pExceptInfo)
        MINIDUMP_USER_STREAM_INFORMATION mdusi;
        MINIDUMP_USER_STREAM mdus;
        bool minidump_created = false;
-       std::string version_str("Minetest ");
 
-       std::string dumpfile = porting::path_user + DIR_DELIM "minetest.dmp";
+       std::string dumpfile = porting::path_user + DIR_DELIM PROJECT_NAME ".dmp";
+
+       std::string version_str(PROJECT_NAME " ");
+       version_str += g_version_hash;
 
        HANDLE hFile = CreateFileA(dumpfile.c_str(), GENERIC_WRITE,
                FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
@@ -385,8 +403,6 @@ long WINAPI Win32ExceptionHandler(struct _EXCEPTION_POINTERS *pExceptInfo)
        mdei.ExceptionPointers = pExceptInfo;
        mdei.ThreadId              = GetCurrentThreadId();
 
-       version_str += minetest_version_hash;
-
        mdus.Type       = CommentStreamA;
        mdus.BufferSize = version_str.size();
        mdus.Buffer     = (PVOID)version_str.c_str();