Kaydet (Commit) 0c4a3b33 authored tarafından Tim Peters's avatar Tim Peters

current_frames_with_threads(): There's actually no way

to guess /which/ line the spawned thread is in at the time
sys._current_frames() is called:  we know it finished
enter_g.set(), but can't know whether the instruction
counter has advanced to the following leave_g.wait().
The latter is overwhelming most likely, but not guaranteed,
and I see that the "x86 Ubuntu dapper (icc) trunk" buildbot
found it on the other line once.  Changed the test so it
passes in either case.
üst 4d16b915
...@@ -274,8 +274,9 @@ class SysModuleTest(unittest.TestCase): ...@@ -274,8 +274,9 @@ class SysModuleTest(unittest.TestCase):
t.start() t.start()
entered_g.wait() entered_g.wait()
# At this point, t has finished its entered_g.set(), and is blocked # At this point, t has finished its entered_g.set(), although it's
# in its leave_g.wait(). # impossible to guess whether it's still on that line or has moved on
# to its leave_g.wait().
self.assertEqual(len(thread_info), 1) self.assertEqual(len(thread_info), 1)
thread_id = thread_info[0] thread_id = thread_info[0]
...@@ -305,7 +306,7 @@ class SysModuleTest(unittest.TestCase): ...@@ -305,7 +306,7 @@ class SysModuleTest(unittest.TestCase):
# And the next record must be for g456(). # And the next record must be for g456().
filename, lineno, funcname, sourceline = stack[i+1] filename, lineno, funcname, sourceline = stack[i+1]
self.assertEqual(funcname, "g456") self.assertEqual(funcname, "g456")
self.assertEqual(sourceline, "leave_g.wait()") self.assert_(sourceline in ["leave_g.wait()", "entered_g.set()"])
# Reap the spawned thread. # Reap the spawned thread.
leave_g.set() leave_g.set()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment