diff options
author | Arne Juul <arnej@verizonmedia.com> | 2021-06-02 09:03:07 +0000 |
---|---|---|
committer | Arne Juul <arnej@verizonmedia.com> | 2021-06-02 09:03:07 +0000 |
commit | 6d906737aee7f156dea8d9540ac5b94b76c3b75c (patch) | |
tree | 26da74847c97722ddc37c0dd61d66e39d3dcdf77 /storageserver | |
parent | f5f4606cc41ace593279d1548657c72a4af45ad7 (diff) |
avoid deadlock on signal lock
* a signal handler is not a thread
* if the main thread holds the lock when the signal handler is invoked
in the same thread, it will deadlock
* holding the lock is not necessary for notify_one()
Diffstat (limited to 'storageserver')
-rw-r--r-- | storageserver/src/apps/storaged/storage.cpp | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/storageserver/src/apps/storaged/storage.cpp b/storageserver/src/apps/storaged/storage.cpp index 8098ee138db..6fd672574c6 100644 --- a/storageserver/src/apps/storaged/storage.cpp +++ b/storageserver/src/apps/storaged/storage.cpp @@ -65,9 +65,7 @@ public: ~StorageApp() override; void handleSignal(int signal) { - LOG(info, "Got signal %d, waiting for lock", signal); - std::lock_guard sync(_signalLock); - LOG(info, "Got lock for signal %d", signal); + LOG(info, "Got signal %d", signal); _lastSignal = signal; _signalCond.notify_one(); } |