mirror of
https://github.com/corda/corda.git
synced 2025-01-08 14:03:06 +00:00
use packed version of MINIDUMP_EXCEPTION_INFORMATION
dbghelp.dll expects that MINIDUMP_EXCEPTION_INFORMATION has a packed layout and will crash if it doesn't (at least on 64-bit systems), but as of this writing mingw-w64's version is not declared to be so. Hence this workaround.
This commit is contained in:
parent
8fdd547922
commit
8e57639ff5
@ -856,6 +856,16 @@ typedef BOOL (*MiniDumpWriteDumpType)
|
|||||||
const MINIDUMP_USER_STREAM_INFORMATION* userStream,
|
const MINIDUMP_USER_STREAM_INFORMATION* userStream,
|
||||||
const MINIDUMP_CALLBACK_INFORMATION* callback);
|
const MINIDUMP_CALLBACK_INFORMATION* callback);
|
||||||
|
|
||||||
|
// dbghelp.dll expects that MINIDUMP_EXCEPTION_INFORMATION has a
|
||||||
|
// packed layout and will crash if it doesn't (at least on 64-bit
|
||||||
|
// systems), but as of this writing mingw-w64's version is not
|
||||||
|
// declared to be so. Hence this workaround:
|
||||||
|
struct __attribute__ ((__packed__)) My_MINIDUMP_EXCEPTION_INFORMATION {
|
||||||
|
DWORD ThreadId;
|
||||||
|
PEXCEPTION_POINTERS ExceptionPointers;
|
||||||
|
WINBOOL ClientPointers;
|
||||||
|
};
|
||||||
|
|
||||||
void
|
void
|
||||||
dump(LPEXCEPTION_POINTERS e, const char* directory)
|
dump(LPEXCEPTION_POINTERS e, const char* directory)
|
||||||
{
|
{
|
||||||
@ -877,7 +887,7 @@ dump(LPEXCEPTION_POINTERS e, const char* directory)
|
|||||||
(name, FILE_WRITE_DATA, 0, 0, CREATE_ALWAYS, 0, 0);
|
(name, FILE_WRITE_DATA, 0, 0, CREATE_ALWAYS, 0, 0);
|
||||||
|
|
||||||
if (file != INVALID_HANDLE_VALUE) {
|
if (file != INVALID_HANDLE_VALUE) {
|
||||||
MINIDUMP_EXCEPTION_INFORMATION exception
|
My_MINIDUMP_EXCEPTION_INFORMATION exception
|
||||||
= { GetCurrentThreadId(), e, true };
|
= { GetCurrentThreadId(), e, true };
|
||||||
|
|
||||||
MiniDumpWriteDump
|
MiniDumpWriteDump
|
||||||
@ -885,7 +895,7 @@ dump(LPEXCEPTION_POINTERS e, const char* directory)
|
|||||||
GetCurrentProcessId(),
|
GetCurrentProcessId(),
|
||||||
file,
|
file,
|
||||||
MiniDumpWithFullMemory,
|
MiniDumpWithFullMemory,
|
||||||
&exception,
|
reinterpret_cast<MINIDUMP_EXCEPTION_INFORMATION*>(&exception),
|
||||||
0,
|
0,
|
||||||
0);
|
0);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user