On Thu, 23 Feb 2012, Remi Pointel wrote:
> Hi,
>
> this is the diff to use rthreads with Python.
>
> Attached are two diffs:
> - update 2.7.1 to use rthreads
> - update 2.7.1 to 2.7.2 to use rthreads
>
> Please test the first diff, and if everything is ok test the second.
Hi,
There's a failure.
$ python -V ; sysctl kern.version hw.machine hw.model hw.ncpu
Python 2.7.2
kern.version=OpenBSD 5.1-current (GENERIC.MP) #4: Mon Feb 27 06:43:33 CET 2012
[email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
hw.machine=amd64
hw.model=Intel(R) Core(TM)2 Duo CPU T7250 @ 2.00GHz
hw.ncpu=2
...
Re-running test 'test_threading' in verbose mode
test_acquire_contended (test.test_threading.LockTests) ... ok
test_acquire_destroy (test.test_threading.LockTests) ... ok
test_acquire_release (test.test_threading.LockTests) ... ok
test_constructor (test.test_threading.LockTests) ... ok
test_different_thread (test.test_threading.LockTests) ... ok
test_reacquire (test.test_threading.LockTests) ... ok
test_thread_leak (test.test_threading.LockTests) ... ok
test_try_acquire (test.test_threading.LockTests) ... ok
test_try_acquire_contended (test.test_threading.LockTests) ... ok
test_with (test.test_threading.LockTests) ... ok
test__is_owned (test.test_threading.RLockTests) ... ok
test_acquire_contended (test.test_threading.RLockTests) ... ok
test_acquire_destroy (test.test_threading.RLockTests) ... ok
test_acquire_release (test.test_threading.RLockTests) ... ok
test_constructor (test.test_threading.RLockTests) ... ok
test_different_thread (test.test_threading.RLockTests) ... ok
test_reacquire (test.test_threading.RLockTests) ... ok
test_release_unacquired (test.test_threading.RLockTests) ... ok
test_thread_leak (test.test_threading.RLockTests) ... ok
test_try_acquire (test.test_threading.RLockTests) ... ok
test_try_acquire_contended (test.test_threading.RLockTests) ... ok
test_with (test.test_threading.RLockTests) ... ok
test_is_set (test.test_threading.EventTests) ... ok
test_notify (test.test_threading.EventTests) ... ok
test_timeout (test.test_threading.EventTests) ... ok
test__is_owned (test.test_threading.ConditionAsRLockTests) ... ok
test_acquire_contended (test.test_threading.ConditionAsRLockTests) ... ok
test_acquire_destroy (test.test_threading.ConditionAsRLockTests) ... ok
test_acquire_release (test.test_threading.ConditionAsRLockTests) ... ok
test_constructor (test.test_threading.ConditionAsRLockTests) ... ok
test_different_thread (test.test_threading.ConditionAsRLockTests) ... ok
test_reacquire (test.test_threading.ConditionAsRLockTests) ... ok
test_release_unacquired (test.test_threading.ConditionAsRLockTests) ... ok
test_thread_leak (test.test_threading.ConditionAsRLockTests) ... ok
test_try_acquire (test.test_threading.ConditionAsRLockTests) ... ok
test_try_acquire_contended (test.test_threading.ConditionAsRLockTests) ... ok
test_with (test.test_threading.ConditionAsRLockTests) ... ok
test_acquire (test.test_threading.ConditionTests) ... ok
test_notify (test.test_threading.ConditionTests) ... ok
test_timeout (test.test_threading.ConditionTests) ... ok
test_unacquired_notify (test.test_threading.ConditionTests) ... ok
test_unacquired_wait (test.test_threading.ConditionTests) ... ok
test_acquire (test.test_threading.SemaphoreTests) ... ok
test_acquire_contended (test.test_threading.SemaphoreTests) ... ok
test_acquire_destroy (test.test_threading.SemaphoreTests) ... ok
test_constructor (test.test_threading.SemaphoreTests) ... ok
test_default_value (test.test_threading.SemaphoreTests) ... ok
test_release_unacquired (test.test_threading.SemaphoreTests) ... ok
test_try_acquire (test.test_threading.SemaphoreTests) ... ok
test_try_acquire_contended (test.test_threading.SemaphoreTests) ... ok
test_with (test.test_threading.SemaphoreTests) ... ok
test_acquire (test.test_threading.BoundedSemaphoreTests) ... ok
test_acquire_contended (test.test_threading.BoundedSemaphoreTests) ... ok
test_acquire_destroy (test.test_threading.BoundedSemaphoreTests) ... ok
test_constructor (test.test_threading.BoundedSemaphoreTests) ... ok
test_default_value (test.test_threading.BoundedSemaphoreTests) ... ok
test_recursion_limit (test.test_threading.BoundedSemaphoreTests) ... skipped
'test macosx problem'
test_release_unacquired (test.test_threading.BoundedSemaphoreTests) ... ok
test_try_acquire (test.test_threading.BoundedSemaphoreTests) ... ok
test_try_acquire_contended (test.test_threading.BoundedSemaphoreTests) ... ok
test_with (test.test_threading.BoundedSemaphoreTests) ... ok
test_PyThreadState_SetAsyncExc (test.test_threading.ThreadTests) ...
started worker thread
trying nonsensical thread id
waiting for worker thread to get started
verifying worker hasn't exited
attempting to raise asynch exception in worker
waiting for worker to say it caught the exception
all OK -- joining worker
ok
test_enumerate_after_join (test.test_threading.ThreadTests) ... ok
test_finalize_runnning_thread (test.test_threading.ThreadTests) ... ok
test_finalize_with_trace (test.test_threading.ThreadTests) ... ok
test_foreign_thread (test.test_threading.ThreadTests) ... ok
test_ident_of_no_threading_threads (test.test_threading.ThreadTests) ... ok
test_join_nondaemon_on_shutdown (test.test_threading.ThreadTests) ... ok
test_limbo_cleanup (test.test_threading.ThreadTests) ... ok
test_no_refcycle_through_target (test.test_threading.ThreadTests) ... ok
test_various_ops (test.test_threading.ThreadTests) ... task <thread 0> will run
for 54.2 usec
1 tasks are running
task <thread 1> will run for 65.4 usec
2 tasks are running
task <thread 2> will run for 39.7 usec
3 tasks are runningtask <thread 3> will run for 24.2 usec
task <thread 4> will run for 99.0 usec
task <thread 5> will run for 18.0 usec
task <thread 6> will run for 3.3 usec
task <thread 7> will run for 81.8 usec
task <thread 8> will run for 82.1 usec
task <thread 9> will run for 86.7 usecwaiting for all tasks to complete
tasktask task <thread 1> <thread 2> done<thread 0>done
done<thread 1> is finished. 2 tasks are running
<thread 2> is finished. 1 tasks are running
<thread 0> is finished. 0 tasks are running
1 tasks are running
2 tasks are running
3 tasks are running
task tasktask<thread 4> <thread 3>done<thread 5>
donedone
<thread 4> is finished. 2 tasks are running
<thread 3> is finished. 1 tasks are running
<thread 5> is finished. 0 tasks are running
1 tasks are running
2 tasks are running
3 tasks are running
tasktask task<thread 6><thread 7> <thread 8>donedone
done
<thread 6> is finished. 2 tasks are running
<thread 7> is finished. 1 tasks are running
<thread 8> is finished. 0 tasks are running
1 tasks are running
task <thread 9> done
<thread 9> is finished. 0 tasks are running
all tasks done
ok
test_various_ops_large_stack (test.test_threading.ThreadTests) ... with 1MB
thread stack size...
task <thread 0> will run for 16.6 usec
1 tasks are running
task <thread 1> will run for 78.6 usec
2 tasks are running
task <thread 2> will run for 32.5 usec
3 tasks are running
task <thread 3> will run for 39.2 usec
task <thread 4> will run for 48.2 usec
task <thread 5> will run for 41.3 usec
task <thread 6> will run for 91.7 usec
task <thread 7> will run for 36.4 usec
task <thread 8> will run for 52.1 usec
task <thread 9> will run for 19.3 usec
waiting for all tasks to complete
tasktasktask <thread 1><thread 0><thread 2> donedonedone
<thread 0> is finished. 2 tasks are running
<thread 1> is finished. 1 tasks are running
<thread 2> is finished. 0 tasks are running
1 tasks are running
2 tasks are running
3 tasks are running
task <thread 5> done
tasktask<thread 5> is finished. 2 tasks are running
<thread 3><thread 4> donedone
3 tasks are running
<thread 3> is finished. 2 tasks are running
<thread 4> is finished. 1 tasks are running
2 tasks are running
3 tasks are running
tasktask task <thread 6><thread 8><thread 7> donedonedone
<thread 6> is finished. 2 tasks are running
<thread 8> is finished. 1 tasks are running
<thread 7> is finished. 0 tasks are running
1 tasks are running
task <thread 9> done
<thread 9> is finished. 0 tasks are running
all tasks done
ok
test_various_ops_small_stack (test.test_threading.ThreadTests) ... with 256kB
thread stack size...
task <thread 0> will run for 40.0 usec
1 tasks are running
task <thread 1> will run for 21.7 usec
2 tasks are running
task <thread 2> will run for 12.3 usec
3 tasks are running
task <thread 3> will run for 21.7 usec
task <thread 4> will run for 39.3 usec
task <thread 5> will run for 85.7 usec
task <thread 6> will run for 54.2 usec
task <thread 7> will run for 52.0 usec
task <thread 8> will run for 52.5 usec
task <thread 9> will run for 28.8 usecwaiting for all tasks to complete
tasktasktask <thread 1><thread 0><thread 2> donedonedone
<thread 1> is finished. 2 tasks are running
<thread 0> is finished. 1 tasks are running
<thread 2> is finished. 0 tasks are running
1 tasks are running
2 tasks are running
3 tasks are running
task <thread 3> done
tasktask <thread 5> done
<thread 3> is finished. 2 tasks are running<thread 4>
done<thread 5> is finished. 1 tasks are running
<thread 4> is finished. 0 tasks are running
1 tasks are running
2 tasks are running
3 tasks are running
tasktasktask <thread 6><thread 7><thread 8> donedonedone
<thread 6> is finished. 2 tasks are running
<thread 7> is finished. 1 tasks are running
<thread 8> is finished. 0 tasks are running
1 tasks are running
task <thread 9> done
<thread 9> is finished. 0 tasks are running
all tasks done
ok
test_1_join_on_shutdown (test.test_threading.ThreadJoinOnShutdown) ... ok
test_2_join_in_forked_process (test.test_threading.ThreadJoinOnShutdown) ... ok
test_3_join_in_forked_from_thread (test.test_threading.ThreadJoinOnShutdown)
... FAIL
test_4_joining_across_fork_in_worker_thread
(test.test_threading.ThreadJoinOnShutdown) ... ok
test_5_clear_waiter_locks_to_avoid_crash
(test.test_threading.ThreadJoinOnShutdown) ... ok
test_daemonize_active_thread (test.test_threading.ThreadingExceptionTests) ...
ok
test_joining_current_thread (test.test_threading.ThreadingExceptionTests) ... ok
test_joining_inactive_thread (test.test_threading.ThreadingExceptionTests) ...
ok
test_start_thread_again (test.test_threading.ThreadingExceptionTests) ... test
test_threading failed -- Traceback (most recent call last):
File "/usr/ports/pobj/Python-2.7.2/Python-2.7.2/Lib/test/test_threading.py",
line 499, in test_3_join_in_forked_from_thread
self._run_and_join(script)
File "/usr/ports/pobj/Python-2.7.2/Python-2.7.2/Lib/test/test_threading.py",
line 434, in _run_and_join
self.assertEqual(data, "end of main\nend of thread\n")
AssertionError: '' != 'end of main\nend of thread\n'
ok
======================================================================
FAIL: test_3_join_in_forked_from_thread
(test.test_threading.ThreadJoinOnShutdown)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/ports/pobj/Python-2.7.2/Python-2.7.2/Lib/test/test_threading.py",
line 499, in test_3_join_in_forked_from_thread
self._run_and_join(script)
File "/usr/ports/pobj/Python-2.7.2/Python-2.7.2/Lib/test/test_threading.py",
line 434, in _run_and_join
self.assertEqual(data, "end of main\nend of thread\n")
AssertionError: '' != 'end of main\nend of thread\n'
----------------------------------------------------------------------
Ran 82 tests in 4.494s
FAILED (failures=1, skipped=1)
*** Error code 1
Stop in /usr/ports/pobj/Python-2.7.2/Python-2.7.2 (line 735 of Makefile).
*** Error code 1
Stop in /usr/ports/mystuff/lang/python/2.7 (line 2484 of
/usr/ports/infrastructure/mk/bsd.port.mk).
*** Error code 1
Stop in /usr/ports/mystuff/lang/python/2.7 (line 2204 of
/usr/ports/infrastructure/mk/bsd.port.mk).
--- Mon Feb 27 09:45:48 CET 2012