Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/creator/creator_signals.c55
1 files changed, 34 insertions, 21 deletions
diff --git a/source/creator/creator_signals.c b/source/creator/creator_signals.c
index 80aba762cfc..81e6178c502 100644
--- a/source/creator/creator_signals.c
+++ b/source/creator/creator_signals.c
@@ -188,67 +188,67 @@ LONG WINAPI windows_exception_handler(EXCEPTION_POINTERS *ExceptionInfo)
{
switch (ExceptionInfo->ExceptionRecord->ExceptionCode) {
case EXCEPTION_ACCESS_VIOLATION:
- fputs("Error: EXCEPTION_ACCESS_VIOLATION\n", stderr);
+ fputs("Error : EXCEPTION_ACCESS_VIOLATION\n", stderr);
break;
case EXCEPTION_ARRAY_BOUNDS_EXCEEDED:
- fputs("Error: EXCEPTION_ARRAY_BOUNDS_EXCEEDED\n", stderr);
+ fputs("Error : EXCEPTION_ARRAY_BOUNDS_EXCEEDED\n", stderr);
break;
case EXCEPTION_BREAKPOINT:
- fputs("Error: EXCEPTION_BREAKPOINT\n", stderr);
+ fputs("Error : EXCEPTION_BREAKPOINT\n", stderr);
break;
case EXCEPTION_DATATYPE_MISALIGNMENT:
- fputs("Error: EXCEPTION_DATATYPE_MISALIGNMENT\n", stderr);
+ fputs("Error : EXCEPTION_DATATYPE_MISALIGNMENT\n", stderr);
break;
case EXCEPTION_FLT_DENORMAL_OPERAND:
- fputs("Error: EXCEPTION_FLT_DENORMAL_OPERAND\n", stderr);
+ fputs("Error : EXCEPTION_FLT_DENORMAL_OPERAND\n", stderr);
break;
case EXCEPTION_FLT_DIVIDE_BY_ZERO:
- fputs("Error: EXCEPTION_FLT_DIVIDE_BY_ZERO\n", stderr);
+ fputs("Error : EXCEPTION_FLT_DIVIDE_BY_ZERO\n", stderr);
break;
case EXCEPTION_FLT_INEXACT_RESULT:
- fputs("Error: EXCEPTION_FLT_INEXACT_RESULT\n", stderr);
+ fputs("Error : EXCEPTION_FLT_INEXACT_RESULT\n", stderr);
break;
case EXCEPTION_FLT_INVALID_OPERATION:
- fputs("Error: EXCEPTION_FLT_INVALID_OPERATION\n", stderr);
+ fputs("Error : EXCEPTION_FLT_INVALID_OPERATION\n", stderr);
break;
case EXCEPTION_FLT_OVERFLOW:
- fputs("Error: EXCEPTION_FLT_OVERFLOW\n", stderr);
+ fputs("Error : EXCEPTION_FLT_OVERFLOW\n", stderr);
break;
case EXCEPTION_FLT_STACK_CHECK:
- fputs("Error: EXCEPTION_FLT_STACK_CHECK\n", stderr);
+ fputs("Error : EXCEPTION_FLT_STACK_CHECK\n", stderr);
break;
case EXCEPTION_FLT_UNDERFLOW:
- fputs("Error: EXCEPTION_FLT_UNDERFLOW\n", stderr);
+ fputs("Error : EXCEPTION_FLT_UNDERFLOW\n", stderr);
break;
case EXCEPTION_ILLEGAL_INSTRUCTION:
- fputs("Error: EXCEPTION_ILLEGAL_INSTRUCTION\n", stderr);
+ fputs("Error : EXCEPTION_ILLEGAL_INSTRUCTION\n", stderr);
break;
case EXCEPTION_IN_PAGE_ERROR:
- fputs("Error: EXCEPTION_IN_PAGE_ERROR\n", stderr);
+ fputs("Error : EXCEPTION_IN_PAGE_ERROR\n", stderr);
break;
case EXCEPTION_INT_DIVIDE_BY_ZERO:
- fputs("Error: EXCEPTION_INT_DIVIDE_BY_ZERO\n", stderr);
+ fputs("Error : EXCEPTION_INT_DIVIDE_BY_ZERO\n", stderr);
break;
case EXCEPTION_INT_OVERFLOW:
- fputs("Error: EXCEPTION_INT_OVERFLOW\n", stderr);
+ fputs("Error : EXCEPTION_INT_OVERFLOW\n", stderr);
break;
case EXCEPTION_INVALID_DISPOSITION:
- fputs("Error: EXCEPTION_INVALID_DISPOSITION\n", stderr);
+ fputs("Error : EXCEPTION_INVALID_DISPOSITION\n", stderr);
break;
case EXCEPTION_NONCONTINUABLE_EXCEPTION:
- fputs("Error: EXCEPTION_NONCONTINUABLE_EXCEPTION\n", stderr);
+ fputs("Error : EXCEPTION_NONCONTINUABLE_EXCEPTION\n", stderr);
break;
case EXCEPTION_PRIV_INSTRUCTION:
- fputs("Error: EXCEPTION_PRIV_INSTRUCTION\n", stderr);
+ fputs("Error : EXCEPTION_PRIV_INSTRUCTION\n", stderr);
break;
case EXCEPTION_SINGLE_STEP:
- fputs("Error: EXCEPTION_SINGLE_STEP\n", stderr);
+ fputs("Error : EXCEPTION_SINGLE_STEP\n", stderr);
break;
case EXCEPTION_STACK_OVERFLOW:
- fputs("Error: EXCEPTION_STACK_OVERFLOW\n", stderr);
+ fputs("Error : EXCEPTION_STACK_OVERFLOW\n", stderr);
break;
default:
- fputs("Error: Unrecognized Exception\n", stderr);
+ fputs("Error : Unrecognized Exception\n", stderr);
break;
}
@@ -257,6 +257,19 @@ LONG WINAPI windows_exception_handler(EXCEPTION_POINTERS *ExceptionInfo)
/* If this is a stack overflow then we can't walk the stack, so just show
* where the error happened */
if (EXCEPTION_STACK_OVERFLOW != ExceptionInfo->ExceptionRecord->ExceptionCode) {
+ HMODULE mod;
+ CHAR modulename[MAX_PATH];
+ LPVOID address = ExceptionInfo->ExceptionRecord->ExceptionAddress;
+
+ fprintf(stderr, "Address : 0x%p\n", address);
+ if (GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, address, &mod)) {
+ if (GetModuleFileName(mod, modulename, MAX_PATH)) {
+ fprintf(stderr, "Module : %s\n", modulename);
+ }
+ }
+
+ fflush(stderr);
+
#ifdef NDEBUG
TerminateProcess(GetCurrentProcess(), SIGSEGV);
#else