mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-15 09:15:34 +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 "blackmisc/worker.h"
|
||||||
#include "blackconfig/buildconfig.h"
|
#include "blackconfig/buildconfig.h"
|
||||||
|
|
||||||
|
#ifdef BLACK_USE_CRASHPAD
|
||||||
|
#include "crashpad/client/simulate_crash.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
#include <QGlobalStatic>
|
#include <QGlobalStatic>
|
||||||
#include <QMessageLogContext>
|
#include <QMessageLogContext>
|
||||||
@@ -44,7 +48,13 @@ namespace BlackMisc
|
|||||||
const CStatusMessage statusMessage(type, context, message);
|
const CStatusMessage statusMessage(type, context, message);
|
||||||
const auto invokee = [statusMessage] { CLogHandler::instance()->logLocalMessage(statusMessage); };
|
const auto invokee = [statusMessage] { CLogHandler::instance()->logLocalMessage(statusMessage); };
|
||||||
#if defined(Q_CC_MSVC) && defined(QT_NO_DEBUG)
|
#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
|
#endif
|
||||||
if (type == QtFatalMsg && CLogHandler::instance()->thread() != QThread::currentThread())
|
if (type == QtFatalMsg && CLogHandler::instance()->thread() != QThread::currentThread())
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user