mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-23 23:45:35 +08:00
Cause fatal errors to trigger a crashpad crash on Windows release builds.
This is needed because Qt changed from `std::abort` to `__fastfail`, which can't be caught by crashpad.
This commit is contained in:
@@ -14,6 +14,10 @@
|
||||
#include "blackmisc/worker.h"
|
||||
#include "blackconfig/buildconfig.h"
|
||||
|
||||
#ifdef BLACK_USE_CRASHPAD
|
||||
#include "crashpad/client/simulate_crash.h"
|
||||
#endif
|
||||
|
||||
#include <QCoreApplication>
|
||||
#include <QGlobalStatic>
|
||||
#include <QMessageLogContext>
|
||||
@@ -44,7 +48,13 @@ namespace BlackMisc
|
||||
const CStatusMessage statusMessage(type, context, message);
|
||||
const auto invokee = [statusMessage] { CLogHandler::instance()->logLocalMessage(statusMessage); };
|
||||
#if defined(Q_CC_MSVC) && defined(QT_NO_DEBUG)
|
||||
if (type == QtFatalMsg) { MessageBoxW(nullptr, message.toStdWString().c_str(), nullptr, MB_OK); }
|
||||
if (type == QtFatalMsg)
|
||||
{
|
||||
MessageBoxW(nullptr, message.toStdWString().c_str(), nullptr, MB_OK); // display assert dialog in release build
|
||||
# if defined(BLACK_USE_CRASHPAD)
|
||||
CRASHPAD_SIMULATE_CRASH(); // workaround inability to catch __fastfail
|
||||
# endif
|
||||
}
|
||||
#endif
|
||||
if (type == QtFatalMsg && CLogHandler::instance()->thread() != QThread::currentThread())
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user