What, weird edge cases involving signals? Never! :) 

Here's a nice simple one: it takes at least a few opcodes to set said global flag, during which (depending on the whims of how eval_break gets set) yet another signal might get raised and handled.

I did just make a post to python-ideas about the possibility of adding a "sys.suppress_signals" method; it seems like it would be surprisingly easy in CPython (basically by just adding another check at the start of _PyErr_CheckSignalsTstate) but would also be a truly impressive footgun. Not sure if I'm going to try to climb that particular mountain yet, but I figured I'd see what obvious holes other people could poke in it.

Thanks for your help!

On Thu, Jun 25, 2020 at 1:27 PM Antoine Pitrou <solipsis@pitrou.net> wrote:
On Thu, 25 Jun 2020 11:18:13 -0700
Yonatan Zunger via Python-Dev <python-dev@python.org> wrote:
> Also, just to sanity-check that I understand things correctly: Python
> signal handlers *are* reentrant, in that a signal handler can be
> interrupted by another signal, is that right? Is there any general
> recommendation on how to write signal handlers in order to manage that?

To be honest, I've never thought about that.  If you need to care about
reentrancy, you should perhaps use some kind of global flag to detect
it (hopefully you won't run into weird edge cases...).

> (Antoine, I *so* wish I could be doing less with signals and signal
> handlers right now. Alas, I have a combination of a SIGTERM-happy runtime
> environment and a long-story situation involving wacky multiprocessing to
> avoid issues in someone else's C library that make that impossible. So
> instead I'm trying to write a general library to help simplify the task,
> and so thinking about a lot of slightly nutty corner cases...)

Ha, I wisk you good luck with that :-)

Best regards


Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-leave@python.org
Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/KBD7XG5QPRQRP52FVPAFLZ3G6PSPPVYE/
Code of Conduct: http://python.org/psf/codeofconduct/


Yonatan Zunger

Distinguished Engineer and Chief Ethics Officer

He / Him


100 View St, Suite 101

Mountain View, CA 94041

Humu.com  · LinkedIn  · Twitter