Skip to content
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

Python 3.12 support - RuntimeError #2299

Closed
Toaster192 opened this issue Aug 8, 2023 · 14 comments · Fixed by #2468
Closed

Python 3.12 support - RuntimeError #2299

Toaster192 opened this issue Aug 8, 2023 · 14 comments · Fixed by #2468
Assignees
Labels
enhancement New feature or request Python:3.12

Comments

@Toaster192
Copy link

Problem Statement

Tried using sentry with python 3.12. Ran into newly implemented RuntimeError tests. Want to give a heads up for once there is 3.12 (hopefuly after 3.11 #1950 🤞 ) support that this is something that will probably need fixing(?)

Example traceback (source):

Exception ignored in atexit callback: <function AtexitIntegration.setup_once.<locals>._shutdown at 0x7fa77fa24e00>
Traceback (most recent call last):
  File "/builds/4704997395/software/venv/lib64/python3.12/site-packages/sentry_sdk/integrations/atexit.py", line 61, in _shutdown
    client.close(callback=integration.callback)
  File "/builds/4704997395/software/venv/lib64/python3.12/site-packages/sentry_sdk/client.py", line 580, in close
    self.flush(timeout=timeout, callback=callback)
  File "/builds/4704997395/software/venv/lib64/python3.12/site-packages/sentry_sdk/client.py", line 604, in flush
    self.transport.flush(timeout=timeout, callback=callback)
  File "/builds/4704997395/software/venv/lib64/python3.12/site-packages/sentry_sdk/transport.py", line 525, in flush
    self._worker.submit(lambda: self._flush_client_reports(force=True))
  File "/builds/4704997395/software/venv/lib64/python3.12/site-packages/sentry_sdk/worker.py", line 117, in submit
    self._ensure_thread()
  File "/builds/4704997395/software/venv/lib64/python3.12/site-packages/sentry_sdk/worker.py", line 42, in _ensure_thread
    self.start()
  File "/builds/4704997395/software/venv/lib64/python3.12/site-packages/sentry_sdk/worker.py", line 70, in start
    self._thread.start()
  File "/builds/4704997395/software/venv/lib64/python3.12/site-packages/sentry_sdk/integrations/threading.py", line 56, in sentry_start
    return old_start(self, *a, **kw)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/threading.py", line 971, in start
    _start_new_thread(self._bootstrap, ())
RuntimeError: can't create new thread at interpreter shutdown

cpython commit adding this "detection": python/cpython@ce558e6

Solution Brainstorm

Some sort of "graceful shutdown" on exit perhaps?

@Toaster192
Copy link
Author

We got to work around this by closing sentry manually at the end of our programs 🤷

@sentrivana
Copy link
Contributor

Thanks for the heads up @Toaster192!

@jnoordsij
Copy link

Would be great to have this fixed now that Python 3.12 is officially released.

@sentrivana
Copy link
Contributor

sentrivana commented Oct 3, 2023

Agreed @jnoordsij. We're currently figuring out what we need to fix for 3.12, this is definitely on the list.

@ThiefMaster
Copy link

Looking at #1950, is there some hope hat it will not take month(s) for 3.12 support? Even more so considering that 3.11 was just about (non-technical) metadata, while there's an actual issue with 3.12 right now which is not necessarily a blocker but at least a bit annoying when an application has CLI tools for example where this exception gets raised.

@antonpirker
Copy link
Member

We have a PR open for supporting 3.12, but we can not give you an estimate on when it will be merged/released:

#2408

@robd003
Copy link

robd003 commented Oct 15, 2023

I'm also seeing this issue when terminating a Sanic server

^C[2023-10-14 15:38:55 -0400] [18739] [INFO] Received signal SIGINT. Shutting down.
[2023-10-14 15:38:55 -0400] [18739] [INFO] Server Stopped
Exception ignored in atexit callback: <function AtexitIntegration.setup_once.<locals>._shutdown at 0x103eb0c20>
Traceback (most recent call last):
  File "/Users/robd/code/allfactors-sanic/env/lib/python3.12/site-packages/sentry_sdk/integrations/atexit.py", line 61, in _shutdown
    client.close(callback=integration.callback)
  File "/Users/robd/code/allfactors-sanic/env/lib/python3.12/site-packages/sentry_sdk/client.py", line 618, in close
    self.flush(timeout=timeout, callback=callback)
  File "/Users/robd/code/allfactors-sanic/env/lib/python3.12/site-packages/sentry_sdk/client.py", line 646, in flush
    self.transport.flush(timeout=timeout, callback=callback)
  File "/Users/robd/code/allfactors-sanic/env/lib/python3.12/site-packages/sentry_sdk/transport.py", line 549, in flush
    self._worker.submit(lambda: self._flush_client_reports(force=True))
  File "/Users/robd/code/allfactors-sanic/env/lib/python3.12/site-packages/sentry_sdk/worker.py", line 117, in submit
    self._ensure_thread()
  File "/Users/robd/code/allfactors-sanic/env/lib/python3.12/site-packages/sentry_sdk/worker.py", line 42, in _ensure_thread
    self.start()
  File "/Users/robd/code/allfactors-sanic/env/lib/python3.12/site-packages/sentry_sdk/worker.py", line 70, in start
    self._thread.start()
  File "/Users/robd/code/allfactors-sanic/env/lib/python3.12/site-packages/sentry_sdk/integrations/threading.py", line 56, in sentry_start
    return old_start(self, *a, **kw)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/python@3.12/3.12.0/Frameworks/Python.framework/Versions/3.12/lib/python3.12/threading.py", line 971, in start
    _start_new_thread(self._bootstrap, ())
RuntimeError: can't create new thread at interpreter shutdown
Traceback (most recent call last):
  File "/Users/robd/code/allfactors-sanic/src/af_events.py", line 1455, in <module>
    app.run(host='0.0.0.0', port=8081, workers=2, access_log=False, debug=False)
  File "/Users/robd/code/allfactors-sanic/env/lib/python3.12/site-packages/sanic/mixins/startup.py", line 209, in run
    serve(primary=self)  # type: ignore
    ^^^^^^^^^^^^^^^^^^^
  File "/Users/robd/code/allfactors-sanic/env/lib/python3.12/site-packages/sanic/mixins/startup.py", line 880, in serve
    sock.shutdown(SHUT_RDWR)
OSError: [Errno 57] Socket is not connected
Sentry is attempting to send 2 pending events

@ethrgeist
Copy link

ethrgeist commented Oct 20, 2023

This also occurs when running migrations in Django.

python .\src\manage.py migrate
2023-10-20 09:44:42,475 DEBUG __init__: couldn't import psycopg 'c' implementation: No module named 'psycopg_c'
Operations to perform:
  Apply all migrations: <bunch of apps>
Running migrations:
  No migrations to apply.
Exception ignored in atexit callback: <function AtexitIntegration.setup_once.<locals>._shutdown at 0x000001F382D9B380>
Traceback (most recent call last):
  File "C:\Users\user\.virtualenvs\sad-django\Lib\site-packages\sentry_sdk\integrations\atexit.py", line 61, in _shutdown
    client.close(callback=integration.callback)
  File "C:\Users\user\.virtualenvs\sad-django\Lib\site-packages\sentry_sdk\client.py", line 618, in close
    self.flush(timeout=timeout, callback=callback)
  File "C:\Users\user\.virtualenvs\sad-django\Lib\site-packages\sentry_sdk\client.py", line 646, in flush
    self.transport.flush(timeout=timeout, callback=callback)
  File "C:\Users\user\.virtualenvs\sad-django\Lib\site-packages\sentry_sdk\transport.py", line 549, in flush
    self._worker.submit(lambda: self._flush_client_reports(force=True))
  File "C:\Users\user\.virtualenvs\sad-django\Lib\site-packages\sentry_sdk\worker.py", line 117, in submit
    self._ensure_thread()
  File "C:\Users\user\.virtualenvs\sad-django\Lib\site-packages\sentry_sdk\worker.py", line 42, in _ensure_thread
    self.start()
  File "C:\Users\user\.virtualenvs\sad-django\Lib\site-packages\sentry_sdk\worker.py", line 70, in start
    self._thread.start()
  File "C:\Users\user\.virtualenvs\sad-django\Lib\site-packages\sentry_sdk\integrations\threading.py", line 56, in sentry_start
    return old_start(self, *a, **kw)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "c:\users\user\.pyenv\pyenv-win\versions\3.12.0\Lib\threading.py", line 971, in start
    _start_new_thread(self._bootstrap, ())
RuntimeError: can't create new thread at interpreter shutdown

@ThiefMaster
Copy link

Yes, I think it always happens when the Python interpreter exits while the sentry SDK is 'active'...

@antonpirker
Copy link
Member

Thanks for all the input! We will try to tackle this soon!

@antonpirker
Copy link
Member

Hey everybody,
we just released an update that should fix this problem: https://github.com/getsentry/sentry-python/releases/tag/1.33.0

Could you give it a try @Toaster192 @robd003 and @ethrgeist ?

@ethrgeist
Copy link

Looks good, CLI and reload spam is gone, thank you very much!

@shikharvaish28
Copy link

Hi team, I am getting this error everytime a program has to exit:

I am using python 3.12 and sentry-sdk==1.14.0

Exception ignored in atexit callback: <function AtexitIntegration.setup_once.<locals>._shutdown at 0x7f1cc3949940>
Traceback (most recent call last):
  File "/opt/dataDumper/myenv/lib/python3.12/site-packages/sentry_sdk/integrations/atexit.py", line 62, in _shutdown
    client.close(callback=integration.callback)
  File "/opt/dataDumper/myenv/lib/python3.12/site-packages/sentry_sdk/client.py", line 482, in close
    self.flush(timeout=timeout, callback=callback)
  File "/opt/dataDumper/myenv/lib/python3.12/site-packages/sentry_sdk/client.py", line 504, in flush
    self.transport.flush(timeout=timeout, callback=callback)
  File "/opt/dataDumper/myenv/lib/python3.12/site-packages/sentry_sdk/transport.py", line 492, in flush
    self._worker.submit(lambda: self._flush_client_reports(force=True))
  File "/opt/dataDumper/myenv/lib/python3.12/site-packages/sentry_sdk/worker.py", line 113, in submit
    self._ensure_thread()
  File "/opt/dataDumper/myenv/lib/python3.12/site-packages/sentry_sdk/worker.py", line 42, in _ensure_thread
    self.start()
  File "/opt/dataDumper/myenv/lib/python3.12/site-packages/sentry_sdk/worker.py", line 70, in start
    self._thread.start()
  File "/opt/dataDumper/myenv/lib/python3.12/site-packages/sentry_sdk/integrations/threading.py", line 54, in sentry_start
    return old_start(self, *a, **kw)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/threading.py", line 992, in start
    _start_new_thread(self._bootstrap, ())
RuntimeError: can't create new thread at interpreter shutdown

@ddelange
Copy link

ddelange commented Apr 1, 2024

the fix was released in 1.33.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request Python:3.12
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

9 participants