Issue 12096: test_threading.test_waitfor() timeout (1 hour) on x86 Gentoo 3.x buildbot (original) (raw)

Builder x86 Gentoo 3.x Build #130:

http://www.python.org/dev/buildbot/all/builders/x86%20Gentoo%203.x/builds/130/steps/test/logs/stdio

[263/354] test_threading Timeout (1:00:00)! Thread 0x48f0bb70: File "/var/lib/buildslave/3.x.murray-gentoo/build/Lib/threading.py", line 237 in wait File "/var/lib/buildslave/3.x.murray-gentoo/build/Lib/threading.py", line 278 in wait_for File "/var/lib/buildslave/3.x.murray-gentoo/build/Lib/test/lock_tests.py", line 472 in f File "/var/lib/buildslave/3.x.murray-gentoo/build/Lib/test/lock_tests.py", line 37 in task

Thread 0x401aa010: File "/var/lib/buildslave/3.x.murray-gentoo/build/Lib/test/lock_tests.py", line 16 in _wait File "/var/lib/buildslave/3.x.murray-gentoo/build/Lib/test/lock_tests.py", line 51 in wait_for_finished File "/var/lib/buildslave/3.x.murray-gentoo/build/Lib/test/lock_tests.py", line 482 in test_waitfor File "/var/lib/buildslave/3.x.murray-gentoo/build/Lib/unittest/case.py", line 407 in _executeTestPart File "/var/lib/buildslave/3.x.murray-gentoo/build/Lib/unittest/case.py", line 462 in run File "/var/lib/buildslave/3.x.murray-gentoo/build/Lib/unittest/case.py", line 514 in call File "/var/lib/buildslave/3.x.murray-gentoo/build/Lib/unittest/suite.py", line 105 in run File "/var/lib/buildslave/3.x.murray-gentoo/build/Lib/unittest/suite.py", line 67 in call File "/var/lib/buildslave/3.x.murray-gentoo/build/Lib/unittest/suite.py", line 105 in run File "/var/lib/buildslave/3.x.murray-gentoo/build/Lib/unittest/suite.py", line 67 in call File "/var/lib/buildslave/3.x.murray-gentoo/build/Lib/test/support.py", line 1096 in run File "/var/lib/buildslave/3.x.murray-gentoo/build/Lib/test/support.py", line 1184 in _run_suite File "/var/lib/buildslave/3.x.murray-gentoo/build/Lib/test/support.py", line 1210 in run_unittest File "/var/lib/buildslave/3.x.murray-gentoo/build/Lib/test/test_threading.py", line 743 in test_main File "./Lib/test/regrtest.py", line 1044 in runtest_inner File "./Lib/test/regrtest.py", line 838 in runtest File "./Lib/test/regrtest.py", line 662 in main File "./Lib/test/regrtest.py", line 1622 in

The sleep is too short:

   def f():
       with cond:
           result = cond.wait_for(lambda : state==4)


  for i in range(5):
      time.sleep(0.01)
      with cond:
      state += 1
      cond.notify()

If state is incremented to 5 before the thread waits on the condition, it's going to wait forever (it can be reproduced easily by removing the sleep). We could either increase the sleep, or change the predicate to state==5.