Source: python-cassandra-driver Version: 3.25.0-1 Severity: normal I've been investigating the build-failures on python3.11-dbg on the big endian PPCs. My notes so far:
This is reproduceable, but only when the __pycache__ directories don't exist: $ python3.11-dbg setup.py build $ cd build/lib.linux-ppc64-cpython-311-pydebug # Repeat this as necessary after running nose: $ find . -name __pycache__ | xargs rm -r $ python3.11-dbg -X tracemalloc -m nose -v --ignore-files="test_eventletreactor\.py" /usr/lib/python3/dist-packages/nose/importer.py:12: DeprecationWarning: the imp module is deprecated in favour of importlib and slated for removal in Python 3.12; see the module's documentation for alternative uses from imp import find_module, load_module, acquire_lock, release_lock gc:0: ResourceWarning: Object of type _cffi_backend.__CDataGCP is not untracked before destruction gc:0: ResourceWarning: Object of type _cffi_backend.__CDataGCP is not untracked before destruction gc:0: ResourceWarning: Object of type _cffi_backend.__CDataGCP is not untracked before destruction ../Modules/gcmodule.c:442: update_refs: Assertion "gc_get_refs(gc) != 0" failed Memory block allocated at (most recent call first): File "/usr/lib/python3/dist-packages/OpenSSL/SSL.py", line 1542 object address : 0x7fff95097690 object refcount : 0 object type : 0x7fff958f2250 object type name: _cffi_backend.__CDataGCP object repr : <refcnt 0 at 0x7fff95097690> Fatal Python error: _PyObject_AssertFailed: _PyObject_AssertFailed Python runtime state: initialized Current thread 0x00007fff98874820 (most recent call first): Garbage-collecting File "/usr/lib/python3.11/linecache.py", line 93 in updatecache File "/usr/lib/python3.11/linecache.py", line 46 in getlines File "/usr/lib/python3.11/linecache.py", line 30 in getline File "/usr/lib/python3.11/warnings.py", line 42 in _formatwarnmsg_impl File "/usr/lib/python3.11/warnings.py", line 128 in _formatwarnmsg File "/usr/lib/python3.11/warnings.py", line 28 in _showwarnmsg_impl File "/usr/lib/python3.11/warnings.py", line 112 in _showwarnmsg File "/usr/lib/python3/dist-packages/twisted/internet/_sslverify.py", line 1811 in fromOpenSSLCipherString File "/usr/lib/python3/dist-packages/twisted/internet/_sslverify.py", line 1834 in <module> File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed File "<frozen importlib._bootstrap_external>", line 940 in exec_module File "<frozen importlib._bootstrap>", line 690 in _load_unlocked File "<frozen importlib._bootstrap>", line 1149 in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 1178 in _find_and_load File "/usr/lib/python3/dist-packages/twisted/protocols/tls.py", line 59 in <module> File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed File "<frozen importlib._bootstrap_external>", line 940 in exec_module File "<frozen importlib._bootstrap>", line 690 in _load_unlocked File "<frozen importlib._bootstrap>", line 1149 in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 1178 in _find_and_load File "/usr/lib/python3/dist-packages/twisted/internet/_newtls.py", line 18 in <module> File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed File "<frozen importlib._bootstrap_external>", line 940 in exec_module File "<frozen importlib._bootstrap>", line 690 in _load_unlocked File "<frozen importlib._bootstrap>", line 1149 in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 1178 in _find_and_load File "/usr/lib/python3/dist-packages/twisted/internet/tcp.py", line 38 in <module> File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed File "<frozen importlib._bootstrap_external>", line 940 in exec_module File "<frozen importlib._bootstrap>", line 690 in _load_unlocked File "<frozen importlib._bootstrap>", line 1149 in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 1178 in _find_and_load File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1234 in _handle_fromlist File "/usr/lib/python3/dist-packages/twisted/internet/posixbase.py", line 19 in <module> File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed File "<frozen importlib._bootstrap_external>", line 940 in exec_module File "<frozen importlib._bootstrap>", line 690 in _load_unlocked File "<frozen importlib._bootstrap>", line 1149 in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 1178 in _find_and_load File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1234 in _handle_fromlist File "/usr/lib/python3/dist-packages/twisted/internet/epollreactor.py", line 19 in <module> File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed File "<frozen importlib._bootstrap_external>", line 940 in exec_module File "<frozen importlib._bootstrap>", line 690 in _load_unlocked File "<frozen importlib._bootstrap>", line 1149 in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 1178 in _find_and_load File "/usr/lib/python3/dist-packages/twisted/internet/default.py", line 43 in _getInstallFunction File "/usr/lib/python3/dist-packages/twisted/internet/default.py", line 55 in <module> File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed File "<frozen importlib._bootstrap_external>", line 940 in exec_module File "<frozen importlib._bootstrap>", line 690 in _load_unlocked File "<frozen importlib._bootstrap>", line 1149 in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 1178 in _find_and_load File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1234 in _handle_fromlist File "/usr/lib/python3/dist-packages/twisted/internet/reactor.py", line 38 in <module> File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed File "<frozen importlib._bootstrap_external>", line 940 in exec_module File "<frozen importlib._bootstrap>", line 690 in _load_unlocked File "<frozen importlib._bootstrap>", line 1149 in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 1178 in _find_and_load File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1234 in _handle_fromlist File "/home/stefanor/python-cassandra-driver-3.25.0/build/lib.linux-ppc64-cpython-311-pydebug/cassandra/io/twistedreactor.py", line 25 in <module> File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed File "<frozen importlib._bootstrap_external>", line 940 in exec_module File "<frozen importlib._bootstrap>", line 690 in _load_unlocked File "<frozen importlib._bootstrap>", line 1149 in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 1178 in _find_and_load File "/home/stefanor/python-cassandra-driver-3.25.0/build/lib.linux-ppc64-cpython-311-pydebug/cassandra/cluster.py", line 96 in <module> File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed File "<frozen importlib._bootstrap_external>", line 940 in exec_module File "<frozen importlib._bootstrap>", line 690 in _load_unlocked File "<frozen importlib._bootstrap>", line 1149 in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 1178 in _find_and_load File "/home/stefanor/python-cassandra-driver-3.25.0/build/lib.linux-ppc64-cpython-311-pydebug/tests/integration/__init__.py", line 16 in <module> File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed File "<frozen importlib._bootstrap_external>", line 940 in exec_module File "<frozen importlib._bootstrap>", line 690 in _load_unlocked File "<frozen importlib._bootstrap>", line 721 in _load File "/usr/lib/python3.11/imp.py", line 217 in load_package File "/usr/lib/python3.11/imp.py", line 245 in load_module File "/usr/lib/python3/dist-packages/nose/importer.py", line 94 in importFromDir File "/usr/lib/python3/dist-packages/nose/importer.py", line 47 in importFromPath File "/usr/lib/python3/dist-packages/nose/loader.py", line 416 in loadTestsFromName File "/usr/lib/python3/dist-packages/nose/loader.py", line 190 in loadTestsFromDir File "/usr/lib/python3/dist-packages/nose/loader.py", line 353 in loadTestsFromModule File "/usr/lib/python3/dist-packages/nose/loader.py", line 430 in loadTestsFromName File "/usr/lib/python3/dist-packages/nose/loader.py", line 190 in loadTestsFromDir File "/usr/lib/python3/dist-packages/nose/suite.py", line 99 in _get_tests File "/usr/lib/python3/dist-packages/nose/suite.py", line 72 in run File "/usr/lib/python3.11/unittest/suite.py", line 84 in __call__ File "/usr/lib/python3/dist-packages/nose/suite.py", line 224 in run File "/usr/lib/python3/dist-packages/nose/suite.py", line 177 in __call__ File "/usr/lib/python3/dist-packages/nose/core.py", line 62 in run File "/usr/lib/python3/dist-packages/nose/core.py", line 207 in runTests File "/usr/lib/python3.11/unittest/main.py", line 102 in __init__ File "/usr/lib/python3/dist-packages/nose/core.py", line 118 in __init__ ... Extension modules: kerberos, zope.interface._zope_interface_coptimizations, _cffi_backend (total: 3) Aborted Presumably the underlying issue here is the ResourceWarning. Not sure what causes that to appear in python 3.11. gdb seems to confirm that, the assertion fails while trying to print a traceback: Program received signal SIGABRT, Aborted. 0x00007ffff7c4da5c in ?? () from /lib/powerpc64-linux-gnu/libc.so.6 (gdb) bt #0 0x00007ffff7c4da5c in ?? () from /lib/powerpc64-linux-gnu/libc.so.6 #1 0x00007ffff7bf0cb4 in raise () from /lib/powerpc64-linux-gnu/libc.so.6 #2 0x00007ffff7bd49ec in abort () from /lib/powerpc64-linux-gnu/libc.so.6 #3 0x0000000010282588 in fatal_error_exit (status=<optimized out>) at ../Python/pylifecycle.c:2625 #4 0x00000000102843b0 in fatal_error (fd=<optimized out>, header=header@entry=1, prefix=prefix@entry=0x1041b538 <__func__.1> "_PyObject_AssertFailed", msg=msg@entry=0x1041ad68 "_PyObject_AssertFailed", status=status@entry=-1) at ../Python/pylifecycle.c:2806 #5 0x000000001028456c in _Py_FatalErrorFunc ( func=0x1041b538 <__func__.1> "_PyObject_AssertFailed", msg=0x1041ad68 "_PyObject_AssertFailed") at ../Python/pylifecycle.c:2822 #6 0x00000000101442c8 in _PyObject_AssertFailed ( obj=<_cffi_backend.__CDataGCP at remote 0x7ffff4817690>, expr=<optimized out>, msg=<optimized out>, file=<optimized out>, line=<optimized out>, function=<optimized out>) at ../Objects/object.c:2367 #7 0x00000000102bae40 in update_refs ( containers=containers@entry=0x10824e50 <_PyRuntime+59608>) at ../Modules/gcmodule.c:442 #8 0x00000000102bb048 in deduce_unreachable (base=base@entry=0x10824e50 <_PyRuntime+59608>, unreachable=unreachable@entry=0x7ffffffec600) at ../Modules/gcmodule.c:1099 #9 0x00000000102bc07c in gc_collect_main ( tstate=tstate@entry=0x1083ef30 <_PyRuntime+166328>, generation=generation@entry=0, n_collected=n_collected@entry=0x7ffffffec700, n_uncollectable=n_uncollectable@entry=0x7ffffffec708, nofail=nofail@entry=0) at ../Modules/gcmodule.c:1226 #10 0x00000000102bc660 in gc_collect_with_callback (tstate=0x1083ef30 <_PyRuntime+166328>, generation=<optimized out>) at ../Modules/gcmodule.c:1400 #11 0x00000000102bc968 in gc_collect_generations ( tstate=tstate@entry=0x1083ef30 <_PyRuntime+166328>) at ../Modules/gcmodule.c:1455 #12 0x00000000102bd510 in _PyObject_GC_Link (op=op@entry=<unknown at remote 0x7ffff495d0e0>) at ../Modules/gcmodule.c:2270 #13 0x00000000102bd594 in gc_alloc (basicsize=<optimized out>, presize=<optimized out>) at ../Modules/gcmodule.c:2290 #14 0x00000000102bd618 in _PyObject_GC_New (tp=0x10732000 <PyTraceBack_Type>) at ../Modules/gcmodule.c:2298 #15 0x00000000102a6520 in tb_create_raw (next=next@entry=0x0, frame=<optimized out>, frame@entry=Frame 0x7ffff79f3ce8, for file /usr/lib/python3.11/linecache.py, line 93, in updatecache (filename='gc', module_globals=None, fullname='gc'), lasti=<optimized out>, lasti@entry=256, lineno=<optimized out>) at ../Python/traceback.c:53 #16 0x00000000102a7430 in _PyTraceBack_FromFrame (tb_next=0x0, frame=frame@entry=Frame 0x7ffff79f3ce8, for file /usr/lib/python3.11/linecache.py, line 93, in updatecache (filename='gc', module_globals=None, fullname='gc')) at ../Python/traceback.c:243 #17 0x00000000102a74d4 in PyTraceBack_Here ( frame=Frame 0x7ffff79f3ce8, for file /usr/lib/python3.11/linecache.py, line 93, in updatecache (filename='gc', module_globals=None, fullname='gc')) at ../Python/traceback.c:253 #18 0x0000000010229104 in _PyEval_EvalFrameDefault (tstate=0x1083ef30 <_PyRuntime+166328>, frame=0x7ffff79f3ce8, throwflag=<optimized out>) at ../Python/ceval.c:5752 #19 0x0000000010229758 in _PyEval_EvalFrame ( tstate=tstate@entry=0x1083ef30 <_PyRuntime+166328>, frame=frame@entry=0x7ffff79f3968, throwflag=throwflag@entry=0) at ../Include/internal/pycore_ceval.h:73 #20 0x0000000010229904 in _PyEval_Vector (tstate=0x1083ef30 <_PyRuntime+166328>, func=0x7ffff797f540, locals=0x0, args=0x7ffffffecf18, argcount=<optimized out>, kwnames=0x0) at ../Python/ceval.c:6429 #21 0x00000000100d6164 in _PyFunction_Vectorcall (func=<optimized out>, stack=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:393 #22 0x00000000100d6638 in _PyObject_VectorcallTstate (tstate=0x1083ef30 <_PyRuntime+166328>, callable=<function at remote 0x7ffff797f540>, args=args@entry=0x7ffffffecf18, nargsf=nargsf@entry=9223372036854775809, kwnames=kwnames@entry=0x0) at ../Include/internal/pycore_call.h:92 #23 0x00000000100d6848 in PyObject_CallOneArg (func=<optimized out>, arg=<optimized out>) at ../Objects/call.c:376 #24 0x00000000101c8e00 in call_show_warning ( tstate=tstate@entry=0x1083ef30 <_PyRuntime+166328>, category=category@entry=<type at remote 0x10717f38>, text=text@entry='Object of type _cffi_backend.__CDataGCP is not untracked before destruction', message=message@entry=ResourceWarning('Object of type _cffi_backend.__CDataGCP is not untracked before destruction',), filename=filename@entry='gc', lineno=lineno@entry=0, lineno_obj=lineno_obj@entry=0, sourceline=sourceline@entry=0x0, source=source@entry=0x0) at ../Python/_warnings.c:609 #25 0x00000000101c9438 in warn_explicit (tstate=0x1083ef30 <_PyRuntime+166328>, category=category@entry=<type at remote 0x10717f38>, message=ResourceWarning('Object of type _cffi_backend.__CDataGCP is not untracked before destruction',), message@entry='Object of type _cffi_backend.__CDataGCP is not untracked before destruction', filename=filename@entry='gc', lineno=lineno@entry=0, module=module@entry='gc', registry=registry@entry=0x0, sourceline=sourceline@entry=0x0, source=source@entry=0x0) at ../Python/_warnings.c:746 #26 0x00000000101ca5b8 in PyErr_WarnExplicitFormat (category=<type at remote 0x10717f38>, filename_str=<optimized out>, lineno=<optimized out>, module_str=<optimized out>, registry=0x0, format=<optimized out>) at ../Python/_warnings.c:1286 #27 0x00000000102bd890 in PyObject_GC_Del (op=0x7ffff4817690) at ../Modules/gcmodule.c:2351 #28 0x00007ffff5035a14 in ?? () from /usr/lib/python3/dist-packages/_cffi_backend.cpython-311-powerpc64-linux-gnu.so #29 0x000000001014370c in _Py_Dealloc (op=<optimized out>) at ../Objects/object.c:2389 #30 0x00000000101233a8 in Py_DECREF ( filename=filename@entry=0x103e7e60 "../Include/object.h", lineno=<optimized out>, lineno@entry=602, op=<optimized out>) at ../Include/object.h:527 #31 0x00000000101233e8 in Py_XDECREF (op=<optimized out>) at ../Include/object.h:602 #32 0x00000000101302a0 in _PyObject_FreeInstanceAttributes (self=<optimized out>) at ../Objects/dictobject.c:5581 #33 0x0000000010163724 in subtype_dealloc ( self=<Connection(_ssl=<_cffi_backend.__CDataGCP at remote 0x7ffff4817690>, _context=<Context(_context=<_cffi_backend.__CDataGCP at remote 0x7ffff4817620>, _passphrase_helper=None, _passphrase_callback=None, _passphrase_userdata=None, _verify_helper=None, _verify_callback=None, _info_callback=None, _keylog_callback=None, _tlsext_servername_callback=None, _app_data=None, _alpn_select_helper=None, _alpn_select_callback=None, _ocsp_helper=None, _ocsp_callback=None, _ocsp_data=None) at remote 0x7ffff4697170>, _app_data=None, _alpn_select_callback_args=None, _verify_helper=None, _verify_callback=None, _socket=None, _into_ssl=<_cffi_backend._CDataBase at remote 0x7ffff4958840>, _from_ssl=<_cffi_backend._CDataBase at remote 0x7ffff4958400>) at remote 0x7ffff4696bd0>) at ../Objects/typeobject.c:1442 #34 0x000000001014370c in _Py_Dealloc (op=<optimized out>) at ../Objects/object.c:2389 #35 0x0000000010252374 in Py_DECREF ( filename=filename@entry=0x103e7e60 "../Include/object.h", lineno=<optimized out>, lineno@entry=602, op=<optimized out>) at ../Include/object.h:527 #36 0x00000000102523b4 in Py_XDECREF (op=<optimized out>) at ../Include/object.h:602 #37 0x0000000010252d5c in _PyFrame_Clear (frame=0x7ffff79f38c0) at ../Python/frame.c:138 #38 0x000000001020f7d8 in _PyEvalFrameClearAndPop ( tstate=tstate@entry=0x1083ef30 <_PyRuntime+166328>, frame=<optimized out>, frame@entry=0x7ffff79f38c0) at ../Python/ceval.c:6401 #39 0x0000000010229944 in _PyEval_Vector (tstate=0x1083ef30 <_PyRuntime+166328>, func=0x7ffff49576a0, locals=0x0, args=<optimized out>, argcount=<optimized out>, kwnames=0x0) at ../Python/ceval.c:6434 #40 0x00000000100d6164 in _PyFunction_Vectorcall (func=<optimized out>, stack=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:393 #41 0x00000000100d5adc in _PyVectorcall_Call ( tstate=tstate@entry=0x1083ef30 <_PyRuntime+166328>, func=@0x106d5608: 0x100d6100 <_PyFunction_Vectorcall>, callable=callable@entry=<function at remote 0x7ffff49576a0>, tuple=tuple@entry=('TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:ECDH+AESGCM:ECDH+CHACHA20:DH+AESGCM:DH+CHACHA20:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS', 3, 33554432), kwargs=kwargs@entry=0x0) at ../Objects/call.c:245 #42 0x00000000100d6030 in _PyObject_Call (tstate=0x1083ef30 <_PyRuntime+166328>, callable=<function at remote 0x7ffff49576a0>, args=('TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:ECDH+AESGCM:ECDH+CHACHA20:DH+AESGCM:DH+CHACHA20:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS', 3, 33554432), kwargs=0x0) at ../Objects/call.c:328 #43 0x00000000100d60a0 in PyObject_Call (callable=<optimized out>, args=<optimized out>, kwargs=<optimized out>) at ../Objects/call.c:355 etc... What triggers the assertion I haven't found yet (and may not really be relevant), but the warning was introduced in cpython in https://github.com/python/cpython/pull/95336 A minimal reproducer for generating that warning (on any arch) is: from OpenSSL import SSL; SSL.Context(SSL.SSLv23_METHOD) I simplified that down even further to this in python-cffi: from cffi import FFI ffi = FFI() p = ffi.new("int *", 123) ffi.gc(p, lambda x: None) SR