[Python-Dev] Testing Socket Timeouts patch 1519025

Josiah Carlson jcarlson at uci.edu
Sat Jul 29 23:38:38 CEST 2006


Tony Nelson <tonynelson at georgeanelson.com> wrote:
> 
> I'm trying to write a test for my Socket Timeouts patch [1], which fixes
> signal handling (notably Ctl-C == SIGINT == KeyboarInterrupt) on socket
> operations using a timeout.  I don't see a portable way to send a signal,
> and asking the test runner to press Ctl-C is a non-starter.  A "real"
> signal is needed to interrupt the select() (or equivalent) call, because
> that's what wasn't being handled correctly.  The bug should happen on the
> other platforms I don't know how to test on.
> 
> Is there a portable way to send a signal?  SIGINT would be best, but
> another signal (such as SIGALRM) would do, I think.

According to my (limited) research on signals, Windows signal support is
horrible.  I have not been able to have Python send signals of any kind
other than SIGABRT, and then only to the currently running process,
which kills it (regardless of whether you have a signal handler or not).

> If not, should I write the test to only work on systems implementing
> SIGALRM, the signal I'm using now, or implementing kill(), or what?

I think that most non-Windows platforms should have non-braindead signal
support, though the signal module seems to be severely lacking in
sending any signal except for SIGALRM, and the os module has its fingers
on SIGABRT.


If someone is looking for a project for 2.6 that digs into all sorts of
platform-specific nastiness, they could add actual signal sending to the
signal module (at least for unix systems).

 - Josiah



More information about the Python-Dev mailing list