New submission from Gregory P. Smith <g...@krypto.org>:
PyOS_setsig currently sets the struct sigaction context.sa_flags = 0 before calling sigaction. Other virtual machines such as Golang depend on signals using SA_ONSTACK such that signal handlers use a specially allocated stack that runtime sets up for reliability reasons as they use tiny stacks on normal threads. SA_ONSTACK is a no-op flag in the typical case where no sigaltstack() call has been made to setup an alternate signal handling stack. (as in 99.99% of all CPython applications) When a C/C++ extension module is linked with cgo to call into a Golang library, doing this increases reliability. As much as I try to dissuade anyone from creating and relying on hidden complexity multi-VM-hybrids in a single process like this, some people do, and this one line change helps. Golang references: https://golang.org/pkg/os/signal/#hdr-Go_programs_that_use_cgo_or_SWIG and https://go-review.googlesource.com/c/go/+/298269/ (which clarifies that SA_RESTART is no longer a requirement. Good. Because Python won't get along well with that one.) ---------- assignee: gregory.p.smith components: Interpreter Core messages: 388036 nosy: gregory.p.smith priority: normal severity: normal status: open title: Set the SA_ONSTACK in PyOS_setsig to play well with other VMs like Golang versions: Python 3.10 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue43390> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com