[Libreoffice-commits] online.git: common/SigUtil.cpp common/SigUtil.hpp kit/Kit.cpp
Miklos Vajna (via logerrit)
logerrit at kemper.freedesktop.org
Tue Aug 13 07:08:51 UTC 2019
common/SigUtil.cpp | 5 +++++
common/SigUtil.hpp | 8 ++++----
kit/Kit.cpp | 2 +-
3 files changed, 10 insertions(+), 5 deletions(-)
New commits:
commit 9a7768b420207d5dec319a068a27f03bbef6052a
Author: Miklos Vajna <vmiklos at collabora.com>
AuthorDate: Tue Aug 13 09:08:16 2019 +0200
Commit: Miklos Vajna <vmiklos at collabora.com>
CommitDate: Tue Aug 13 09:08:32 2019 +0200
common: wrap SigHandlerTrap in a getter function to avoid ODR violation
Otherwise both loolwsd and unit-copy-paste.so would have a
SigHandlerTrap:
==26186==ERROR: AddressSanitizer: odr-violation (0x000002090ae0):
[1] size=40 'SigHandlerTrap' ../common/SigUtil.cpp:76:12
[2] size=40 'SigHandlerTrap' common/SigUtil.cpp:76:12
These globals were registered at these points:
[1]:
#0 0x5f9a28 in __asan_register_globals.part.13 /home/vmiklos/git/libreoffice/lode/packages/llvm-472c6ef8b0f53061b049039f9775ab127beafbe4.src/compiler-rt/lib/asan/asan_globals.cc:365
#1 0x7f8f537f1d8b in asan.module_ctor (/home/vmiklos/git/libreoffice/online-san/test/../test/.libs/unit-copy-paste.so+0x60ad8b)
[2]:
#0 0x5f9a28 in __asan_register_globals.part.13 /home/vmiklos/git/libreoffice/lode/packages/llvm-472c6ef8b0f53061b049039f9775ab127beafbe4.src/compiler-rt/lib/asan/asan_globals.cc:365
#1 0xe2bcfe in asan.module_ctor (/home/vmiklos/git/libreoffice/online-san/loolwsd+0xe2bcfe)
Change-Id: I54d5f6d4298848cacd437d302cff0e8c5003fb8c
diff --git a/common/SigUtil.cpp b/common/SigUtil.cpp
index 61111b867..933ad7f3e 100644
--- a/common/SigUtil.cpp
+++ b/common/SigUtil.cpp
@@ -77,6 +77,11 @@ std::mutex SigHandlerTrap;
namespace SigUtil
{
+ std::mutex& getSigHandlerTrap()
+ {
+ return SigHandlerTrap;
+ }
+
const char *signalName(const int signo)
{
switch (signo)
diff --git a/common/SigUtil.hpp b/common/SigUtil.hpp
index 9a366dc6d..723dd2e5e 100644
--- a/common/SigUtil.hpp
+++ b/common/SigUtil.hpp
@@ -43,12 +43,12 @@ extern std::atomic<bool> MobileTerminationFlag;
#if !MOBILEAPP
-/// Mutex to trap signal handler, if any,
-/// and prevent _Exit while collecting backtrace.
-extern std::mutex SigHandlerTrap;
-
namespace SigUtil
{
+ /// Mutex to trap signal handler, if any,
+ /// and prevent _Exit while collecting backtrace.
+ std::mutex& getSigHandlerTrap();
+
/// Returns the name of the signal.
const char* signalName(int signo);
diff --git a/kit/Kit.cpp b/kit/Kit.cpp
index 6f5bda553..42962fe41 100644
--- a/kit/Kit.cpp
+++ b/kit/Kit.cpp
@@ -2768,7 +2768,7 @@ void lokit_main(
// to prevent exiting.
LOG_INF("Process finished.");
Log::shutdown();
- std::unique_lock<std::mutex> lock(SigHandlerTrap);
+ std::unique_lock<std::mutex> lock(SigUtil::getSigHandlerTrap());
std::_Exit(Application::EXIT_OK);
#endif
More information about the Libreoffice-commits
mailing list