classification
Title: API function PySignal_SetWakeupFd is not exported and unusable
Type: behavior Stage:
Components: C API Versions: Python 3.9
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: cy, vstinner
Priority: normal Keywords:

Created on 2021-09-15 06:03 by cy, last changed 2021-09-29 08:18 by vstinner.

Messages (2)
msg401810 - (view) Author: Cy (cy) Date: 2021-09-15 06:03
I want to wait on curl_multi_wait which messes up python's signal handling since libcurl doesn't know to exit the polling loop on signal. I created a pipe that curl could read from when python registered a signal, and PySignal_SetWakeupFd would write to the pipe, thus letting curl leave its polling loop, letting my C module return an exception condition.

Except PySignal_SetWakeupFd cannot be used. 

In Modules/signalmodule.c, it says:

    int
    PySignal_SetWakeupFd(int fd)

when it should say:

    PyAPI_FUNC(int)
    PySignal_SetWakeupFd(int fd)

This probably isn't a problem for most, since gcc has visiblity=public by default, but I guess Gentoo's process for building python sets -fvisibility=hidden, so I can't access it, and all Microsoft users should have no access to PySignal_SetWakeupFd, since Microsoft does have hidden visibility by default.
msg402828 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2021-09-29 08:18
See also bpo-45316: [C API] Functions not exported with PyAPI_FUNC().
History
Date User Action Args
2021-09-29 08:18:20vstinnersetnosy: + vstinner
messages: + msg402828
2021-09-15 06:03:15cycreate