From e74c6a3b388ded66fcc4cfb1fa5bece881b63113 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 30 Jul 2016 12:34:45 -0400 Subject: Fix stall by making PreProcessor tick periodically I am not sure exactly what scenarios cause this to happen, every event should post to the semaphore, but having the PreProcessor thread tick idly doesn't hurt anything and resolves the issue. --- src/server/PreProcessor.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/server') diff --git a/src/server/PreProcessor.cpp b/src/server/PreProcessor.cpp index 6c514f00..e26ebcdc 100644 --- a/src/server/PreProcessor.cpp +++ b/src/server/PreProcessor.cpp @@ -114,7 +114,11 @@ void PreProcessor::run() { ThreadManager::set_flag(THREAD_PRE_PROCESS); - while (_sem.wait() && !_exit_flag) { + while (!_exit_flag) { + if (!_sem.timed_wait(1000)) { + continue; + } + Event* const ev = _prepared_back.load(); if (!ev) { return; -- cgit v1.2.1