summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@collabora.com>2021-03-25 18:11:13 +0000
committerMichael Meeks <michael.meeks@collabora.com>2021-03-25 20:16:17 +0000
commit49d6b1d8c0d44efdfa5411189c5e739e93c7e6b6 (patch)
treebfaa344bd157b02529b71f8587aa875b6ccd795b
parentCalc: Sync tile container size after expanding / collapsing input bar. (diff)
downloadonline-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.cpp19
-rw-r--r--common/SigUtil.hpp5
-rw-r--r--kit/ForKit.cpp2
-rw-r--r--kit/Kit.cpp4
-rw-r--r--wsd/LOOLWSD.cpp2
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