Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

[subinterpreters] crash in _elementtree when parsing in parallel #92123

Copy link
Copy link
Closed
@po1vo

Description

@po1vo
Issue body actions

Crash report

I have Kodi crashing when certain add-ons are enabled. I traced the error to _elementtree and repurposed a script from #90228 to reproduce the bug. See bug.py.txt

Error messages

/opt/python-dbg/bin/python3 bug.py 
Fatal Python error: Segmentation fault

Current thread 0x00007fd85f7fe640 (most recent call first):
  File "/home/plv/tmp/bug.py", line 18 in doIt
  File "/opt/python-dbg/lib/python3.10/threading.py", line 946 in run
  File "/opt/python-dbg/lib/python3.10/threading.py", line 1009 in _bootstrap_inner
  File "/opt/python-dbg/lib/python3.10/threading.py", line 966 in _bootstrap

Thread 0x00007fd8654d2640 (most recent call first):
  File "/home/plv/tmp/bug.py", line 18 in doIt
  File "/opt/python-dbg/lib/python3.10/threading.py", line 946 in run
  File "/opt/python-dbg/lib/python3.10/threading.py", line 1009 in _bootstrap_inner
  File "/opt/python-dbg/lib/python3.10/threading.py", line 966 in _bootstrap

Thread 0x00007fd865f20740 (most recent call first):
  File "/opt/python-dbg/lib/python3.10/threading.py", line 1109 in _wait_for_tstate_lock
  File "/opt/python-dbg/lib/python3.10/threading.py", line 1089 in join
  File "/home/plv/tmp/bug.py", line 25 in func
  File "/home/plv/tmp/bug.py", line 27 in <module>

Extension modules: _testcapi (total: 1)
Segmentation fault (core dumped)

Reading symbols from /opt/python-dbg/bin/python3.10...
[New LWP 3737917]
[New LWP 3737913]
[New LWP 3737914]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
Core was generated by `/opt/python-dbg/bin/python3 bug.py'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007fd865da234c in __pthread_kill_implementation () from /usr/lib/libc.so.6
[Current thread is 1 (Thread 0x7fd85f7fe640 (LWP 3737917))]
(gdb) bt
#0  0x00007fd865da234c in __pthread_kill_implementation () from /usr/lib/libc.so.6
#1  0x00007fd865d554b8 in raise () from /usr/lib/libc.so.6
#2  <signal handler called>
#3  0x00007fd8640c4c8a in expat_parse (self=0x7fd85efb45f0, data=0x7fd84c0c39e0 "<data />", data_len=8, final=0)
    at /home/plv/Documents/projects/aur/python-dbg/src/Python-3.10.2/Modules/_elementtree.c:3835
#4  0x00007fd8640c5690 in _elementtree_XMLParser__parse_whole (self=0x7fd85efb45f0, file=<optimized out>)
    at /home/plv/Documents/projects/aur/python-dbg/src/Python-3.10.2/Modules/_elementtree.c:3994
#5  0x00007fd8660bfbdf in method_vectorcall_O (func=func@entry=0x7fd85eef49b0, args=args@entry=0x7fd8642061e0, nargsf=<optimized out>, kwnames=0x0) at Objects/descrobject.c:460
#6  0x00007fd8660b544b in _PyObject_VectorcallTstate (kwnames=<optimized out>, nargsf=<optimized out>, args=<optimized out>, callable=<optimized out>, tstate=<optimized out>)
    at ./Include/cpython/abstract.h:114
#7  PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=<optimized out>, callable=<optimized out>) at ./Include/cpython/abstract.h:123
#8  call_function (tstate=0x7fd84c01cc00, trace_info=<optimized out>, pp_stack=0x7fd85f7fc940, oparg=<optimized out>, kwnames=<optimized out>) at Python/ceval.c:5867
#9  0x00007fd8660ab172 in _PyEval_EvalFrameDefault (tstate=<optimized out>, f=0x7fd864206050, throwflag=<optimized out>) at Python/ceval.c:4198
#10 0x00007fd8660a980b in _PyEval_EvalFrame (throwflag=0, f=0x7fd864206050, tstate=0x7fd84c01cc00) at ./Include/internal/pycore_ceval.h:46
#11 _PyEval_Vector (tstate=<optimized out>, con=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=3, kwnames=<optimized out>) at Python/ceval.c:5065
#12 0x00007fd8660b544b in _PyObject_VectorcallTstate (kwnames=<optimized out>, nargsf=<optimized out>, args=<optimized out>, callable=<optimized out>, tstate=<optimized out>)
    at ./Include/cpython/abstract.h:114
#13 PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=<optimized out>, callable=<optimized out>) at ./Include/cpython/abstract.h:123
#14 call_function (tstate=0x7fd84c01cc00, trace_info=<optimized out>, pp_stack=0x7fd85f7fcc10, oparg=<optimized out>, kwnames=<optimized out>) at Python/ceval.c:5867
#15 0x00007fd8660ab172 in _PyEval_EvalFrameDefault (tstate=<optimized out>, f=0x7fd864124240, throwflag=<optimized out>) at Python/ceval.c:4198
#16 0x00007fd8660a980b in _PyEval_EvalFrame (throwflag=0, f=0x7fd864124240, tstate=0x7fd84c01cc00) at ./Include/internal/pycore_ceval.h:46
#17 _PyEval_Vector (tstate=<optimized out>, con=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=1, kwnames=<optimized out>) at Python/ceval.c:5065
#18 0x00007fd8660b544b in _PyObject_VectorcallTstate (kwnames=<optimized out>, nargsf=<optimized out>, args=<optimized out>, callable=<optimized out>, tstate=<optimized out>)
    at ./Include/cpython/abstract.h:114
#19 PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=<optimized out>, callable=<optimized out>) at ./Include/cpython/abstract.h:123
#20 call_function (tstate=0x7fd84c01cc00, trace_info=<optimized out>, pp_stack=0x7fd85f7fcee0, oparg=<optimized out>, kwnames=<optimized out>) at Python/ceval.c:5867
#21 0x00007fd8660b12a6 in _PyEval_EvalFrameDefault (tstate=<optimized out>, f=0x7fd864356af0, throwflag=<optimized out>) at Python/ceval.c:4181
#22 0x00007fd8660a980b in _PyEval_EvalFrame (throwflag=0, f=0x7fd864356af0, tstate=0x7fd84c01cc00) at ./Include/internal/pycore_ceval.h:46
#23 _PyEval_Vector (tstate=<optimized out>, con=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=0, kwnames=<optimized out>) at Python/ceval.c:5065
#24 0x00007fd8661269b4 in PyEval_EvalCode (co=0x7fd864240520, globals=0x7fd86422f7d0, locals=<optimized out>) at Python/ceval.c:1134
#25 0x00007fd866140884 in run_eval_code_obj (tstate=0x7fd84c01cc00, co=0x7fd864240520, globals=0x7fd86422f7d0, locals=0x7fd86422f7d0) at Python/pythonrun.c:1291
#26 0x00007fd8661382d6 in run_mod (mod=<optimized out>, filename=<optimized out>, globals=0x7fd86422f7d0, locals=0x7fd86422f7d0, flags=<optimized out>, arena=<optimized out>)
    at Python/pythonrun.c:1312
#27 0x00007fd86612c561 in PyRun_StringFlags (str=<optimized out>, start=257, globals=0x7fd86422f7d0, locals=0x7fd86422f7d0, flags=0x7fd85f7fd220) at Python/pythonrun.c:1183
#28 0x00007fd86612c480 in PyRun_SimpleStringFlags (command=0x7fd8656802b0 "\nimport xml.etree.ElementTree as ETree\nETree.parse(\"data.xml\")\n", flags=flags@entry=0x7fd85f7fd220)
    at Python/pythonrun.c:503
#29 0x00007fd8655e0120 in run_in_subinterp (self=<optimized out>, args=<optimized out>) at /home/plv/Documents/projects/aur/python-dbg/src/Python-3.10.2/Modules/_testcapimodule.c:3639
#30 0x00007fd8660b9438 in cfunction_call (func=0x7fd8656e9c10, args=<optimized out>, kwargs=<optimized out>) at Objects/methodobject.c:552
#31 0x00007fd8660b6468 in _PyObject_MakeTpCall (tstate=0x556284058d10, callable=0x7fd8656e9c10, args=<optimized out>, nargs=<optimized out>, keywords=<optimized out>) at Objects/call.c:215
#32 0x00007fd8660b55d9 in _PyObject_VectorcallTstate (kwnames=<optimized out>, nargsf=<optimized out>, args=<optimized out>, callable=<optimized out>, tstate=<optimized out>)
    at ./Include/cpython/abstract.h:112
#33 PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=<optimized out>, callable=<optimized out>) at ./Include/cpython/abstract.h:123
#34 call_function (tstate=0x556284058d10, trace_info=<optimized out>, pp_stack=0x7fd85f7fd3c0, oparg=<optimized out>, kwnames=<optimized out>) at Python/ceval.c:5867
#35 0x00007fd8660b12a6 in _PyEval_EvalFrameDefault (tstate=<optimized out>, f=0x7fd865563b60, throwflag=<optimized out>) at Python/ceval.c:4181
#36 0x00007fd8660a980b in _PyEval_EvalFrame (throwflag=0, f=0x7fd865563b60, tstate=0x556284058d10) at ./Include/internal/pycore_ceval.h:46
#37 _PyEval_Vector (tstate=<optimized out>, con=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=0, kwnames=<optimized out>) at Python/ceval.c:5065
#38 0x00007fd8660ae50a in PyObject_Call (kwargs=0x7fd864c33650, args=0x7fd865700250, callable=0x7fd8657d4940) at Objects/call.c:317
--Type <RET> for more, q to quit, c to continue without paging--c
#39 do_call_core (kwdict=0x7fd864c33650, callargs=0x7fd865700250, func=0x7fd8657d4940, trace_info=0x7fd85f7fd660, tstate=<optimized out>) at Python/ceval.c:5919
#40 _PyEval_EvalFrameDefault (tstate=<optimized out>, f=0x7fd86552abd0, throwflag=<optimized out>) at Python/ceval.c:4277
#41 0x00007fd8660a980b in _PyEval_EvalFrame (throwflag=0, f=0x7fd86552abd0, tstate=0x556284058d10) at ./Include/internal/pycore_ceval.h:46
#42 _PyEval_Vector (tstate=<optimized out>, con=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=1, kwnames=<optimized out>) at Python/ceval.c:5065
#43 0x00007fd8660b544b in _PyObject_VectorcallTstate (kwnames=<optimized out>, nargsf=<optimized out>, args=<optimized out>, callable=<optimized out>, tstate=<optimized out>) at ./Include/cpython/abstract.h:114
#44 PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=<optimized out>, callable=<optimized out>) at ./Include/cpython/abstract.h:123
#45 call_function (tstate=0x556284058d10, trace_info=<optimized out>, pp_stack=0x7fd85f7fd900, oparg=<optimized out>, kwnames=<optimized out>) at Python/ceval.c:5867
#46 0x00007fd8660ab172 in _PyEval_EvalFrameDefault (tstate=<optimized out>, f=0x7fd84c000ba0, throwflag=<optimized out>) at Python/ceval.c:4198
#47 0x00007fd8660a980b in _PyEval_EvalFrame (throwflag=0, f=0x7fd84c000ba0, tstate=0x556284058d10) at ./Include/internal/pycore_ceval.h:46
#48 _PyEval_Vector (tstate=<optimized out>, con=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=1, kwnames=<optimized out>) at Python/ceval.c:5065
#49 0x00007fd8660b544b in _PyObject_VectorcallTstate (kwnames=<optimized out>, nargsf=<optimized out>, args=<optimized out>, callable=<optimized out>, tstate=<optimized out>) at ./Include/cpython/abstract.h:114
#50 PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=<optimized out>, callable=<optimized out>) at ./Include/cpython/abstract.h:123
#51 call_function (tstate=0x556284058d10, trace_info=<optimized out>, pp_stack=0x7fd85f7fdbd0, oparg=<optimized out>, kwnames=<optimized out>) at Python/ceval.c:5867
#52 0x00007fd8660ab172 in _PyEval_EvalFrameDefault (tstate=<optimized out>, f=0x7fd86552aa00, throwflag=<optimized out>) at Python/ceval.c:4198
#53 0x00007fd8660a980b in _PyEval_EvalFrame (throwflag=0, f=0x7fd86552aa00, tstate=0x556284058d10) at ./Include/internal/pycore_ceval.h:46
#54 _PyEval_Vector (tstate=<optimized out>, con=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=1, kwnames=<optimized out>) at Python/ceval.c:5065
#55 0x00007fd8660c0e2c in _PyObject_VectorcallTstate (kwnames=0x0, nargsf=1, args=0x7fd85f7fddb8, callable=0x7fd86555f540, tstate=0x556284058d10) at ./Include/cpython/abstract.h:114
#56 method_vectorcall (method=<optimized out>, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at Objects/classobject.c:61
#57 0x00007fd86618ac9a in thread_run (boot_raw=0x7fd864bf5ee0) at ./Modules/_threadmodule.c:1090
#58 0x00007fd866165f18 in pythread_wrapper (arg=<optimized out>) at Python/thread_pthread.h:248
#59 0x00007fd865da05c2 in start_thread () from /usr/lib/libc.so.6
#60 0x00007fd865e25584 in clone () from /usr/lib/libc.so.6

Your environment

  • CPython versions tested on: python --with-pydebug 3.10.2
  • Operating system and architecture: Linux 5.17.1-zen1-1-zen #1 ZEN SMP PREEMPT Mon, 28 Mar 2022 21:56:46 +0000 x86_64 GNU/Linux

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Morty Proxy This is a proxified and sanitized view of the page, visit original site.