From 34004bbf109e7ac65885cb0dcc00a406c6698b52 Mon Sep 17 00:00:00 2001 From: itsmattkc <34096995+itsmattkc@users.noreply.github.com> Date: Thu, 30 Sep 2021 16:04:57 -0700 Subject: [PATCH] added manual crash trigger for handling testing --- app/core.cpp | 17 ++++++++++++++++- app/core.h | 12 ++++++++++++ app/main.cpp | 7 +++++++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/app/core.cpp b/app/core.cpp index d729a8fbe..d6b314b2f 100644 --- a/app/core.cpp +++ b/app/core.cpp @@ -169,6 +169,20 @@ void Core::Start() qInfo() << "Headless pre-cache is not fully implemented yet"; break; } + + // Manual crash triggering + if (core_params_.crash_on_startup()) { + const int interval = 5000; + qInfo() << "Manual crash was triggered. Application will crash in" << interval << "ms"; + QTimer *crash_timer = new QTimer(this); + crash_timer->setInterval(interval); + connect(crash_timer, &QTimer::timeout, this, []{ + // Try to read invalid memory to crash the application + int *invalid_ptr = nullptr; + qDebug() << *invalid_ptr; + }); + crash_timer->start(); + } } void Core::Stop() @@ -1628,7 +1642,8 @@ void Core::OpenProject() Core::CoreParams::CoreParams() : mode_(kRunNormal), - run_fullscreen_(false) + run_fullscreen_(false), + crash_(false) { } diff --git a/app/core.h b/app/core.h index 3d90137f2..a9312599b 100644 --- a/app/core.h +++ b/app/core.h @@ -104,6 +104,16 @@ public: startup_language_ = s; } + bool crash_on_startup() const + { + return crash_; + } + + void set_crash_on_startup(bool e) + { + crash_ = true; + } + private: RunMode mode_; @@ -113,6 +123,8 @@ public: bool run_fullscreen_; + bool crash_; + }; /** diff --git a/app/main.cpp b/app/main.cpp index f177be0de..dd4dbe65b 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -133,6 +133,9 @@ int main(int argc, char *argv[]) parser.AddOption({QStringLiteral("stylesheet")}, QString(), true, QString(), true); parser.AddOption({QStringLiteral("widgetcount")}, QString(), false, QString(), true); + // Hidden crash option for debugging the crash handling + auto crash_option = parser.AddOption({QStringLiteral("-crash")}, QString(), true, QString(), true); + parser.Process(argc, argv); if (help_option->IsSet()) { @@ -159,6 +162,10 @@ int main(int argc, char *argv[]) } } + if (crash_option->IsSet()) { + startup_params.set_crash_on_startup(true); + } + startup_params.set_fullscreen(fullscreen_option->IsSet()); startup_params.set_startup_project(project_argument->GetSetting());