Control: reassign -1 python3-keystoneauth1
Control: affects -1 cumin
I've struggled to get a backtrace from cumin because it catches all
exceptions in its main() function. But by removing that handler, I could
see a backtrace..
Mysteriously, the entry point in cumin is actually:
-> from keystoneauth1 import session as keystone_session
Doing *that* in a plain python interpreter, on my trixie machine,
crashes as well, so this is likely not a cumin bug after all and rather
a bug in python3-keystoneauth1:
> python
> (release-v5.0.0)
>>> from keystoneauth1 import session as keystone_session
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3/dist-packages/keystoneauth1/session.py", line 39, in
<module>
import osprofiler.web as osprofiler_web
File "/usr/lib/python3/dist-packages/osprofiler/web.py", line 19, in <module>
from osprofiler import profiler
File "/usr/lib/python3/dist-packages/osprofiler/profiler.py", line 27, in
<module>
from osprofiler import notifier
File "/usr/lib/python3/dist-packages/osprofiler/notifier.py", line 18, in
<module>
from osprofiler.drivers import base
File "/usr/lib/python3/dist-packages/osprofiler/drivers/__init__.py", line 5,
in <module>
from osprofiler.drivers import loginsight # noqa
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/osprofiler/drivers/loginsight.py", line
25, in <module>
from oslo_concurrency.lockutils import synchronized
File "/usr/lib/python3/dist-packages/oslo_concurrency/lockutils.py", line 37,
in <module>
import eventlet
File "/usr/lib/python3/dist-packages/eventlet/__init__.py", line 6, in
<module>
from eventlet import convenience
File "/usr/lib/python3/dist-packages/eventlet/convenience.py", line 7, in
<module>
from eventlet.green import socket
File "/usr/lib/python3/dist-packages/eventlet/green/socket.py", line 21, in
<module>
from eventlet.support import greendns
File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 78,
in <module>
setattr(dns, pkg, import_patched('dns.' + pkg))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 60,
in import_patched
return patcher.import_patched(module_name, **modules)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/eventlet/patcher.py", line 132, in
import_patched
return inject(
^^^^^^^
File "/usr/lib/python3/dist-packages/eventlet/patcher.py", line 109, in inject
module = __import__(module_name, {}, {}, module_name.split('.')[:-1])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/dns/asyncquery.py", line 40, in <module>
from dns.query import (
File "/usr/lib/python3/dist-packages/dns/query.py", line 66, in <module>
import httpcore._backends.sync
File "/usr/lib/python3/dist-packages/httpcore/__init__.py", line 1, in
<module>
from ._api import request, stream
File "/usr/lib/python3/dist-packages/httpcore/_api.py", line 7, in <module>
from ._sync.connection_pool import ConnectionPool
File "/usr/lib/python3/dist-packages/httpcore/_sync/__init__.py", line 1, in
<module>
from .connection import HTTPConnection
File "/usr/lib/python3/dist-packages/httpcore/_sync/connection.py", line 14,
in <module>
from .._synchronization import Lock
File "/usr/lib/python3/dist-packages/httpcore/_synchronization.py", line 12,
in <module>
import trio
File "/usr/lib/python3/dist-packages/trio/__init__.py", line 26, in <module>
from . import abc, from_thread, lowlevel, socket, to_thread
File "/usr/lib/python3/dist-packages/trio/socket.py", line 16, in <module>
from . import _socket
File "/usr/lib/python3/dist-packages/trio/_socket.py", line 545, in <module>
class SocketType:
File "/usr/lib/python3/dist-packages/trio/_socket.py", line 757, in SocketType
@_wraps(_stdlib_socket.socket.sendmsg, assigned=(), updated=())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: type object 'GreenSocket' has no attribute 'sendmsg'
>>>
Reassigning, but I would argue that cumin could:
1. show an actual backtrace (and why not, drop in a debugger) when
crashing with (say) --trace
2. avoid crashing if one of the backend fails to load
I'll see if i can coerce a patchset in gerrit for those.