Looking at the posix poco thread implementation, it is possible that the thread has already been destroyed. It uses an autoptr which is not checked. isRunning() is no good as it doesn't check to see if internal object is valid or not.