Python 2.3.3 signals, threads & extensions: signal handling problem
Andrew MacIntyre
andymac at bullseye.apana.org.au
Sat Jun 5 21:40:15 EDT 2004
On Thu, 3 Jun 2004, Holger Joukl wrote:
> migrating from good old python 1.5.2 to python 2.3, I have a problem
> running a program that features some threads which execute calls to
> an extension module.
> Problem is that all of a sudden, I cannot stop the program with a keyboard
> interrupt any more; the installed signal handler does not seem to receive
> the signal at all.
> This happens both if I rebuild this extension using python 2.3
> headers/library
> and if I simply use the old extension (ignoring the API version warnings
> :-)
Don't mix signals and threads without a lot of careful doc reading and
planning. I strongly recommend re-reading the signal module docs.
One other thing to keep in mind is that in a multithreaded build, aside
from only the main thread receiving signals, is that the signal handler is
effectively queued until the next Python VM opcode is processed. A call
to a function in the extension is effectively a VM opcode, and if the
call doesn't return the handler will never execute.
--
Andrew I MacIntyre "These thoughts are mine alone..."
E-mail: andymac at bullseye.apana.org.au (pref) | Snail: PO Box 370
andymac at pcug.org.au (alt) | Belconnen ACT 2616
Web: http://www.andymac.org/ | Australia
More information about the Python-list
mailing list