[Pkg-xmpp-devel] Bug#1040057: slixmpp: autopkgtest regression on arm64: Segmentation fault

Martin debacle at debian.org
Thu Oct 12 14:17:20 BST 2023


On 2023-10-12 12:31, Paul Gevers wrote:
> If I rename tests/test_stanza_error.py to something else such that
> it's not automatically run as test, the segfault doesn't happen.

Thanks, Paul, that helped a lot!

In xmpp:slixmpp at muc.poez.io?join Link Mauve came up with the idea to run
the test in pdb, and that's how it segfaults on amd64, too, not only on
arm64:

$ python3 -m pdb ./run_tests.py tests/test_stanza_error.py
> /usr/local/src/debian/xmpp-team/slixmpp/run_tests.py(3)<module>()
-> import sys
(Pdb) r
Using slower stringprep, consider compiling the faster cython/libidn one.
testCondition (tests.test_stanza_error.TestErrorStanzas.testCondition)
Test modifying the error condition. ... ok
testDelCondition (tests.test_stanza_error.TestErrorStanzas.testDelCondition)
Test that deleting error conditions doesn't remove extra elements. ... ok
testDelText (tests.test_stanza_error.TestErrorStanzas.testDelText)
Test deleting the text of an error. ... ok
testSetup (tests.test_stanza_error.TestErrorStanzas.testSetup)
Test setting initial values in error stanza. ... ok

----------------------------------------------------------------------
Ran 4 tests in 1.149s

OK
<tests xmlns='http//andyet.net/protocol/tests' ran='4' errors='0' fails='0' success='True'/>
--Return--
> /usr/local/src/debian/xmpp-team/slixmpp/run_tests.py(73)<module>()->None
-> sys.exit(not result.wasSuccessful())
(Pdb) quit
Segmentation fault

This is the backtrace:

Thread 1 "python3" received signal SIGSEGV, Segmentation fault.
PyObject_CallOneArg (func=0x0, arg=0x7fffefacd7e0) at ../Objects/call.c:376
376	../Objects/call.c: Bad file descriptor.
(gdb) bt
#0  PyObject_CallOneArg (func=0x0, arg=0x7fffefacd7e0) at ../Objects/call.c:376
#1  0x000000000056fcea in PyObject_Repr (v=0x7fffefacd7e0) at ../Objects/object.c:433
#2  0x0000000000521179 in unicode_fromformat_arg (vargs=0x7fffffffe160, f=<optimized out>, writer=0x7fffffffe180) at ../Objects/unicodeobject.c:3036
#3  PyUnicode_FromFormatV (format=<optimized out>, vargs=<optimized out>) at ../Objects/unicodeobject.c:3100
#4  0x0000000000560da7 in _PyErr_FormatV (vargs=0x7fffffffe200, format=0x858991 "%R is not in deque", 
    exception=0x947140 <_PyExc_ValueError.lto_priv.0>, tstate=0xa840d8 <_PyRuntime+166328>) at ../Python/errors.c:1078
#5  PyErr_Format (exception=0x947140 <_PyExc_ValueError.lto_priv.0>, format=0x858991 "%R is not in deque") at ../Python/errors.c:1120
#6  0x0000000000480988 in deque_remove (deque=0x7fffef951e40, value=0x7fffefacd7e0) at ../Modules/_collectionsmodule.c:1256
#7  0x0000000000567b4f in method_vectorcall_O (func=0x7ffff74823e0, args=0x7fffef9aca98, nargsf=<optimized out>, kwnames=0x0)
    at ../Objects/descrobject.c:481
#8  0x000000000053ac2c in _PyObject_VectorcallTstate (kwnames=<optimized out>, nargsf=<optimized out>, args=<optimized out>, 
    callable=0x7ffff74823e0, tstate=0xa840d8 <_PyRuntime+166328>) at ../Include/internal/pycore_call.h:92
#9  PyObject_Vectorcall (callable=0x7ffff74823e0, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:299
#10 0x000000000052b940 in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>)
    at ../Python/ceval.c:4772
#11 0x0000000000641aaa in _PyEval_EvalFrame (throwflag=<optimized out>, frame=0x7fffef9aca30, tstate=0xa840d8 <_PyRuntime+166328>)
    at ../Include/internal/pycore_ceval.h:73
#12 gen_send_ex2 (gen=gen at entry=0x7fffef9ac9e0, arg=0x959cc0 <_Py_NoneStruct>, presult=presult at entry=0x7fffffffe588, exc=exc at entry=1, 
    closing=closing at entry=1) at ../Objects/genobject.c:219
#13 0x0000000000642588 in gen_send_ex (gen=gen at entry=0x7fffef9ac9e0, arg=<optimized out>, exc=exc at entry=1, closing=closing at entry=1)
    at ../Objects/genobject.c:287
#14 0x00000000005859e8 in gen_close (gen=0x7fffef9ac9e0, args=<optimized out>) at ../Objects/genobject.c:391
#15 0x00000000006a32ef in gen_close_iter (yf=<optimized out>) at ../Objects/genobject.c:327
#16 0x0000000000585a44 in gen_close (gen=gen at entry=0x7ffff4258c20, args=args at entry=0x0) at ../Objects/genobject.c:385
#17 0x0000000000585249 in _PyGen_Finalize (self=0x7ffff4258c20) at ../Objects/genobject.c:96
#18 0x000000000050b543 in finalize_garbage (tstate=0xa840d8 <_PyRuntime+166328>, collectable=0x7fffffffe710) at ../Modules/gcmodule.c:978
#19 gc_collect_main (tstate=0xa840d8 <_PyRuntime+166328>, generation=2, n_collected=0x0, n_uncollectable=0x0, nofail=1) at ../Modules/gcmodule.c:1274
#20 0x000000000065570c in _PyGC_CollectNoFail.isra.0 (tstate=<optimized out>) at ../Modules/gcmodule.c:2110
#21 0x000000000064698a in Py_FinalizeEx () at ../Python/pylifecycle.c:1833
#22 0x000000000064f974 in Py_RunMain () at ../Modules/main.c:682
#23 0x00000000006275c7 in Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at ../Modules/main.c:734
#24 0x00007ffff7cc31ca in __libc_start_call_main (main=main at entry=0x627530 <main>, argc=argc at entry=5, argv=argv at entry=0x7fffffffea78)
    at ../sysdeps/nptl/libc_start_call_main.h:58
#25 0x00007ffff7cc3285 in __libc_start_main_impl (main=0x627530 <main>, argc=5, argv=0x7fffffffea78, init=<optimized out>, fini=<optimized out>, 
    rtld_fini=<optimized out>, stack_end=0x7fffffffea68) at ../csu/libc-start.c:360
#26 0x0000000000627461 in _start ()

Am I right, that the error is in Python itself?

And maybe it is already solved: The error does not occur with
Python 3.12 anymore, at least not on amd64. Let's see, if the original
problem, on arm64, is fixed, too.



More information about the Pkg-xmpp-devel mailing list