Repository navigation
Segmentation fault in asyncio #82966
Description
Activity
Get Segmentation fault on run script in attachment.
- added3.7 (EOL)end of lifeend of lifetype-crashA hard crash of the interpreter, possibly with a core dumpA hard crash of the interpreter, possibly with a core dump
on Nov 13, 2019 Get seg fault on running script in attachment:
root@fake:/opt/securisync/be# python3.7 scratch_15.py
In tratata before
In tratata2 before
Segmentation faultThanks for the report!
I would say that deriving from the future class without calling super().__init__() is an error.
After fixing this the snippet raises expected "RuntimeError: yield was used instead of yield from in task" error.The crash occurs in _asyncio_Future_get_loop():
(gdb) frame
#0 0x00007fffea2fe689 in _Py_INCREF (op=0x0) at ./Include/object.h:459
459 op->ob_refcnt++;(gdb) up
#1 0x00007fffea301b14 in _asyncio_Future_get_loop_impl (self=0x7fffea2615f0)
at /home/vstinner/python/master/Modules/_asynciomodule.c:1094
1094 Py_INCREF(self->fut_loop);(gdb) p self->fut_loop
$1 = 0x0(gdb) where
#0 0x00007fffea2fe689 in _Py_INCREF (op=0x0) at ./Include/object.h:459
#1 0x00007fffea301b14 in _asyncio_Future_get_loop_impl (self=0x7fffea2615f0)
at /home/vstinner/python/master/Modules/_asynciomodule.c:1094
#2 0x00007fffea2fef01 in _asyncio_Future_get_loop (self=0x7fffea2615f0,
_unused_ignored=0x0)
at /home/vstinner/python/master/Modules/clinic/_asynciomodule.c.h:252
#3 0x0000000000645364 in cfunction_vectorcall_NOARGS (
func=<built-in method get_loop of Qwe2 object at remote 0x7fffea2615f0>,
args=0x0, nargsf=0, kwnames=0x0) at Objects/methodobject.c:424
#4 0x000000000042f8d1 in _PyObject_VectorcallTstate (tstate=0x81ae00,
callable=<built-in method get_loop of Qwe2 object at remote 0x7fffea2615f0>, args=0x0, nargsf=0, kwnames=0x0) at ./Include/cpython/abstract.h:111
#5 0x000000000042f930 in _PyObject_Vectorcall (
callable=<built-in method get_loop of Qwe2 object at remote 0x7fffea2615f0>, args=0x0, nargsf=0, kwnames=0x0) at ./Include/cpython/abstract.h:120
#6 0x000000000042f988 in _PyObject_CallNoArg (
func=<built-in method get_loop of Qwe2 object at remote 0x7fffea2615f0>)
at ./Include/cpython/abstract.h:148
#7 0x000000000042fc57 in PyObject_CallNoArgs (
func=<built-in method get_loop of Qwe2 object at remote 0x7fffea2615f0>)
at Objects/call.c:83
#8 0x00007fffea2ffc16 in get_future_loop (
fut=<Qwe2(value=0) at remote 0x7fffea2615f0>)
--Type <RET> for more, q to quit, c to continue without paging--q
Quit(gdb) py-bt Traceback (most recent call first): <built-in method get_loop of Qwe2 object at remote 0x7fffea2615f0> <built-in method run of Context object at remote 0x7fffea215170> File "/home/vstinner/python/master/Lib/asyncio/events.py", line 81, in _run self._context.run(self._callback, *self._args) File "/home/vstinner/python/master/Lib/asyncio/base_events.py", line 2641, in _run_once File "/home/vstinner/python/master/Lib/asyncio/base_events.py", line 1101, in run_forever await waiter File "/home/vstinner/python/master/Lib/asyncio/base_events.py", line 621, in run_until_complete self.run_forever() File "/home/vstinner/python/master/Lib/asyncio/runners.py", line 299, in run File "/home/vstinner/python/master/scratch_15.py", line 56, in <module> asyncio.run(main())
Looks like get_future_loop() function misses ENSURE_FUTURE_ALIVE macro call.
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields: