Please sign in to comment.
Fix hang in applications when threadpool thread fails to run.
In the event that a thread pool threads fails to start do not leave it in the list of running threads which can lead to us waiting indefinitely for it to finish in MThreadPool::waitForDone(). The fix is to immediately remove the thread from the list of running threads if IsRunning() is false immediately after calling start() - see start() in qthread-unix.cpp. N.B. IsFinished() is false in this scenario because the thread never started. When this occurs, either because we've hit the system thread limit or we've run out of memory QThread (on unix/linux) will print: "QThread::start: Thread creation error: Resource temporarily unavailable" Shortly afterwards the thread calling MThreadPool::waitForDone() would hang, in the case of the frontend this may be the UI thread in the MythImage destructor.
- Loading branch information...
Showing with 14 additions and 1 deletion.