diff --git a/common/Unit.hpp b/common/Unit.hpp index e679136fa1..e715eebec0 100644 --- a/common/Unit.hpp +++ b/common/Unit.hpp @@ -409,6 +409,10 @@ public: /// When a new child kit process reports virtual void newChild(const std::shared_ptr& /*child*/) {} + + /// When we get a segfault message from forkit; override to test crashes ... + virtual void kitSegfault(int /* count */) { exitTest(TestResult::Failed, "kit segfault"); } + /// Intercept createStorage virtual bool createStorage(const Poco::URI& /* uri */, const std::string& /* jailRoot */, diff --git a/test/UnitWOPICrashModified.cpp b/test/UnitWOPICrashModified.cpp index 2269bd2577..617f9aa951 100644 --- a/test/UnitWOPICrashModified.cpp +++ b/test/UnitWOPICrashModified.cpp @@ -33,6 +33,8 @@ public: { } + void kitSegfault(int /* count */) override { /* ignore */ } + std::unique_ptr assertPutFileRequest(const Poco::Net::HTTPRequest&) override { failTest("Unexpected PutFile when there should be no file on disk to upload"); diff --git a/wsd/COOLWSD.cpp b/wsd/COOLWSD.cpp index 0ccc18cb83..5ba9d0cad4 100644 --- a/wsd/COOLWSD.cpp +++ b/wsd/COOLWSD.cpp @@ -1054,6 +1054,7 @@ void ForKitProcWSHandler::handleMessage(const std::vector &data) { Admin::instance().addSegFaultCount(count); LOG_INF(count << " coolkit processes crashed with segmentation fault."); + UnitWSD::get().kitSegfault(count); } else {