[Python-Dev] Testing Socket Timeouts patch 1519025 (original) (raw)

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).



More information about the Python-Dev mailing list