diff -r 19c4528f53b0 Lib/test/test_threading.py --- a/Lib/test/test_threading.py Wed Feb 01 04:42:48 2017 +0300 +++ b/Lib/test/test_threading.py Fri Feb 03 22:51:00 2017 +0800 @@ -170,6 +170,9 @@ mutex.acquire() self.assertIn(tid, threading._active) self.assertIsInstance(threading._active[tid], threading._DummyThread) + #Issue 29376 + self.assertTrue(threading._active[tid].is_alive()) + self.assertRegex(repr(threading._active[tid]), '_DummyThread') del threading._active[tid] # PyThreadState_SetAsyncExc() is a CPython-only gimmick, not (currently) diff -r 19c4528f53b0 Lib/threading.py --- a/Lib/threading.py Wed Feb 01 04:42:48 2017 +0300 +++ b/Lib/threading.py Fri Feb 03 22:51:00 2017 +0800 @@ -1217,6 +1217,10 @@ def _stop(self): pass + def is_alive(self): + assert not self._is_stopped and self._started.is_set() + return True + def join(self, timeout=None): assert False, "cannot join a dummy thread"