Skip to content

[BUG] Unchecked errors can potentially swallow signals/other exceptions #2862

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
virtuald opened this issue Feb 17, 2021 · 0 comments
Open

Comments

@virtuald
Copy link
Contributor

virtuald commented Feb 17, 2021

Issue description

context

I'm trying to figure out why CTRL-C isn't working in my Linux application.

I'm periodically checking PyErr_CheckSignals in my inner loop in the main thread and it never seems to be firing -- but python is clearly seeing it at some point, as when I close the UI window the python code throws the KeyboardInterrupt and everything crashes because a thread tries to take the GIL during shutdown.

That is not what this issue is about, but it's useful context -- I'm sure I'm not doing something right, just need to figure out the right way to do it.

issue

However, in my search the following two links come up:

Basically, PyDict_Get/Set/Del can potentially swallow errors (including signals!) if the WithError variants aren't used. There are a few places in pybind11 where the less safe versions of these functions are used, which could be potentially contributing to my problem. It seems the WithError variants were introduced in Python 3, so to switch to these would require a Python 2.7 shim.

Has anyone else been contemplating this? There aren't that many places where errors aren't checked in pybind11, so it probably wouldn't be terrible to find them all and squash em. Ideally it would be nice if we could add some kind of linter to make sure nobody introduces such things in the future, but that seems hard.

Reproducible example code

N/A

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant