Barry Warsaw [Thu, 7 Apr 2011 14:48:29 +0000 (10:48 -0400)]
Refinement by Stefan Krah (see issue 11715, msg133194) to exit early if the
dpkg-architecture command is not found on $PATH. This should fix the failures
on FreeBSD and Solaris, which do not create the target file via I/O
redirection if the command isn't found (unlike Linux and OS X which do).
Barry Warsaw [Thu, 7 Apr 2011 14:45:07 +0000 (10:45 -0400)]
Refinement by Stefan Krah (see issue 11715, msg133194) to exit early if the
dpkg-architecture command is not found on $PATH. This should fix the failures
on FreeBSD and Solaris, which do not create the target file via I/O
redirection if the command isn't found (unlike Linux and OS X which do).
Barry Warsaw [Thu, 7 Apr 2011 14:40:36 +0000 (10:40 -0400)]
Refinement by Stefan Krah (see issue 11715, msg133194) to exit early if the
dpkg-architecture command is not found on $PATH. This should fix the failures
on FreeBSD and Solaris, which do not create the target file via I/O
redirection if the command isn't found (unlike Linux and OS X which do).
Victor Stinner [Mon, 4 Apr 2011 21:42:30 +0000 (23:42 +0200)]
Issue #11765: don't test time.sleep() in test_faulthandler
time.time() and/or time.sleep() are not accurate on Windows, don't test them
in test_faulthandler. Anyway, the check was written for an old implementation
of dump_tracebacks_later(), it is not more needed.
The thread must not receive any signal. If the thread receives a signal,
sem_timedwait() is interrupted and returns EINTR, but in this case,
PyThread_acquire_lock_timed() retries sem_timedwait() and the main thread is
not aware of the signal. The problem is that some tests expect that the main
thread receives the signal, not faulthandler handler, which should be
invisible.
On Linux, the signal looks to be received by the main thread, whereas on
FreeBSD, it can be any thread.
Victor Stinner [Sun, 3 Apr 2011 16:41:22 +0000 (18:41 +0200)]
test_faulthandler: fix regex on the check_dump_traceback_threads() traceback
The traceback may contain "_is_owned":
Thread 0x40962b90:
File "/srv/buildbot/buildarea/3.x.bolen-ubuntu/build/Lib/threading.py", line 220 in _is_owned
File "/srv/buildbot/buildarea/3.x.bolen-ubuntu/build/Lib/threading.py", line 227 in wait
File "/srv/buildbot/buildarea/3.x.bolen-ubuntu/build/Lib/threading.py", line 421 in wait
File "<string>", line 23 in run
File "/srv/buildbot/buildarea/3.x.bolen-ubuntu/build/Lib/threading.py", line 735 in _bootstrap_inner
File "/srv/buildbot/buildarea/3.x.bolen-ubuntu/build/Lib/threading.py", line 708 in _bootstrap
Current thread XXX:
File "<string>", line 10 in dump
File "<string>", line 28 in <module>
Antoine Pitrou [Sun, 3 Apr 2011 15:05:46 +0000 (17:05 +0200)]
Issue #5863: Rewrite BZ2File in pure Python, and allow it to accept
file-like objects using a new `fileobj` constructor argument. Patch by
Nadeem Vawda.
Victor Stinner [Fri, 1 Apr 2011 13:37:12 +0000 (15:37 +0200)]
Issue #11393: signal of user signal displays tracebacks even if tstate==NULL
* faulthandler_user() displays the tracebacks of all threads even if it is
unable to get the state of the current thread
* test_faulthandler: only release the GIL in test_gil_released() check
* create check_signum() subfunction
Victor Stinner [Fri, 1 Apr 2011 01:16:51 +0000 (03:16 +0200)]
Issue #11393: fix usage of locks in faulthandler
* faulthandler_cancel_dump_tracebacks_later() is responsible to set running
to zero (so we don't need the volatile keyword anymore)
* release locks if PyThread_start_new_thread() fails
assert(thread.running == 0) was wrong in a corner case
Victor Stinner [Fri, 1 Apr 2011 00:28:22 +0000 (02:28 +0200)]
Issue #11393: Fix faulthandler_thread(): release cancel lock before join lock
If the thread releases the join lock before the cancel lock, the thread may
sometimes still be alive at cancel_dump_tracebacks_later() exit. So the cancel
lock may be destroyed while the thread is still alive, whereas the thread will
try to release the cancel lock, which just crash.
Another minor fix: the thread doesn't release the cancel lock if it didn't
acquire it.