#515·gdbgui

Eventlet is deprecated and broken with trio

Author: davispuhCreated Sep 3, 2026Updated Sep 3, 2026

Describe the bug

If I have eventlet and trio installed then gdbgui breaks with:

Traceback (most recent call last):
  File "/usr/bin/gdbgui", line 33, in <module>
    sys.exit(load_entry_point('gdbgui==0.15.3.0', 'console_scripts', 'gdbgui')())
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/usr/lib/python3.14/site-packages/gdbgui/cli.py", line 249, in main
    run_server(
    ~~~~~~~~~~^
        app=app,
        ^^^^^^^^
    ...<7 lines>...
        certificate=args.cert,
        ^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/lib/python3.14/site-packages/gdbgui/server/server.py", line 68, in run_server
    socketio.init_app(app)
    ~~~~~~~~~~~~~~~~~^^^^^
  File "/usr/lib/python3.14/site-packages/flask_socketio/__init__.py", line 257, in init_app
    self.server = socketio.Server(**self.server_options)
                  ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/socketio/base_server.py", line 34, in __init__
    self.eio = self._engineio_server_class()(**engineio_options)
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/engineio/base_server.py", line 83, in __init__
    self._async = importlib.import_module(
                  ~~~~~~~~~~~~~~~~~~~~~~~^
        'engineio.async_drivers.' + mode)._async
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/importlib/__init__.py", line 88, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1406, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1371, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1342, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 938, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 759, in exec_module
  File "<frozen importlib._bootstrap>", line 491, in _call_with_frames_removed
  File "/usr/lib/python3.14/site-packages/engineio/async_drivers/eventlet.py", line 1, in <module>
    from eventlet.green.threading import Event
  File "/usr/lib/python3.14/site-packages/eventlet/__init__.py", line 6, in <module>
    from eventlet import convenience
  File "/usr/lib/python3.14/site-packages/eventlet/convenience.py", line 7, in <module>
    from eventlet.green import socket
  File "/usr/lib/python3.14/site-packages/eventlet/green/socket.py", line 21, in <module>
    from eventlet.support import greendns
  File "/usr/lib/python3.14/site-packages/eventlet/support/greendns.py", line 78, in <module>
    setattr(dns, pkg, import_patched('dns.' + pkg))
                      ~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/eventlet/support/greendns.py", line 60, in import_patched
    return patcher.import_patched(module_name, **modules)
           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/eventlet/patcher.py", line 138, in import_patched
    return inject(
        module_name, None, *additional_modules + tuple(kw_additional_modules.items())
    )
  File "/usr/lib/python3.14/site-packages/eventlet/patcher.py", line 115, in inject
    module = __import__(module_name, {}, {}, module_name.split(".")[:-1])
  File "/usr/lib/python3.14/site-packages/dns/asyncquery.py", line 34, in <module>
    import dns.quic
  File "/usr/lib/python3.14/site-packages/dns/quic/__init__.py", line 40, in <module>
    import trio
  File "/usr/lib/python3.14/site-packages/trio/__init__.py", line 25, in <module>
    from . import abc, from_thread, lowlevel, socket, to_thread
  File "/usr/lib/python3.14/site-packages/trio/socket.py", line 16, in <module>
    from . import _socket
  File "/usr/lib/python3.14/site-packages/trio/_socket.py", line 546, in <module>
    class SocketType:
    ...<221 lines>...
                raise NotImplementedError
  File "/usr/lib/python3.14/site-packages/trio/_socket.py", line 759, in SocketType
    @_wraps(_stdlib_socket.socket.sendmsg, assigned=(), updated=())
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: type object 'GreenSocket' has no attribute 'sendmsg'

To Reproduce Steps to reproduce the behavior:

  1. Have engineio 4.13.3, trio 0.34.0 and eventlet 0.41.0
  2. Run gdbgui

Expected behavior No error :)

Please complete the following information:

  • OS: Arch Linux
  • gdbgui version (gdbgui -v): 0.15.3.0
  • gdb version (gdb -v): 17.2
  • browser [e.g. chrome, safari]: firefox

Additional context

If I remove eventlet or trio then it seems to be working fine. Also this seems to be quite common error with eventlet + trio is just broken, see python-trio/trio#3015 eventlet/eventlet#1075 eventlet/eventlet#1045

Without trio

$ python -c 'import eventlet'
<string>:1: EventletDeprecationWarning: 
Eventlet is deprecated. It is currently being maintained in bugfix mode, and
we strongly recommend against using it for new projects.

If you are already using Eventlet, we recommend migrating to a different
framework.  For more detail see
https://eventlet.readthedocs.io/en/latest/asyncio/migration.html