diff options
author | Michael Meeks <michael.meeks@collabora.com> | 2021-03-25 18:11:13 +0000 |
---|---|---|
committer | Michael Meeks <michael.meeks@collabora.com> | 2021-03-25 20:16:17 +0000 |
commit | 49d6b1d8c0d44efdfa5411189c5e739e93c7e6b6 (patch) | |
tree | bfaa344bd157b02529b71f8587aa875b6ccd795b | |
parent | Calc: Sync tile container size after expanding / collapsing input bar. (diff) | |
download | online-feature/signal-ver-64.tar.gz online-feature/signal-ver-64.zip |
Dump versions when we have a signal.
feature/signal-ver-64
Change-Id: I6b1f5ac1cebdd05dd9ff9541a5418059f55841ed
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
-rw-r--r-- | common/SigUtil.cpp | 19 | ||||
-rw-r--r-- | common/SigUtil.hpp | 5 | ||||
-rw-r--r-- | kit/ForKit.cpp | 2 | ||||
-rw-r--r-- | kit/Kit.cpp | 4 | ||||
-rw-r--r-- | wsd/LOOLWSD.cpp | 2 |
5 files changed, 26 insertions, 6 deletions
diff --git a/common/SigUtil.cpp b/common/SigUtil.cpp index d7574ebc92..922e5da137 100644 --- a/common/SigUtil.cpp +++ b/common/SigUtil.cpp @@ -225,6 +225,7 @@ namespace SigUtil sigaction(SIGHUP, &action, nullptr); } + static char *VersionInfo = nullptr; static char FatalGdbString[256] = { '\0' }; static @@ -260,8 +261,13 @@ namespace SigUtil void dumpBacktrace() { #if !defined(__ANDROID__) - Log::signalLog("\nBacktrace "); + Log::signalLog("\nBacktrace pid: "); Log::signalLogNumber(getpid()); + if (VersionInfo) + { + Log::signalLog(" - "); + Log::signalLog(VersionInfo); + } Log::signalLog(":\n"); const int maxSlots = 50; @@ -283,10 +289,19 @@ namespace SigUtil } } - void setFatalSignals() + void setVersionInfo(const std::string &versionInfo) + { + if (VersionInfo) + free (VersionInfo); + VersionInfo = strdup(versionInfo.c_str()); + } + + void setFatalSignals(const std::string &versionInfo) { struct sigaction action; + setVersionInfo(versionInfo); + sigemptyset(&action.sa_mask); action.sa_flags = 0; action.sa_handler = handleFatalSignal; diff --git a/common/SigUtil.hpp b/common/SigUtil.hpp index b69df1e0e9..269cc7fa5f 100644 --- a/common/SigUtil.hpp +++ b/common/SigUtil.hpp @@ -62,7 +62,10 @@ namespace SigUtil void setTerminationSignals(); /// Trap all fatal signals to assist debugging. - void setFatalSignals(); + void setFatalSignals(const std::string &versionInfo); + + /// Update version info + void setVersionInfo(const std::string &versionInfo); /// Trap generally useful signals void setUserSignals(); diff --git a/kit/ForKit.cpp b/kit/ForKit.cpp index 77549c5ea5..e0f36eeddd 100644 --- a/kit/ForKit.cpp +++ b/kit/ForKit.cpp @@ -508,7 +508,7 @@ int main(int argc, char** argv) } #ifndef FUZZER - SigUtil::setFatalSignals(); + SigUtil::setFatalSignals("forkit startup of " LOOLWSD_VERSION " " LOOLWSD_VERSION_HASH); SigUtil::setTerminationSignals(); #endif diff --git a/kit/Kit.cpp b/kit/Kit.cpp index e0a8da8401..ad1d23b5c3 100644 --- a/kit/Kit.cpp +++ b/kit/Kit.cpp @@ -2168,7 +2168,7 @@ void lokit_main( #if !MOBILEAPP #ifndef FUZZER - SigUtil::setFatalSignals(); + SigUtil::setFatalSignals("kit startup of " LOOLWSD_VERSION " " LOOLWSD_VERSION_HASH); SigUtil::setTerminationSignals(); #endif @@ -2450,6 +2450,8 @@ void lokit_main( if (displayVersion) std::cout << "office version details: " << versionString << std::endl; + SigUtil::setVersionInfo(versionString); + // Add some parameters we want to pass to the client. Could not figure out how to get // the configuration parameters from LOOLWSD.cpp's initialize() or loolwsd.xml here, so // oh well, just have the value hardcoded in KitHelper.hpp. It isn't really useful to diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp index 6e4a535fbc..91da9c7bf3 100644 --- a/wsd/LOOLWSD.cpp +++ b/wsd/LOOLWSD.cpp @@ -3914,7 +3914,7 @@ int LOOLWSD::innerMain() { #if !defined FUZZER && !MOBILEAPP SigUtil::setUserSignals(); - SigUtil::setFatalSignals(); + SigUtil::setFatalSignals("wsd " LOOLWSD_VERSION " " LOOLWSD_VERSION_HASH); SigUtil::setTerminationSignals(); #endif |