Skip to content

Python 3.12 support - RuntimeError聽#2299

Closed

Description

@Toaster192

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?

Activity

  1. added this to the Python 3.12 Support milestone on Oct 3, 2023
  2. sentrivana commented on Oct 3, 2023

    @sentrivana
    Collaborator

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

  3. moved this from Waiting for: Product Owner to No status in GitHub Issues with 馃憖on Oct 3, 2023
  4. ThiefMaster commented on Oct 6, 2023

    @ThiefMaster

    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.

  5. moved this to Waiting for: Product Owner in GitHub Issues with 馃憖on Oct 6, 2023
  6. antonpirker commented on Oct 9, 2023

    @antonpirker
    Contributor

    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

  7. moved this from Waiting for: Product Owner to No status in GitHub Issues with 馃憖on Oct 9, 2023
  8. robd003 commented on Oct 15, 2023

    @robd003

    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
    
  9. moved this to Waiting for: Product Owner in GitHub Issues with 馃憖on Oct 15, 2023
  10. moved this from Waiting for: Product Owner to No status in GitHub Issues with 馃憖on Oct 16, 2023
  11. ethrgeist commented on Oct 20, 2023

    @ethrgeist

    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
    
  12. moved this to Waiting for: Product Owner in GitHub Issues with 馃憖on Oct 20, 2023
  13. ThiefMaster commented on Oct 20, 2023

    @ThiefMaster

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

  14. antonpirker commented on Oct 23, 2023

    @antonpirker
    Contributor

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

  15. moved this from Waiting for: Product Owner to No status in GitHub Issues with 馃憖on Oct 23, 2023
  16. self-assigned this
    on Oct 23, 2023
  17. antonpirker commented on Oct 31, 2023

    @antonpirker
    Contributor

    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 ?

  18. ethrgeist commented on Oct 31, 2023

    @ethrgeist

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

  19. shikharvaish28 commented on Apr 1, 2024

    @shikharvaish28

    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
    
  20. ddelange commented on Apr 1, 2024

    @ddelange

    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

Metadata

Metadata

Labels

No labels
No labels

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions