[issue8407] expose signalfd(2) and pthread_sigmask in the signal module
Charles-François Natali
report at bugs.python.org
Tue May 31 20:48:55 CEST 2011
Charles-François Natali <neologix at free.fr> added the comment:
> The wakeup fd now contains the number of each signal, and so the behaviour has
> to change. I applied your patch and I added a test.
Interesting. I suspected this would have an impact on the test_signal
failure on the FreeBSD 6.4 buidbot:
"""
======================================================================
FAIL: test_signum (test.test_signal.WakeupSignalTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/home/db3l/buildarea/3.x.bolen-freebsd/build/Lib/test/test_signal.py",
line 272, in test_signum
self.check_signum(signal.SIGUSR1, signal.SIGALRM)
File "/usr/home/db3l/buildarea/3.x.bolen-freebsd/build/Lib/test/test_signal.py",
line 238, in check_signum
self.assertEqual(raised, signals)
AssertionError: Tuples differ: (14, 30) != (30, 14)
First differing element 0:
14
30
- (14, 30)
+ (30, 14)
"""
This means that the signals are not delivered in order.
Normally, pending signals are checked upon return to user-space, so
trip_signal should be called when the kill syscall returns, so signal
numbers should be written in order to the wakeup FD (and here it looks
like the lowest-numbered signal is delivered first).
You could try adding a short sleep before the second kill (or just
pass unordered=True to check_signum, but in that case we don't check
the correct ordering).
----------
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue8407>
_______________________________________
More information about the Python-bugs-list
mailing list