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 <vmik...@collabora.com> AuthorDate: Tue Aug 13 09:08:16 2019 +0200 Commit: Miklos Vajna <vmik...@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 _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits