]> granicus.if.org Git - python/commitdiff
test_PyThreadState_SetAsyncExc(): This is failing on some
authorTim Peters <tim.peters@gmail.com>
Fri, 11 Aug 2006 00:49:01 +0000 (00:49 +0000)
committerTim Peters <tim.peters@gmail.com>
Fri, 11 Aug 2006 00:49:01 +0000 (00:49 +0000)
64-bit boxes.  I have no idea what the ctypes docs mean
by "integers", and blind-guessing here that it intended to
mean the signed C "int" type, in which case perhaps I can
repair this by feeding the thread id argument to type
ctypes.c_long().

Also made the worker thread daemonic, so it doesn't hang
Python shutdown if the test continues to fail.

Lib/test/test_threading.py

index 1d99fa7c7d044befcb443afe90266fbec746b7ca..8614ecb49c97f75fd9bd9f5736a10cba3ae3e7cd 100644 (file)
@@ -169,14 +169,15 @@ class ThreadTests(unittest.TestCase):
                     worker_saw_exception.set()
 
         t = Worker()
+        t.setDaemon(True) # so if this fails, we don't hang Python at shutdown
+        t.start()
         if verbose:
             print "    started worker thread"
-        t.start()
 
         # Try a thread id that doesn't make sense.
         if verbose:
             print "    trying nonsensical thread id"
-        result = set_async_exc(-1, exception)
+        result = set_async_exc(ctypes.c_long(-1), exception)
         self.assertEqual(result, 0)  # no thread states modified
 
         # Now raise an exception in the worker thread.
@@ -188,7 +189,7 @@ class ThreadTests(unittest.TestCase):
         self.assert_(not t.finished)
         if verbose:
             print "    attempting to raise asynch exception in worker"
-        result = set_async_exc(t.id, exception)
+        result = set_async_exc(ctypes.c_long(t.id), exception)
         self.assertEqual(result, 1) # one thread state modified
         if verbose:
             print "    waiting for worker to say it caught the exception"