diff options
-rw-r--r-- | src/inspircd.cpp | 4 | ||||
-rw-r--r-- | win/inspircd_win32wrapper.cpp | 64 | ||||
-rw-r--r-- | win/inspircd_win32wrapper.h | 7 |
3 files changed, 2 insertions, 73 deletions
diff --git a/src/inspircd.cpp b/src/inspircd.cpp index 3149d74ea..34d15e4e3 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -702,9 +702,7 @@ int ircd(int argc, char ** argv) int main(int argc, char ** argv) { - __try { - ircd(argc,argv); - } __except(__exceptionHandler(GetExceptionInformation())) {} + ircd(argc,argv); return 0; } diff --git a/win/inspircd_win32wrapper.cpp b/win/inspircd_win32wrapper.cpp index a25544aab..e6f25df18 100644 --- a/win/inspircd_win32wrapper.cpp +++ b/win/inspircd_win32wrapper.cpp @@ -654,67 +654,3 @@ int gettimeofday(struct timeval * tv, void * tz) tv->tv_usec = (mstime - (tv->tv_sec * 1000)) * 1000; return 0; } - -int __exceptionHandler(PEXCEPTION_POINTERS pExceptPtrs) -{ - SYSTEMTIME _time; - HANDLE hDump; - char mod[MAX_PATH*2]; - char * pMod = mod; - char dump_filename[MAX_PATH]; - MINIDUMP_EXCEPTION_INFORMATION dumpInfo; - DWORD code; - - if(pExceptPtrs == NULL) { - __try { - RaiseException(EXCEPTION_BREAKPOINT, 0, 0, NULL); - } __except(__exceptionHandler(GetExceptionInformation()), EXCEPTION_CONTINUE_EXECUTION) {} - } - - printf("Exception caught at 0x%.8X! Attempting to write crash dump file.\n", (unsigned long)pExceptPtrs->ExceptionRecord->ExceptionAddress); - - if(GetModuleFileName(0, mod, MAX_PATH*2) > 0) - { - if( (pMod = strrchr(mod, '\\')) != NULL ) - ++pMod; - else - strcpy(mod, "unk"); - } - else - strcpy(mod, "unk"); - - GetSystemTime(&_time); - snprintf(dump_filename, MAX_PATH, "dump-%s-%u-%u-%u-%u-%u-%u.dmp", - pMod, _time.wYear, _time.wMonth, _time.wDay, _time.wHour, _time.wMinute, _time.wSecond); - - hDump = CreateFile(dump_filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_WRITE_THROUGH, 0); - if(hDump != INVALID_HANDLE_VALUE) - { - dumpInfo.ClientPointers = FALSE; - dumpInfo.ExceptionPointers = pExceptPtrs; - dumpInfo.ThreadId = GetCurrentThreadId(); - - /* let's write a full memory dump. insp shouldn't be using much memory anyway, and it will help a lot with debugging. */ - MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDump, MiniDumpWithFullMemory, &dumpInfo, NULL, NULL); - FlushFileBuffers(hDump); - CloseHandle(hDump); - } - - /* check for a debugger */ - __asm { - pushad - pushfd - mov eax, fs:[18h] - mov eax, dword ptr [eax+30h] - mov ebx, dword ptr [eax] - mov code, ebx - popfd - popad - } - - /* break into debugger if we have one */ - if(code & 0x10000) - return EXCEPTION_CONTINUE_SEARCH; - else /* otherwise exit abnormally */ - return EXCEPTION_CONTINUE_EXECUTION; -} diff --git a/win/inspircd_win32wrapper.h b/win/inspircd_win32wrapper.h index a6d023c56..6a3b7a36b 100644 --- a/win/inspircd_win32wrapper.h +++ b/win/inspircd_win32wrapper.h @@ -21,7 +21,7 @@ /* Define the WINDOWS macro. This means we're building on windows to the rest of the server. I think this is more reasonable than using WIN32, especially if we're gonna be doing 64-bit compiles */ #define WINDOWS 1 -#define ENABLE_CRASHDUMPS 1 +#define ENABLE_CRASHDUMPS 0 /* Make builds smaller, leaner and faster */ #define VC_EXTRALEAN @@ -204,10 +204,5 @@ void ChangeWindowsSpecificPointers(InspIRCd* Instance); bool ValidateWindowsDnsServer(ServerConfig* conf, const char* tag, const char* value, ValueItem &data); -#ifdef ENABLE_CRASHDUMPS -typedef struct _EXCEPTION_POINTERS EXCEPTION_POINTERS, *PEXCEPTION_POINTERS; -int __cdecl __exceptionHandler(PEXCEPTION_POINTERS pExceptPtrs); -#endif - #endif |