mirror of
https://github.com/corda/corda.git
synced 2025-01-07 13:38:47 +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_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
|
||||
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);
|
||||
|
||||
if (file != INVALID_HANDLE_VALUE) {
|
||||
MINIDUMP_EXCEPTION_INFORMATION exception
|
||||
My_MINIDUMP_EXCEPTION_INFORMATION exception
|
||||
= { GetCurrentThreadId(), e, true };
|
||||
|
||||
MiniDumpWriteDump
|
||||
@ -885,7 +895,7 @@ dump(LPEXCEPTION_POINTERS e, const char* directory)
|
||||
GetCurrentProcessId(),
|
||||
file,
|
||||
MiniDumpWithFullMemory,
|
||||
&exception,
|
||||
reinterpret_cast<MINIDUMP_EXCEPTION_INFORMATION*>(&exception),
|
||||
0,
|
||||
0);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user