Thread: fix a crash on Windows due to data race condition on Thread::m_start_finished_mutex (#6515)

This commit is contained in:
Loïc Blot 2017-10-10 12:27:08 +02:00 committed by GitHub
parent 9d295906ef
commit 32ae492657

@ -74,7 +74,7 @@ Thread::~Thread()
kill(); kill();
// Make sure start finished mutex is unlocked before it's destroyed // Make sure start finished mutex is unlocked before it's destroyed
m_start_finished_mutex.try_lock(); if (m_start_finished_mutex.try_lock())
m_start_finished_mutex.unlock(); m_start_finished_mutex.unlock();
} }
@ -196,6 +196,10 @@ void Thread::threadProc(Thread *thr)
thr->m_retval = thr->run(); thr->m_retval = thr->run();
thr->m_running = false; thr->m_running = false;
// Unlock m_start_finished_mutex to prevent data race condition on Windows.
// On Windows with VS2017 build TerminateThread is called and this mutex is not
// released. We try to unlock it from caller thread and it's refused by system.
thr->m_start_finished_mutex.unlock();
g_logger.deregisterThread(); g_logger.deregisterThread();
} }