unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* notmuch2 (python cffi bindings) segfault gdb logs
@ 2020-11-23 10:36 Patrick Totzke
  2020-11-24 21:31 ` Floris Bruynooghe
  0 siblings, 1 reply; 3+ messages in thread
From: Patrick Totzke @ 2020-11-23 10:36 UTC (permalink / raw)
  To: notmuch

[-- Attachment #1: Type: text/plain, Size: 6369 bytes --]

Hi!

I've been complaining about the new (and old) python bindings causing the python interpreter to segfault occasionally. So far I was not able to reproduce this reliably nor provide error traces. This has just changed:
see below and attached for what I got from gdb.

I hope that whoever is in charge of the bindings can make sense of it. I don't have any experience so far with cffi nor gdb and have a hard time debugging this. The logs below are my attempt to collect as much detail as possible about. Please let me know if I missed something.

Cheers!
P



----------------------------------

(gdb) bt

... see attachment bt 

----------------------------------

Some context?

(gdb) up
#1  0x00007ffff7c36537 in __GI_abort () at abort.c:79
79	abort.c: No such file or directory.

(gdb) up
#2  0x00007ffff66b5551 in ?? () from /usr/lib/x86_64-linux-gnu/libtalloc.so.2

(gdb) up
#3  0x00007ffff66c7a6b in _cffi_f_notmuch_thread_destroy (self=<optimized out>, 
    arg0=<optimized out>) at build/temp.linux-x86_64-3.8/notmuch2._capi.c:4826
4826	build/temp.linux-x86_64-3.8/notmuch2._capi.c: No such file or directory.

(gdb) up
#4  0x0000000000519b0b in cfunction_vectorcall_O (
    func=<built-in method notmuch_thread_destroy of CompiledLib object at remote 0x7ffff636f040>, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>)
    at ../Objects/methodobject.c:482
482	../Objects/methodobject.c: No such file or directory.

(gdb) up
#5  0x000000000050a557 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, 
    args=0x7ffff4aa4ec0, 
    callable=<built-in method notmuch_thread_destroy of CompiledLib object at remote 0x7ffff636f040>) at ../Include/cpython/abstract.h:127
127	../Include/cpython/abstract.h: No such file or directory.

(gdb) up
#6  call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, 
    tstate=0x9241a0) at ../Python/ceval.c:4963
4963	../Python/ceval.c: No such file or directory.

(gdb) up
#7  _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>)
    at ../Python/ceval.c:3469
3469	in ../Python/ceval.c

(gdb) up
#8  0x000000000051ad20 in PyEval_EvalFrameEx (throwflag=0, 
    f=Frame 0x7ffff4aa4d40, for file /home/pazz/.local/lib/python3.8/site-packages/notmuch2/_thread.py, line 38, in _destroy (self=<Thread(_parent=<ThreadIter(_db=<Database(mode=<Mode(_value_=0, _name_='READ_ONLY', __objclass__=<EnumMeta(_generate_next_value_=<function at remote 0x7ffff76a9ee0>, __module__='notmuch2._database', __doc__='An enumeration.', _member_names_=['READ_ONLY', 'READ_WRITE'], _member_map_={'READ_ONLY': <...>, 'READ_WRITE': <Mode(_value_=1, _name_='READ_WRITE', __objclass__=<...>) at remote 0x7ffff5480a30>}, _member_type_=<type at remote 0x8c8440>, _value2member_map_={0: <...>, 1: <...>}, READ_ONLY=<...>, READ_WRITE=<...>, __new__=<function at remote 0x7ffff76a9e50>) at remote 0xd59c20>) at remote 0x7ffff6380760>, _memptr__db_p_d5c090=<_cffi_backend.CData at remote 0x7ffff4afd930>, closed=False) at remote 0x7ffff4afd5b0>, _parent=<Query(_db=<...>, _memptr__query_p_d591c0=<_cffi_backend.CData at remote 0x7ffff4afdae0>) at remote 0x7ffff4afd9a0>, _memptr__iter_p_d4a9d0=<_cffi_backend.CData at rem...(truncated)) at ../Python/ceval.c:741
741	../Python/ceval.c: No such file or directory.

(gdb) up
#9  function_code_fastcall (globals=<optimized out>, nargs=1, args=<optimized out>, 
    co=<optimized out>) at ../Objects/call.c:283
283	../Objects/call.c: No such file or directory.

(gdb) up
#10 _PyFunction_Vectorcall (func=<optimized out>, stack=<optimized out>, 
    nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:410
410	in ../Objects/call.c

(gdb) up
#11 0x0000000000505a6c in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, 
    args=0x7ffff4aa4d18, callable=<function at remote 0x7ffff638b550>)
    at ../Include/cpython/abstract.h:127
127	../Include/cpython/abstract.h: No such file or directory.

(gdb) up
#12 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, 
    tstate=0x9241a0) at ../Python/ceval.c:4963
4963	../Python/ceval.c: No such file or directory.

(gdb) up
#13 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>)
    at ../Python/ceval.c:3486
3486	in ../Python/ceval.c

(gdb) up
#14 0x000000000051ad20 in PyEval_EvalFrameEx (throwflag=0, 
    f=Frame 0x7ffff4aa4ba0, for file /home/pazz/.local/lib/python3.8/site-packages/notmuch2/_thread.py, line 34, in __del__ (self=<Thread(_parent=<ThreadIter(_db=<Database(mode=<Mode(_value_=0, _name_='READ_ONLY', __objclass__=<EnumMeta(_generate_next_value_=<function at remote 0x7ffff76a9ee0>, __module__='notmuch2._database', __doc__='An enumeration.', _member_names_=['READ_ONLY', 'READ_WRITE'], _member_map_={'READ_ONLY': <...>, 'READ_WRITE': <Mode(_value_=1, _name_='READ_WRITE', __objclass__=<...>) at remote 0x7ffff5480a30>}, _member_type_=<type at remote 0x8c8440>, _value2member_map_={0: <...>, 1: <...>}, READ_ONLY=<...>, READ_WRITE=<...>, __new__=<function at remote 0x7ffff76a9e50>) at remote 0xd59c20>) at remote 0x7ffff6380760>, _memptr__db_p_d5c090=<_cffi_backend.CData at remote 0x7ffff4afd930>, closed=False) at remote 0x7ffff4afd5b0>, _parent=<Query(_db=<...>, _memptr__query_p_d591c0=<_cffi_backend.CData at remote 0x7ffff4afdae0>) at remote 0x7ffff4afd9a0>, _memptr__iter_p_d4a9d0=<_cffi_backend.CData at remo...(truncated)) at ../Python/ceval.c:741
741	../Python/ceval.c: No such file or directory.


----------------------------------
(gdb) frame
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50	in ../sysdeps/unix/sysv/linux/raise.c

----------------------------------


(gdb) info-signals

... see attachment info-signals


----------------------------------

(gdb) py-bt

... see attachment py-bt

----------------------------------

(gdb) py-print
Unable to read information on python frame


----------------------------------

(gdb) py-locals
Unable to read information on python frame


----------------------------------

(gdb) info threads
  Id   Target Id                                     Frame 
* 1    Thread 0x7ffff7c0e740 (LWP 3614451) "python3" __GI_raise (sig=sig@entry=6)
    at ../sysdeps/unix/sysv/linux/raise.c:50

[-- Attachment #2: backtrace --]
[-- Type: text/plain, Size: 74258 bytes --]

#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007ffff7c36537 in __GI_abort () at abort.c:79
#2  0x00007ffff66b5551 in  () at /usr/lib/x86_64-linux-gnu/libtalloc.so.2
#3  0x00007ffff66c7a6b in _cffi_f_notmuch_thread_destroy
    (self=<optimized out>, arg0=<optimized out>)
    at build/temp.linux-x86_64-3.8/notmuch2._capi.c:4826
#4  0x0000000000519b0b in cfunction_vectorcall_O
    (func=<built-in method notmuch_thread_destroy of CompiledLib object at remote 0x7ffff636f040>, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>)
    at ../Objects/methodobject.c:482
#5  0x000000000050a557 in _PyObject_Vectorcall
    (kwnames=0x0, nargsf=<optimized out>, args=0x7ffff4aa4ec0, callable=<built-in method notmuch_thread_destroy of CompiledLib object at remote 0x7ffff636f040>)
    at ../Include/cpython/abstract.h:127
#6  call_function
    (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x9241a0) at ../Python/ceval.c:4963
#7  _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>)
    at ../Python/ceval.c:3469
#8  0x000000000051ad20 in PyEval_EvalFrameEx
    (throwflag=0, f=Frame 0x7ffff4aa4d40, for file /home/pazz/.local/lib/python3.8/site-packages/notmuch2/_thread.py, line 38, in _destroy (self=<Thread(_parent=<ThreadIter(_db=<Database(mode=<Mode(_value_=0, _name_='READ_ONLY', __objclass__=<EnumMeta(_generate_next_value_=<function at remote 0x7ffff76a9ee0>, __module__='notmuch2._database', __doc__='An enumeration.', _member_names_=['READ_ONLY', 'READ_WRITE'], _member_map_={'READ_ONLY': <...>, 'READ_WRITE': <Mode(_value_=1, _name_='READ_WRITE', __objclass__=<...>) at remote 0x7ffff5480a30>}, _member_type_=<type at remote 0x8c8440>, _value2member_map_={0: <...>, 1: <...>}, READ_ONLY=<...>, READ_WRITE=<...>, __new__=<function at remote 0x7ffff76a9e50>) at remote 0xd59c20>) at remote 0x7ffff6380760>, _memptr__db_p_d5c090=<_cffi_backend.CData at remote 0x7ffff4afd930>, closed=False) at remote 0x7ffff4afd5b0>, _parent=<Query(_db=<...>, _memptr__query_p_d591c0=<_cffi_backend.CData at remote 0x7ffff4afdae0>) at remote 0x7ffff4afd9a0>, _memptr__iter_p_d4a9d0=<_cffi_backend.CData at rem...(truncated)) at ../Python/ceval.c:741
#9  function_code_fastcall (globals=<optimized out>, nargs=1, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#10 _PyFunction_Vectorcall (func=<optimized out>, stack=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:410
#11 0x0000000000505a6c in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7ffff4aa4d18, callable=<function at remote 0x7ffff638b550>) at ../Include/cpython/abstract.h:127
#12 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x9241a0) at ../Python/ceval.c:4963
#13 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3486
#14 0x000000000051ad20 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7ffff4aa4ba0, for file /home/pazz/.local/lib/python3.8/site-packages/notmuch2/_thread.py, line 34, in __del__ (self=<Thread(_parent=<ThreadIter(_db=<Database(mode=<Mode(_value_=0, _name_='READ_ONLY', __objclass__=<EnumMeta(_generate_next_value_=<function at remote 0x7ffff76a9ee0>, __module__='notmuch2._database', __doc__='An enumeration.', _member_names_=['READ_ONLY', 'READ_WRITE'], _member_map_={'READ_ONLY': <...>, 'READ_WRITE': <Mode(_value_=1, _name_='READ_WRITE', __objclass__=<...>) at remote 0x7ffff5480a30>}, _member_type_=<type at remote 0x8c8440>, _value2member_map_={0: <...>, 1: <...>}, READ_ONLY=<...>, READ_WRITE=<...>, __new__=<function at remote 0x7ffff76a9e50>) at remote 0xd59c20>) at remote 0x7ffff6380760>, _memptr__db_p_d5c090=<_cffi_backend.CData at remote 0x7ffff4afd930>, closed=False) at remote 0x7ffff4afd5b0>, _parent=<Query(_db=<...>, _memptr__query_p_d591c0=<_cffi_backend.CData at remote 0x7ffff4afdae0>) at remote 0x7ffff4afd9a0>, _memptr__iter_p_d4a9d0=<_cffi_backend.CData at remo...(truncated)) at ../Python/ceval.c:741
#15 function_code_fastcall (globals=<optimized out>, nargs=1, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#16 _PyFunction_Vectorcall (func=<optimized out>, stack=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:410
#17 0x00000000005627ad in _PyObject_Vectorcall (kwnames=0x0, nargsf=1, args=0x7fffffffa1f8, callable=<function at remote 0x7ffff638b4c0>) at ../Include/cpython/abstract.h:127
#18 _PyObject_FastCall (nargs=1, args=0x7fffffffa1f8, func=<function at remote 0x7ffff638b4c0>) at ../Include/cpython/abstract.h:147
#19 call_unbound_noarg (unbound=<optimized out>, func=<function at remote 0x7ffff638b4c0>, self=<optimized out>) at ../Objects/typeobject.c:1465
#20 0x00000000006030e7 in slot_tp_finalize (self=<Thread(_parent=<ThreadIter(_db=<Database(mode=<Mode(_value_=0, _name_='READ_ONLY', __objclass__=<EnumMeta(_generate_next_value_=<function at remote 0x7ffff76a9ee0>, __module__='notmuch2._database', __doc__='An enumeration.', _member_names_=['READ_ONLY', 'READ_WRITE'], _member_map_={'READ_ONLY': <...>, 'READ_WRITE': <Mode(_value_=1, _name_='READ_WRITE', __objclass__=<...>) at remote 0x7ffff5480a30>}, _member_type_=<type at remote 0x8c8440>, _value2member_map_={0: <...>, 1: <...>}, READ_ONLY=<...>, READ_WRITE=<...>, __new__=<function at remote 0x7ffff76a9e50>) at remote 0xd59c20>) at remote 0x7ffff6380760>, _memptr__db_p_d5c090=<_cffi_backend.CData at remote 0x7ffff4afd930>, closed=False) at remote 0x7ffff4afd5b0>, _parent=<Query(_db=<...>, _memptr__query_p_d591c0=<_cffi_backend.CData at remote 0x7ffff4afdae0>) at remote 0x7ffff4afd9a0>, _memptr__iter_p_d4a9d0=<_cffi_backend.CData at remote 0x7ffff4afde10>, _fn_destroy=<built-in method notmuch_threads_destroy of CompiledLib object at remote 0x7ffff636f040>, _f...(truncated)) at ../Objects/typeobject.c:6835
#21 0x000000000053dfee in PyObject_CallFinalizer (self=<Thread(_parent=<ThreadIter(_db=<Database(mode=<Mode(_value_=0, _name_='READ_ONLY', __objclass__=<EnumMeta(_generate_next_value_=<function at remote 0x7ffff76a9ee0>, __module__='notmuch2._database', __doc__='An enumeration.', _member_names_=['READ_ONLY', 'READ_WRITE'], _member_map_={'READ_ONLY': <...>, 'READ_WRITE': <Mode(_value_=1, _name_='READ_WRITE', __objclass__=<...>) at remote 0x7ffff5480a30>}, _member_type_=<type at remote 0x8c8440>, _value2member_map_={0: <...>, 1: <...>}, READ_ONLY=<...>, READ_WRITE=<...>, __new__=<function at remote 0x7ffff76a9e50>) at remote 0xd59c20>) at remote 0x7ffff6380760>, _memptr__db_p_d5c090=<_cffi_backend.CData at remote 0x7ffff4afd930>, closed=False) at remote 0x7ffff4afd5b0>, _parent=<Query(_db=<...>, _memptr__query_p_d591c0=<_cffi_backend.CData at remote 0x7ffff4afdae0>) at remote 0x7ffff4afd9a0>, _memptr__iter_p_d4a9d0=<_cffi_backend.CData at remote 0x7ffff4afde10>, _fn_destroy=<built-in method notmuch_threads_destroy of CompiledLib object at remote 0x7ffff636f040>, _f...(truncated)) at ../Objects/object.c:310
#22 PyObject_CallFinalizerFromDealloc (self=<Thread(_parent=<ThreadIter(_db=<Database(mode=<Mode(_value_=0, _name_='READ_ONLY', __objclass__=<EnumMeta(_generate_next_value_=<function at remote 0x7ffff76a9ee0>, __module__='notmuch2._database', __doc__='An enumeration.', _member_names_=['READ_ONLY', 'READ_WRITE'], _member_map_={'READ_ONLY': <...>, 'READ_WRITE': <Mode(_value_=1, _name_='READ_WRITE', __objclass__=<...>) at remote 0x7ffff5480a30>}, _member_type_=<type at remote 0x8c8440>, _value2member_map_={0: <...>, 1: <...>}, READ_ONLY=<...>, READ_WRITE=<...>, __new__=<function at remote 0x7ffff76a9e50>) at remote 0xd59c20>) at remote 0x7ffff6380760>, _memptr__db_p_d5c090=<_cffi_backend.CData at remote 0x7ffff4afd930>, closed=False) at remote 0x7ffff4afd5b0>, _parent=<Query(_db=<...>, _memptr__query_p_d591c0=<_cffi_backend.CData at remote 0x7ffff4afdae0>) at remote 0x7ffff4afd9a0>, _memptr__iter_p_d4a9d0=<_cffi_backend.CData at remote 0x7ffff4afde10>, _fn_destroy=<built-in method notmuch_threads_destroy of CompiledLib object at remote 0x7ffff636f040>, _f...(truncated)) at ../Objects/object.c:328
#23 0x0000000000536caf in subtype_dealloc (self=<Thread(_parent=<ThreadIter(_db=<Database(mode=<Mode(_value_=0, _name_='READ_ONLY', __objclass__=<EnumMeta(_generate_next_value_=<function at remote 0x7ffff76a9ee0>, __module__='notmuch2._database', __doc__='An enumeration.', _member_names_=['READ_ONLY', 'READ_WRITE'], _member_map_={'READ_ONLY': <...>, 'READ_WRITE': <Mode(_value_=1, _name_='READ_WRITE', __objclass__=<...>) at remote 0x7ffff5480a30>}, _member_type_=<type at remote 0x8c8440>, _value2member_map_={0: <...>, 1: <...>}, READ_ONLY=<...>, READ_WRITE=<...>, __new__=<function at remote 0x7ffff76a9e50>) at remote 0xd59c20>) at remote 0x7ffff6380760>, _memptr__db_p_d5c090=<_cffi_backend.CData at remote 0x7ffff4afd930>, closed=False) at remote 0x7ffff4afd5b0>, _parent=<Query(_db=<...>, _memptr__query_p_d591c0=<_cffi_backend.CData at remote 0x7ffff4afdae0>) at remote 0x7ffff4afd9a0>, _memptr__iter_p_d4a9d0=<_cffi_backend.CData at remote 0x7ffff4afde10>, _fn_destroy=<built-in method notmuch_threads_destroy of CompiledLib object at remote 0x7ffff636f040>, _f...(truncated)) at ../Objects/typeobject.c:1221
#24 0x000000000050a4b0 in _Py_Dealloc (op=<optimized out>) at ../Objects/object.c:2215
#25 _Py_DECREF (op=<optimized out>, lineno=541, filename=<synthetic pointer>) at ../Include/object.h:478
#26 _Py_XDECREF (op=<optimized out>) at ../Include/object.h:541
#27 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:1357
#28 0x000000000053d3c9 in PyEval_EvalFrameEx (throwflag=<optimized out>, f=Frame 0x7ffff4a9b9a0, for file /home/pazz/projects/alot/alot/db/manager.py, line 570, in get_threads (self=<DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>, querystring='tag:inbox AND NOT tag:killed AND NOT path:uoe/indirect/**', sort='newest_first', exclude_tags=['deleted', 'spam'], db=<Database(mode=<Mode(_value_=0, _name_='READ_ONLY', __objclass__=<EnumMeta(_generate_next_value_=<function at remote 0x7ffff76a9ee0>, __module__='notmuch2._database', __doc__='An enumeration.', _member_names_=['READ_ONLY', 'READ_WRITE'], _member_map_={'READ_ONLY': <...>, 'READ_WRITE': <Mode(_value_=1, _name_='READ_WRITE', __objclass__=<...>) at remote 0x7ffff5480a30>}, _member_type_=<type at remote 0x8c8440>, _value2member_map_={0: <...>, 1: <...>}, READ_ONLY=<...>, READ_WRITE=<...>, __new__=<function at remote 0x7ffff76a9e50>) at remote 0xd59c20>) at remote 0x7ffff6380760>, _memptr__db_p_d5c090=<_cffi_backend.CData at remote 0x7ffff4a...(truncated)) at ../Python/ceval.c:741
#29 gen_send_ex (gen=0x7ffff4b775f0, arg=<optimized out>, exc=<optimized out>, closing=<optimized out>) at ../Objects/genobject.c:222
#30 0x00000000005a5580 in gen_iternext (gen=<optimized out>) at ../Objects/genobject.c:543
#31 builtin_next (self=<optimized out>, args=0x7ffff4aa1588, nargs=1) at ../Python/bltinmodule.c:1389
#32 0x000000000051b7d9 in cfunction_vectorcall_FASTCALL (func=<built-in method next of module object at remote 0x7ffff78b70e0>, args=0x7ffff4aa1588, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/methodobject.c:422
#33 0x00000000005058a6 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7ffff4aa1588, callable=<built-in method next of module object at remote 0x7ffff78b70e0>) at ../Include/cpython/abstract.h:127
#34 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x9241a0) at ../Python/ceval.c:4963
#35 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3500
#36 0x000000000051ad20 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7ffff4aa1400, for file /home/pazz/projects/alot/alot/walker.py, line 84, in _get_next_item (self=<IterableWalker(iterable=<generator at remote 0x7ffff4b775f0>, kwargs={'dbman': <DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>}, containerclass=<WidgetMeta(__module__='alot.widgets.search', __doc__='\n    selectable line widget that represents a :class:`~alot.db.Thread`\n    in the :class:`~alot.buffers.SearchBuffer`.\n    ', __init__=<function at remote 0x7ffff543dee0>, rebuild=<function at remote 0x7ffff5441820>, render=<function at remote 0x7ffff5441af0>, selectable=<function at remote 0x7ffff5441940>, keypress=<function at remote 0x7ffff54419d0>, get_thread=<function at remote 0x7ffff5441a60>, _ThreadlineWidget__super=<super at remote 0x7ffff5445f00>) at remote 0xd6b0a0>, lines=[<ThreadlineWidget(dbman=<...>, tid=<BinString(_bindata=b'000000000001e2c2') at remote 0x7ffff4b77a50>, thread=<Thread(_dbman=<...>, ...(truncated)) at ../Python/ceval.c:741
#37 function_code_fastcall (globals=<optimized out>, nargs=1, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#38 _PyFunction_Vectorcall (func=<optimized out>, stack=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:410
#39 0x0000000000505a6c in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7ffff4aa0f48, callable=<function at remote 0x7ffff5441430>) at ../Include/cpython/abstract.h:127
#40 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x9241a0) at ../Python/ceval.c:4963
#41 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3486
#42 0x000000000051ad20 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7ffff4aa0dc0, for file /home/pazz/projects/alot/alot/walker.py, line 72, in _get_at_pos (self=<IterableWalker(iterable=<generator at remote 0x7ffff4b775f0>, kwargs={'dbman': <DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>}, containerclass=<WidgetMeta(__module__='alot.widgets.search', __doc__='\n    selectable line widget that represents a :class:`~alot.db.Thread`\n    in the :class:`~alot.buffers.SearchBuffer`.\n    ', __init__=<function at remote 0x7ffff543dee0>, rebuild=<function at remote 0x7ffff5441820>, render=<function at remote 0x7ffff5441af0>, selectable=<function at remote 0x7ffff5441940>, keypress=<function at remote 0x7ffff54419d0>, get_thread=<function at remote 0x7ffff5441a60>, _ThreadlineWidget__super=<super at remote 0x7ffff5445f00>) at remote 0xd6b0a0>, lines=[<ThreadlineWidget(dbman=<...>, tid=<BinString(_bindata=b'000000000001e2c2') at remote 0x7ffff4b77a50>, thread=<Thread(_dbman=<...>, _au...(truncated)) at ../Python/ceval.c:741
#43 function_code_fastcall (globals=<optimized out>, nargs=2, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#44 _PyFunction_Vectorcall (func=<optimized out>, stack=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:410
#45 0x0000000000505a6c in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7ffff4ab1d60, callable=<function at remote 0x7ffff54413a0>) at ../Include/cpython/abstract.h:127
#46 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x9241a0) at ../Python/ceval.c:4963
#47 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3486
#48 0x000000000051ad20 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7ffff4ab1be0, for file /home/pazz/projects/alot/alot/walker.py, line 46, in get_next (self=<IterableWalker(iterable=<generator at remote 0x7ffff4b775f0>, kwargs={'dbman': <DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>}, containerclass=<WidgetMeta(__module__='alot.widgets.search', __doc__='\n    selectable line widget that represents a :class:`~alot.db.Thread`\n    in the :class:`~alot.buffers.SearchBuffer`.\n    ', __init__=<function at remote 0x7ffff543dee0>, rebuild=<function at remote 0x7ffff5441820>, render=<function at remote 0x7ffff5441af0>, selectable=<function at remote 0x7ffff5441940>, keypress=<function at remote 0x7ffff54419d0>, get_thread=<function at remote 0x7ffff5441a60>, _ThreadlineWidget__super=<super at remote 0x7ffff5445f00>) at remote 0xd6b0a0>, lines=[<ThreadlineWidget(dbman=<...>, tid=<BinString(_bindata=b'000000000001e2c2') at remote 0x7ffff4b77a50>, thread=<Thread(_dbman=<...>, _autho...(truncated)) at ../Python/ceval.c:741
#49 function_code_fastcall (globals=<optimized out>, nargs=2, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#50 _PyFunction_Vectorcall (func=<optimized out>, stack=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:410
#51 0x0000000000505a6c in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x10341e8, callable=<function at remote 0x7ffff54411f0>) at ../Include/cpython/abstract.h:127
#52 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x9241a0) at ../Python/ceval.c:4963
#53 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3486
#54 0x0000000000503df5 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x1033fb0, for file /usr/lib/python3/dist-packages/urwid/listbox.py, line 641, in calculate_visible (self=<ListBox(_body=<IterableWalker(iterable=<generator at remote 0x7ffff4b775f0>, kwargs={'dbman': <DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>}, containerclass=<WidgetMeta(__module__='alot.widgets.search', __doc__='\n    selectable line widget that represents a :class:`~alot.db.Thread`\n    in the :class:`~alot.buffers.SearchBuffer`.\n    ', __init__=<function at remote 0x7ffff543dee0>, rebuild=<function at remote 0x7ffff5441820>, render=<function at remote 0x7ffff5441af0>, selectable=<function at remote 0x7ffff5441940>, keypress=<function at remote 0x7ffff54419d0>, get_thread=<function at remote 0x7ffff5441a60>, _ThreadlineWidget__super=<super at remote 0x7ffff5445f00>) at remote 0xd6b0a0>, lines=[<ThreadlineWidget(dbman=<...>, tid=<BinString(_bindata=b'000000000001e2c2') at remote 0x7ffff4b77a50>, thread=...(truncated)) at ../Python/ceval.c:741
#55 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=0x7ffff6bb6748, kwargs=0xf98f90, kwcount=<optimized out>, kwstep=1, defs=0x7ffff6bb6cb8, defcount=1, kwdefs=0x0, closure=0x0, name='calculate_visible', qualname='ListBox.calculate_visible') at ../Python/ceval.c:4298
#56 0x000000000052c2c1 in _PyFunction_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, stack=0xf98f80, func=<function at remote 0x7ffff6bc13a0>) at ../Objects/call.c:435
#57 _PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=0xf98f80, callable=<function at remote 0x7ffff6bc13a0>) at ../Include/cpython/abstract.h:127
#58 method_vectorcall (method=<optimized out>, args=0xf98f88, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/classobject.c:60
#59 0x0000000000506a35 in _PyObject_Vectorcall (kwnames=('focus',), nargsf=<optimized out>, args=<optimized out>, callable=<method at remote 0x7ffff4931100>) at ../Include/cpython/abstract.h:127
#60 call_function (kwnames=('focus',), oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=<optimized out>) at ../Python/ceval.c:4963
#61 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3515
#62 0x0000000000503df5 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0xf98d40, for file /usr/lib/python3/dist-packages/urwid/listbox.py, line 695, in render (self=<ListBox(_body=<IterableWalker(iterable=<generator at remote 0x7ffff4b775f0>, kwargs={'dbman': <DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>}, containerclass=<WidgetMeta(__module__='alot.widgets.search', __doc__='\n    selectable line widget that represents a :class:`~alot.db.Thread`\n    in the :class:`~alot.buffers.SearchBuffer`.\n    ', __init__=<function at remote 0x7ffff543dee0>, rebuild=<function at remote 0x7ffff5441820>, render=<function at remote 0x7ffff5441af0>, selectable=<function at remote 0x7ffff5441940>, keypress=<function at remote 0x7ffff54419d0>, get_thread=<function at remote 0x7ffff5441a60>, _ThreadlineWidget__super=<super at remote 0x7ffff5445f00>) at remote 0xd6b0a0>, lines=[<ThreadlineWidget(dbman=<...>, tid=<BinString(_bindata=b'000000000001e2c2') at remote 0x7ffff4b77a50>, thread=<Thread(_dbm...(truncated)) at ../Python/ceval.c:741
#63 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=0x7ffff6d1ea78, kwargs=0x17cde88, kwcount=<optimized out>, kwstep=1, defs=0x7ffff6bb6ce8, defcount=1, kwdefs=0x0, closure=0x0, name='render', qualname='ListBox.render') at ../Python/ceval.c:4298
#64 0x000000000051adae in _PyFunction_Vectorcall (func=<optimized out>, stack=0x17cde78, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:435
#65 0x0000000000506a35 in _PyObject_Vectorcall (kwnames=('focus',), nargsf=<optimized out>, args=<optimized out>, callable=<function at remote 0x7ffff6bc1430>) at ../Include/cpython/abstract.h:127
#66 call_function (kwnames=('focus',), oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=<optimized out>) at ../Python/ceval.c:4963
#67 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3515
#68 0x0000000000504783 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x17cdcd0, for file /usr/lib/python3/dist-packages/urwid/widget.py, line 145, in cached_render (self=<ListBox(_body=<IterableWalker(iterable=<generator at remote 0x7ffff4b775f0>, kwargs={'dbman': <DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>}, containerclass=<WidgetMeta(__module__='alot.widgets.search', __doc__='\n    selectable line widget that represents a :class:`~alot.db.Thread`\n    in the :class:`~alot.buffers.SearchBuffer`.\n    ', __init__=<function at remote 0x7ffff543dee0>, rebuild=<function at remote 0x7ffff5441820>, render=<function at remote 0x7ffff5441af0>, selectable=<function at remote 0x7ffff5441940>, keypress=<function at remote 0x7ffff54419d0>, get_thread=<function at remote 0x7ffff5441a60>, _ThreadlineWidget__super=<super at remote 0x7ffff5445f00>) at remote 0xd6b0a0>, lines=[<ThreadlineWidget(dbman=<...>, tid=<BinString(_bindata=b'000000000001e2c2') at remote 0x7ffff4b77a50>, thread=<Thre...(truncated)) at ../Python/ceval.c:741
#69 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=0x0, kwargs=0x7ffff4aa3b90, kwcount=<optimized out>, kwstep=1, defs=0x7ffff6d1ea48, defcount=1, kwdefs=0x0, closure=(<cell at remote 0x7ffff6bb6f40>, <cell at remote 0x7ffff6bb6f70>, <cell at remote 0x7ffff6bb6fa0>), name='render', qualname='cache_widget_render.<locals>.cached_render') at ../Python/ceval.c:4298
#70 0x000000000051adae in _PyFunction_Vectorcall (func=<optimized out>, stack=0x7ffff4aa3b78, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:435
#71 0x0000000000505a6c in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7ffff4aa3b78, callable=<function at remote 0x7ffff6bc2550>) at ../Include/cpython/abstract.h:127
#72 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x9241a0) at ../Python/ceval.c:4963
#73 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3486
#74 0x0000000000503df5 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7ffff4aa39f0, for file /home/pazz/projects/alot/alot/buffers/buffer.py, line 19, in render (self=<SearchBuffer(dbman=<DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>, ui=<UI(dbman=<...>, buffers=[<...>], current_buffer=<...>, db_was_locked=False, mode='search', commandprompthistory=['search microsoft', 'search beichen', 'search gereth', 'search beini', 'search bane', 'search thomas welsch', 'attach ./IES_R1_201345.pdf', 'taglist ', 'taglist ', 'attach ./intro.pdf', 'search henzinger', 'search frontiers', 'search nicoleta', 'set Cc csstudy@liverpool.ac.uk', 'search carmel', 'search increase', 'tag watch', 'search elias', 'search kehinde', 'search mattrace', 'search matrace', 'search bed', 'search mattrace', 'search mattrece', 'search mattrece', 'refine mattress', 'search bedfactorydirect', 'search comp122 fridays', 'refine comp122 friday', 'refine comp122 friday', 'refine tag:inbox AND NOT tag:killed AND NOT pa...(truncated)) at ../Python/ceval.c:741
#75 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=0x0, kwargs=0x100e808, kwcount=<optimized out>, kwstep=1, defs=0x7ffff54aaa78, defcount=1, kwdefs=0x0, closure=0x0, name='render', qualname='Buffer.render') at ../Python/ceval.c:4298
#76 0x000000000051adae in _PyFunction_Vectorcall (func=<optimized out>, stack=0x100e7f0, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:435
#77 0x0000000000505a6c in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x100e7f0, callable=<function at remote 0x7ffff54a0af0>) at ../Include/cpython/abstract.h:127
#78 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x9241a0) at ../Python/ceval.c:4963
#79 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3486
#80 0x0000000000503df5 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x100e610, for file /usr/lib/python3/dist-packages/urwid/container.py, line 2369, in render (self=<Frame(_header=None, _body=<SearchBuffer(dbman=<DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>, ui=<UI(dbman=<...>, buffers=[<...>], current_buffer=<...>, db_was_locked=False, mode='search', commandprompthistory=['search microsoft', 'search beichen', 'search gereth', 'search beini', 'search bane', 'search thomas welsch', 'attach ./IES_R1_201345.pdf', 'taglist ', 'taglist ', 'attach ./intro.pdf', 'search henzinger', 'search frontiers', 'search nicoleta', 'set Cc csstudy@liverpool.ac.uk', 'search carmel', 'search increase', 'tag watch', 'search elias', 'search kehinde', 'search mattrace', 'search matrace', 'search bed', 'search mattrace', 'search mattrece', 'search mattrece', 'refine mattress', 'search bedfactorydirect', 'search comp122 fridays', 'refine comp122 friday', 'refine comp122 friday', 'refine tag:inbox AND...(truncated)) at ../Python/ceval.c:741
#81 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=0x7ffff6d1ea78, kwargs=0x17812e8, kwcount=<optimized out>, kwstep=1, defs=0x7ffff6c02388, defcount=1, kwdefs=0x0, closure=0x0, name='render', qualname='Frame.render') at ../Python/ceval.c:4298
#82 0x000000000051adae in _PyFunction_Vectorcall (func=<optimized out>, stack=0x17812d8, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:435
#83 0x0000000000506a35 in _PyObject_Vectorcall (kwnames=('focus',), nargsf=<optimized out>, args=<optimized out>, callable=<function at remote 0x7ffff6c1fb80>) at ../Include/cpython/abstract.h:127
#84 call_function (kwnames=('focus',), oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=<optimized out>) at ../Python/ceval.c:4963
#85 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3515
#86 0x0000000000504783 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x1781130, for file /usr/lib/python3/dist-packages/urwid/widget.py, line 145, in cached_render (self=<Frame(_header=None, _body=<SearchBuffer(dbman=<DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>, ui=<UI(dbman=<...>, buffers=[<...>], current_buffer=<...>, db_was_locked=False, mode='search', commandprompthistory=['search microsoft', 'search beichen', 'search gereth', 'search beini', 'search bane', 'search thomas welsch', 'attach ./IES_R1_201345.pdf', 'taglist ', 'taglist ', 'attach ./intro.pdf', 'search henzinger', 'search frontiers', 'search nicoleta', 'set Cc csstudy@liverpool.ac.uk', 'search carmel', 'search increase', 'tag watch', 'search elias', 'search kehinde', 'search mattrace', 'search matrace', 'search bed', 'search mattrace', 'search mattrece', 'search mattrece', 'refine mattress', 'search bedfactorydirect', 'search comp122 fridays', 'refine comp122 friday', 'refine comp122 friday', 'refine tag:inbox ...(truncated)) at ../Python/ceval.c:741
#87 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=0x7ffff6c5e238, kwargs=0x17d6150, kwcount=<optimized out>, kwstep=1, defs=0x7ffff6d1ea48, defcount=1, kwdefs=0x0, closure=(<cell at remote 0x7ffff6c1d970>, <cell at remote 0x7ffff6c1d9a0>, <cell at remote 0x7ffff6c1d9d0>), name='render', qualname='cache_widget_render.<locals>.cached_render') at ../Python/ceval.c:4298
#88 0x000000000052c2c1 in _PyFunction_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, stack=0x17d6140, func=<function at remote 0x7ffff6c1fee0>) at ../Objects/call.c:435
#89 _PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=0x17d6140, callable=<function at remote 0x7ffff6c1fee0>) at ../Include/cpython/abstract.h:127
#90 method_vectorcall (method=<optimized out>, args=0x17d6148, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/classobject.c:60
#91 0x0000000000506a35 in _PyObject_Vectorcall (kwnames=('focus',), nargsf=<optimized out>, args=<optimized out>, callable=<method at remote 0x7ffff49ec3c0>) at ../Include/cpython/abstract.h:127
#92 call_function (kwnames=('focus',), oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=<optimized out>) at ../Python/ceval.c:4963
#93 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3515
#94 0x0000000000503df5 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x17d5fb0, for file /usr/lib/python3/dist-packages/urwid/decoration.py, line 226, in render (self=<AttrMap(_original_widget=<Frame(_header=None, _body=<SearchBuffer(dbman=<DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>, ui=<UI(dbman=<...>, buffers=[<...>], current_buffer=<...>, db_was_locked=False, mode='search', commandprompthistory=['search microsoft', 'search beichen', 'search gereth', 'search beini', 'search bane', 'search thomas welsch', 'attach ./IES_R1_201345.pdf', 'taglist ', 'taglist ', 'attach ./intro.pdf', 'search henzinger', 'search frontiers', 'search nicoleta', 'set Cc csstudy@liverpool.ac.uk', 'search carmel', 'search increase', 'tag watch', 'search elias', 'search kehinde', 'search mattrace', 'search matrace', 'search bed', 'search mattrace', 'search mattrece', 'search mattrece', 'refine mattress', 'search bedfactorydirect', 'search comp122 fridays', 'refine comp122 friday', 'refine comp122 frid...(truncated)) at ../Python/ceval.c:741
#95 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=0x7ffff6d1ea78, kwargs=0x17d3568, kwcount=<optimized out>, kwstep=1, defs=0x7ffff6c5e2c8, defcount=1, kwdefs=0x0, closure=0x0, name='render', qualname='AttrMap.render') at ../Python/ceval.c:4298
#96 0x000000000051adae in _PyFunction_Vectorcall (func=<optimized out>, stack=0x17d3558, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:435
#97 0x0000000000506a35 in _PyObject_Vectorcall (kwnames=('focus',), nargsf=<optimized out>, args=<optimized out>, callable=<function at remote 0x7ffff6bef940>) at ../Include/cpython/abstract.h:127
#98 call_function (kwnames=('focus',), oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=<optimized out>) at ../Python/ceval.c:4963
#99 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3515
#100 0x0000000000504783 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x17d33b0, for file /usr/lib/python3/dist-packages/urwid/widget.py, line 145, in cached_render (self=<AttrMap(_original_widget=<Frame(_header=None, _body=<SearchBuffer(dbman=<DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>, ui=<UI(dbman=<...>, buffers=[<...>], current_buffer=<...>, db_was_locked=False, mode='search', commandprompthistory=['search microsoft', 'search beichen', 'search gereth', 'search beini', 'search bane', 'search thomas welsch', 'attach ./IES_R1_201345.pdf', 'taglist ', 'taglist ', 'attach ./intro.pdf', 'search henzinger', 'search frontiers', 'search nicoleta', 'set Cc csstudy@liverpool.ac.uk', 'search carmel', 'search increase', 'tag watch', 'search elias', 'search kehinde', 'search mattrace', 'search matrace', 'search bed', 'search mattrace', 'search mattrece', 'search mattrece', 'refine mattress', 'search bedfactorydirect', 'search comp122 fridays', 'refine comp122 friday', 'refine comp122 f...(truncated)) at ../Python/ceval.c:741
#101 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=0x7ffff6b72bc8, kwargs=0x7ffff4aa0be8, kwcount=<optimized out>, kwstep=1, defs=0x7ffff6d1ea48, defcount=1, kwdefs=0x0, closure=(<cell at remote 0x7ffff6bec8b0>, <cell at remote 0x7ffff6bec8e0>, <cell at remote 0x7ffff6bec910>), name='render', qualname='cache_widget_render.<locals>.cached_render') at ../Python/ceval.c:4298
#102 0x000000000052c2c1 in _PyFunction_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, stack=0x7ffff4aa0bd8, func=<function at remote 0x7ffff6bef9d0>) at ../Objects/call.c:435
#103 _PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=0x7ffff4aa0bd8, callable=<function at remote 0x7ffff6bef9d0>) at ../Include/cpython/abstract.h:127
#104 method_vectorcall (method=<optimized out>, args=0x7ffff4aa0be0, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/classobject.c:60
#105 0x0000000000506a35 in _PyObject_Vectorcall (kwnames=('focus',), nargsf=<optimized out>, args=<optimized out>, callable=<method at remote 0x7ffff49d2100>) at ../Include/cpython/abstract.h:127
#106 call_function (kwnames=('focus',), oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=<optimized out>) at ../Python/ceval.c:4963
#107 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3515
#108 0x000000000051ad20 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7ffff4aa0a60, for file /usr/lib/python3/dist-packages/urwid/main_loop.py, line 588, in draw_screen (self=<MainLoop(_widget=<AttrMap(_original_widget=<Frame(_header=None, _body=<SearchBuffer(dbman=<DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>, ui=<UI(dbman=<...>, buffers=[<...>], current_buffer=<...>, db_was_locked=False, mode='search', commandprompthistory=['search microsoft', 'search beichen', 'search gereth', 'search beini', 'search bane', 'search thomas welsch', 'attach ./IES_R1_201345.pdf', 'taglist ', 'taglist ', 'attach ./intro.pdf', 'search henzinger', 'search frontiers', 'search nicoleta', 'set Cc csstudy@liverpool.ac.uk', 'search carmel', 'search increase', 'tag watch', 'search elias', 'search kehinde', 'search mattrace', 'search matrace', 'search bed', 'search mattrace', 'search mattrece', 'search mattrece', 'refine mattress', 'search bedfactorydirect', 'search comp122 fridays', 'refine comp122 fr...(truncated)) at ../Python/ceval.c:741
#109 function_code_fastcall (globals=<optimized out>, nargs=1, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#110 _PyFunction_Vectorcall (func=<optimized out>, stack=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:410
#111 0x0000000000505a6c in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7ffff4a9f910, callable=<function at remote 0x7ffff6b8df70>) at ../Include/cpython/abstract.h:127
#112 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x9241a0) at ../Python/ceval.c:4963
#113 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3486
#114 0x0000000000503df5 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7ffff4a9f780, for file /home/pazz/projects/alot/alot/ui.py, line 668, in update (self=<UI(dbman=<DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>, buffers=[<SearchBuffer(dbman=<...>, ui=<...>, querystring='tag:inbox AND NOT tag:killed AND NOT path:uoe/indirect/**', sort_order='newest_first', result_count=40, search_threads_rebuild_limit=0, isinitialized=True, threadlist=<IterableWalker(iterable=<generator at remote 0x7ffff4b775f0>, kwargs={'dbman': <...>}, containerclass=<WidgetMeta(__module__='alot.widgets.search', __doc__='\n    selectable line widget that represents a :class:`~alot.db.Thread`\n    in the :class:`~alot.buffers.SearchBuffer`.\n    ', __init__=<function at remote 0x7ffff543dee0>, rebuild=<function at remote 0x7ffff5441820>, render=<function at remote 0x7ffff5441af0>, selectable=<function at remote 0x7ffff5441940>, keypress=<function at remote 0x7ffff54419d0>, get_thread=<function at remote 0x7f...(truncated)) at ../Python/ceval.c:741
#115 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=0x0, kwargs=0x7ffff49c3790, kwcount=<optimized out>, kwstep=1, defs=0x7ffff54aa118, defcount=1, kwdefs=0x0, closure=0x0, name='update', qualname='UI.update') at ../Python/ceval.c:4298
#116 0x000000000051adae in _PyFunction_Vectorcall (func=<optimized out>, stack=0x7ffff49c3788, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:435
#117 0x0000000000505a6c in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7ffff49c3788, callable=<function at remote 0x7ffff53e8ee0>) at ../Include/cpython/abstract.h:127
#118 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x9241a0) at ../Python/ceval.c:4963
#119 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3486
#120 0x0000000000504783 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7ffff49c35e0, for file /home/pazz/projects/alot/alot/commands/search.py, line 461, in refresh (hitcount_after=0)) at ../Python/ceval.c:741
#121 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=0x0, kwargs=0x17d57f0, kwcount=<optimized out>, kwstep=1, defs=0x0, defcount=0, kwdefs=0x0, closure=(<cell at remote 0x7ffff48dfa00>, <cell at remote 0x7ffff48df610>, <cell at remote 0x7ffff48df880>, <cell at remote 0x7ffff48df520>, <cell at remote 0x7ffff48df7c0>, <cell at remote 0x7ffff48df940>), name='refresh', qualname='TagCommand.apply.<locals>.refresh') at ../Python/ceval.c:4298
#122 0x000000000051adae in _PyFunction_Vectorcall (func=<optimized out>, stack=0x17d57f0, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:435
#123 0x00000000005058a6 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x17d57f0, callable=<function at remote 0x7ffff4927820>) at ../Include/cpython/abstract.h:127
#124 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x9241a0) at ../Python/ceval.c:4963
#125 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3500
#126 0x000000000051ad20 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x17d55f0, for file /home/pazz/projects/alot/alot/db/manager.py, line 147, in flush (self=<DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>, sync=True, current_item=('toggle', <function at remote 0x7ffff4927820>, '(tag:inbox AND NOT tag:killed AND NOT path:uoe/indirect/**) AND thread:000000000001e2ac', ['inbox']), cmd='toggle', afterwards=<function at remote 0x7ffff4927820>, mode=<Mode(_value_=1, _name_='READ_WRITE', __objclass__=<EnumMeta(_generate_next_value_=<function at remote 0x7ffff76a9ee0>, __module__='notmuch2._database', __doc__='An enumeration.', _member_names_=['READ_ONLY', 'READ_WRITE'], _member_map_={'READ_ONLY': <Mode(_value_=0, _name_='READ_ONLY', __objclass__=<...>) at remote 0x7ffff6380760>, 'READ_WRITE': <...>}, _member_type_=<type at remote 0x8c8440>, _value2member_map_={0: <...>, 1: <...>}, READ_ONLY=<...>, READ_WRITE=<...>, __new__=<function at remote 0x7ffff76a9e50>) at remote 0xd59c20>) at ...(truncated)) at ../Python/ceval.c:741
#127 function_code_fastcall (globals=<optimized out>, nargs=1, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#128 _PyFunction_Vectorcall (func=<optimized out>, stack=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:410
#129 0x0000000000505a6c in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7ffff490ef70, callable=<function at remote 0x7ffff5495c10>) at ../Include/cpython/abstract.h:127
#130 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x9241a0) at ../Python/ceval.c:4963
#131 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3486
#132 0x0000000000504783 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7ffff490edd0, for file /home/pazz/projects/alot/alot/commands/globals.py, line 611, in apply ()) at ../Python/ceval.c:741
#133 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=0x0, kwargs=0x7ffff4a91b88, kwcount=<optimized out>, kwstep=1, defs=0x0, defcount=0, kwdefs=0x0, closure=0x0, name='apply', qualname='FlushCommand.apply') at ../Python/ceval.c:4298
#134 0x000000000051adae in _PyFunction_Vectorcall (func=<optimized out>, stack=0x7ffff4a91b78, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:435
#135 0x0000000000505a6c in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7ffff4a91b78, callable=<function at remote 0x7ffff53df0d0>) at ../Include/cpython/abstract.h:127
#136 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x9241a0) at ../Python/ceval.c:4963
#137 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3486
#138 0x000000000053d50b in PyEval_EvalFrameEx (throwflag=<optimized out>, f=Frame 0x7ffff4a919f0, for file /home/pazz/projects/alot/alot/ui.py, line 723, in apply_command (self=<UI(dbman=<DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>, buffers=[<SearchBuffer(dbman=<...>, ui=<...>, querystring='tag:inbox AND NOT tag:killed AND NOT path:uoe/indirect/**', sort_order='newest_first', result_count=40, search_threads_rebuild_limit=0, isinitialized=True, threadlist=<IterableWalker(iterable=<generator at remote 0x7ffff4b775f0>, kwargs={'dbman': <...>}, containerclass=<WidgetMeta(__module__='alot.widgets.search', __doc__='\n    selectable line widget that represents a :class:`~alot.db.Thread`\n    in the :class:`~alot.buffers.SearchBuffer`.\n    ', __init__=<function at remote 0x7ffff543dee0>, rebuild=<function at remote 0x7ffff5441820>, render=<function at remote 0x7ffff5441af0>, selectable=<function at remote 0x7ffff5441940>, keypress=<function at remote 0x7ffff54419d0>, get_thread=<function at remo...(truncated)) at ../Python/ceval.c:741
#139 gen_send_ex (gen=0x7ffff49c4dc0, arg=<optimized out>, exc=<optimized out>, closing=<optimized out>) at ../Objects/genobject.c:222
#140 0x0000000000507153 in _PyGen_Send (arg=None, gen=0x7ffff49c4dc0) at ../Objects/genobject.c:292
#141 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:2053
#142 0x000000000053d50b in PyEval_EvalFrameEx (throwflag=<optimized out>, f=Frame 0xf85da0, for file /home/pazz/projects/alot/alot/commands/search.py, line 737, in apply (refresh=<function at remote 0x7ffff4927820>, tags=['inbox'])) at ../Python/ceval.c:741
#143 gen_send_ex (gen=0x7ffff49c4f40, arg=<optimized out>, exc=<optimized out>, closing=<optimized out>) at ../Objects/genobject.c:222
#144 0x0000000000507153 in _PyGen_Send (arg=None, gen=0x7ffff49c4f40) at ../Objects/genobject.c:292
#145 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:2053
#146 0x000000000053d50b in PyEval_EvalFrameEx (throwflag=<optimized out>, f=Frame 0x17d47a0, for file /home/pazz/projects/alot/alot/ui.py, line 721, in apply_command (self=<UI(dbman=<DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>, buffers=[<SearchBuffer(dbman=<...>, ui=<...>, querystring='tag:inbox AND NOT tag:killed AND NOT path:uoe/indirect/**', sort_order='newest_first', result_count=40, search_threads_rebuild_limit=0, isinitialized=True, threadlist=<IterableWalker(iterable=<generator at remote 0x7ffff4b775f0>, kwargs={'dbman': <...>}, containerclass=<WidgetMeta(__module__='alot.widgets.search', __doc__='\n    selectable line widget that represents a :class:`~alot.db.Thread`\n    in the :class:`~alot.buffers.SearchBuffer`.\n    ', __init__=<function at remote 0x7ffff543dee0>, rebuild=<function at remote 0x7ffff5441820>, render=<function at remote 0x7ffff5441af0>, selectable=<function at remote 0x7ffff5441940>, keypress=<function at remote 0x7ffff54419d0>, get_thread=<function at remote 0x...(truncated)) at ../Python/ceval.c:741
#147 gen_send_ex (gen=0x7ffff49c4e40, arg=<optimized out>, exc=<optimized out>, closing=<optimized out>) at ../Objects/genobject.c:222
#148 0x0000000000507153 in _PyGen_Send (arg=None, gen=0x7ffff49c4e40) at ../Objects/genobject.c:292
#149 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:2053
#150 0x000000000053d50b in PyEval_EvalFrameEx (throwflag=<optimized out>, f=Frame 0xeb8940, for file /home/pazz/projects/alot/alot/ui.py, line 277, in apply_commandline (apply_this_command=<function at remote 0x7ffff49274c0>, c='toggletags inbox')) at ../Python/ceval.c:741
#151 gen_send_ex (gen=0x7ffff49c4d40, arg=<optimized out>, exc=<optimized out>, closing=<optimized out>) at ../Objects/genobject.c:222
#152 0x0000000000507153 in _PyGen_Send (arg=None, gen=0x7ffff49c4d40) at ../Objects/genobject.c:292
#153 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:2053
#154 0x000000000053d50b in PyEval_EvalFrameEx (throwflag=<optimized out>, f=Frame 0x7ffff490e800, for file /home/pazz/projects/alot/alot/ui.py, line 195, in _apply_fire (cmdline='toggletags inbox')) at ../Python/ceval.c:741
#155 gen_send_ex (gen=0x7ffff49c4ec0, arg=<optimized out>, exc=<optimized out>, closing=<optimized out>) at ../Objects/genobject.c:222
#156 0x00007ffff7fa7cc9 in task_step_impl (exc=0x0, task=0x7ffff4d68720) at ./Modules/_asynciomodule.c:2641
#157 task_step (task=0x7ffff4d68720, exc=<optimized out>) at ./Modules/_asynciomodule.c:2934
#158 0x0000000000510513 in _PyObject_MakeTpCall (callable=<TaskStepMethWrapper at remote 0x7ffff48dfaf0>, args=<optimized out>, nargs=<optimized out>, keywords=<optimized out>) at ../Objects/call.c:159
#159 0x000000000064dadf in context_run (self=0x7ffff4a88c40, args=0x7ffff4981a48, nargs=1, kwnames=0x0) at ../Python/context.c:634
#160 0x000000000050dff1 in cfunction_vectorcall_FASTCALL_KEYWORDS (func=<built-in method run of Context object at remote 0x7ffff4a88c40>, args=0x7ffff4981a48, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/methodobject.c:437
#161 0x000000000052c6b1 in PyVectorcall_Call (callable=<built-in method run of Context object at remote 0x7ffff4a88c40>, tuple=<optimized out>, kwargs=<optimized out>) at ../Objects/call.c:199
#162 0x000000000050b09d in do_call_core (kwdict=0x0, callargs=(<TaskStepMethWrapper at remote 0x7ffff48dfaf0>,), func=<built-in method run of Context object at remote 0x7ffff4a88c40>, tstate=<optimized out>) at ../Python/ceval.c:4983
#163 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3559
#164 0x000000000051ad20 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7ffff4b97640, for file /usr/lib/python3.8/asyncio/events.py, line 81, in _run (self=<Handle at remote 0x7ffff49e5460>)) at ../Python/ceval.c:741
#165 function_code_fastcall (globals=<optimized out>, nargs=1, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#166 _PyFunction_Vectorcall (func=<optimized out>, stack=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:410
#167 0x0000000000505a6c in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x100b848, callable=<function at remote 0x7ffff6d87700>) at ../Include/cpython/abstract.h:127
#168 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x9241a0) at ../Python/ceval.c:4963
#169 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3486
#170 0x000000000051ad20 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x100b670, for file /usr/lib/python3.8/asyncio/base_events.py, line 2627, in _run_once (self=<_UnixSelectorEventLoop(_timer_cancelled_count=0, _closed=False, _stopping=False, _ready=<collections.deque at remote 0x7ffff50f76a0>, _scheduled=[<TimerHandle at remote 0x7ffff4b18510>], _default_executor=None, _internal_fds=1, _thread_id=140737350002496, _clock_resolution=<float at remote 0x7ffff4bcb850>, _exception_handler=None, _debug=False, slow_callback_duration=<float at remote 0x7ffff7371090>, _current_handle=None, _task_factory=None, _coroutine_origin_tracking_enabled=False, _coroutine_origin_tracking_saved_depth=None, _asyncgens=<WeakSet(data=set(), _remove=<function at remote 0x7ffff7519af0>, _pending_removals=[], _iterating=set()) at remote 0x7ffff54aa250>, _asyncgens_shutdown_called=False, _selector=<EpollSelector(_fd_to_key={4: <SelectorKey at remote 0x7ffff4b73720>, 6: <SelectorKey at remote 0x7ffff4b73860>, 9: <SelectorKey at remote 0x7ffff4a95130>, 0: <SelectorKey at remote 0x7ffff4a951d0>, 11: ...(truncated)) at ../Python/ceval.c:741
#171 function_code_fastcall (globals=<optimized out>, nargs=1, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#172 _PyFunction_Vectorcall (func=<optimized out>, stack=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:410
#173 0x0000000000505a6c in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7ffff4a8ed00, callable=<function at remote 0x7ffff6d10940>) at ../Include/cpython/abstract.h:127
#174 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x9241a0) at ../Python/ceval.c:4963
#175 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3486
#176 0x000000000051ad20 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7ffff4a8eb80, for file /usr/lib/python3.8/asyncio/base_events.py, line 826, in run_forever (self=<_UnixSelectorEventLoop(_timer_cancelled_count=0, _closed=False, _stopping=False, _ready=<collections.deque at remote 0x7ffff50f76a0>, _scheduled=[<TimerHandle at remote 0x7ffff4b18510>], _default_executor=None, _internal_fds=1, _thread_id=140737350002496, _clock_resolution=<float at remote 0x7ffff4bcb850>, _exception_handler=None, _debug=False, slow_callback_duration=<float at remote 0x7ffff7371090>, _current_handle=None, _task_factory=None, _coroutine_origin_tracking_enabled=False, _coroutine_origin_tracking_saved_depth=None, _asyncgens=<WeakSet(data=set(), _remove=<function at remote 0x7ffff7519af0>, _pending_removals=[], _iterating=set()) at remote 0x7ffff54aa250>, _asyncgens_shutdown_called=False, _selector=<EpollSelector(_fd_to_key={4: <SelectorKey at remote 0x7ffff4b73720>, 6: <SelectorKey at remote 0x7ffff4b73860>, 9: <SelectorKey at remote 0x7ffff4a95130>, 0: <SelectorKey at remote 0x7ffff4a951d0>...(truncated)) at ../Python/ceval.c:741
#177 function_code_fastcall (globals=<optimized out>, nargs=1, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#178 _PyFunction_Vectorcall (func=<optimized out>, stack=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:410
#179 0x0000000000505a6c in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7ffff4a96370, callable=<function at remote 0x7ffff6d0ddc0>) at ../Include/cpython/abstract.h:127
#180 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x9241a0) at ../Python/ceval.c:4963
#181 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3486
#182 0x0000000000503df5 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7ffff4a961f0, for file /home/pazz/.local/lib/python3.8/site-packages/twisted/internet/asyncioreactor.py, line 267, in run (self=<AsyncioSelectorReactor(_asyncioEventloop=<_UnixSelectorEventLoop(_timer_cancelled_count=0, _closed=False, _stopping=False, _ready=<collections.deque at remote 0x7ffff50f76a0>, _scheduled=[<TimerHandle at remote 0x7ffff4b18510>], _default_executor=None, _internal_fds=1, _thread_id=140737350002496, _clock_resolution=<float at remote 0x7ffff4bcb850>, _exception_handler=None, _debug=False, slow_callback_duration=<float at remote 0x7ffff7371090>, _current_handle=None, _task_factory=None, _coroutine_origin_tracking_enabled=False, _coroutine_origin_tracking_saved_depth=None, _asyncgens=<WeakSet(data=set(), _remove=<function at remote 0x7ffff7519af0>, _pending_removals=[], _iterating=set()) at remote 0x7ffff54aa250>, _asyncgens_shutdown_called=False, _selector=<EpollSelector(_fd_to_key={4: <SelectorKey at remote 0x7ffff4b73720>, 6: <SelectorKey at remote 0x7ffff4b73860>, 9: <Selecto...(truncated)) at ../Python/ceval.c:741
#183 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=0x0, kwargs=0x7ffff4a90848, kwcount=<optimized out>, kwstep=1, defs=0x7ffff5396298, defcount=1, kwdefs=0x0, closure=0x0, name='run', qualname='AsyncioSelectorReactor.run') at ../Python/ceval.c:4298
#184 0x000000000051adae in _PyFunction_Vectorcall (func=<optimized out>, stack=0x7ffff4a90840, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:435
#185 0x0000000000505a6c in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7ffff4a90840, callable=<function at remote 0x7ffff4b70f70>) at ../Include/cpython/abstract.h:127
#186 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x9241a0) at ../Python/ceval.c:4963
#187 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3486
#188 0x000000000051ad20 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7ffff4a906c0, for file /usr/lib/python3/dist-packages/urwid/main_loop.py, line 1341, in run (self=<TwistedEventLoop(reactor=<AsyncioSelectorReactor(_asyncioEventloop=<_UnixSelectorEventLoop(_timer_cancelled_count=0, _closed=False, _stopping=False, _ready=<collections.deque at remote 0x7ffff50f76a0>, _scheduled=[<TimerHandle at remote 0x7ffff4b18510>], _default_executor=None, _internal_fds=1, _thread_id=140737350002496, _clock_resolution=<float at remote 0x7ffff4bcb850>, _exception_handler=None, _debug=False, slow_callback_duration=<float at remote 0x7ffff7371090>, _current_handle=None, _task_factory=None, _coroutine_origin_tracking_enabled=False, _coroutine_origin_tracking_saved_depth=None, _asyncgens=<WeakSet(data=set(), _remove=<function at remote 0x7ffff7519af0>, _pending_removals=[], _iterating=set()) at remote 0x7ffff54aa250>, _asyncgens_shutdown_called=False, _selector=<EpollSelector(_fd_to_key={4: <SelectorKey at remote 0x7ffff4b73720>, 6: <SelectorKey at remote 0x7ffff4b73860>, 9: <SelectorKey...(truncated)) at ../Python/ceval.c:741
#189 function_code_fastcall (globals=<optimized out>, nargs=1, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#190 _PyFunction_Vectorcall (func=<optimized out>, stack=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:410
#191 0x0000000000505a6c in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7ffff4a8e758, callable=<function at remote 0x7ffff678d940>) at ../Include/cpython/abstract.h:127
#192 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x9241a0) at ../Python/ceval.c:4963
#193 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3486
#194 0x000000000051ad20 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7ffff4a8e5e0, for file /usr/lib/python3/dist-packages/urwid/main_loop.py, line 385, in _run (self=<MainLoop(_widget=<AttrMap(_original_widget=<Frame(_header=None, _body=<SearchBuffer(dbman=<DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>, ui=<UI(dbman=<...>, buffers=[<...>], current_buffer=<...>, db_was_locked=False, mode='search', commandprompthistory=['search microsoft', 'search beichen', 'search gereth', 'search beini', 'search bane', 'search thomas welsch', 'attach ./IES_R1_201345.pdf', 'taglist ', 'taglist ', 'attach ./intro.pdf', 'search henzinger', 'search frontiers', 'search nicoleta', 'set Cc csstudy@liverpool.ac.uk', 'search carmel', 'search increase', 'tag watch', 'search elias', 'search kehinde', 'search mattrace', 'search matrace', 'search bed', 'search mattrace', 'search mattrece', 'search mattrece', 'refine mattress', 'search bedfactorydirect', 'search comp122 fridays', 'refine comp122 friday', ...(truncated)) at ../Python/ceval.c:741
#195 function_code_fastcall (globals=<optimized out>, nargs=1, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#196 _PyFunction_Vectorcall (func=<optimized out>, stack=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:410
#197 0x0000000000505a6c in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7ffff4a8cac8, callable=<function at remote 0x7ffff6b8da60>) at ../Include/cpython/abstract.h:127
#198 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x9241a0) at ../Python/ceval.c:4963
#199 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3486
#200 0x000000000051ad20 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7ffff4a8c950, for file /usr/lib/python3/dist-packages/urwid/main_loop.py, line 287, in run (self=<MainLoop(_widget=<AttrMap(_original_widget=<Frame(_header=None, _body=<SearchBuffer(dbman=<DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>, ui=<UI(dbman=<...>, buffers=[<...>], current_buffer=<...>, db_was_locked=False, mode='search', commandprompthistory=['search microsoft', 'search beichen', 'search gereth', 'search beini', 'search bane', 'search thomas welsch', 'attach ./IES_R1_201345.pdf', 'taglist ', 'taglist ', 'attach ./intro.pdf', 'search henzinger', 'search frontiers', 'search nicoleta', 'set Cc csstudy@liverpool.ac.uk', 'search carmel', 'search increase', 'tag watch', 'search elias', 'search kehinde', 'search mattrace', 'search matrace', 'search bed', 'search mattrace', 'search mattrece', 'search mattrece', 'refine mattress', 'search bedfactorydirect', 'search comp122 fridays', 'refine comp122 friday', '...(truncated)) at ../Python/ceval.c:741
#201 function_code_fastcall (globals=<optimized out>, nargs=1, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#202 _PyFunction_Vectorcall (func=<optimized out>, stack=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:410
#203 0x0000000000505a6c in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7ffff4c449f8, callable=<function at remote 0x7ffff6b8d790>) at ../Include/cpython/abstract.h:127
#204 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x9241a0) at ../Python/ceval.c:4963
#205 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3486
#206 0x000000000050f990 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7ffff4c44840, for file /home/pazz/projects/alot/alot/ui.py, line 1938, in __init__ (self=<UI(dbman=<DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>, buffers=[<SearchBuffer(dbman=<...>, ui=<...>, querystring='tag:inbox AND NOT tag:killed AND NOT path:uoe/indirect/**', sort_order='newest_first', result_count=40, search_threads_rebuild_limit=0, isinitialized=True, threadlist=<IterableWalker(iterable=<generator at remote 0x7ffff4b775f0>, kwargs={'dbman': <...>}, containerclass=<WidgetMeta(__module__='alot.widgets.search', __doc__='\n    selectable line widget that represents a :class:`~alot.db.Thread`\n    in the :class:`~alot.buffers.SearchBuffer`.\n    ', __init__=<function at remote 0x7ffff543dee0>, rebuild=<function at remote 0x7ffff5441820>, render=<function at remote 0x7ffff5441af0>, selectable=<function at remote 0x7ffff5441940>, keypress=<function at remote 0x7ffff54419d0>, get_thread=<function at remote 0...(truncated)) at ../Python/ceval.c:741
#207 function_code_fastcall (globals=<optimized out>, nargs=<optimized out>, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#208 _PyFunction_Vectorcall (kwnames=0x0, nargsf=<optimized out>, stack=<optimized out>, func=<function at remote 0x7ffff53e84c0>) at ../Objects/call.c:410
#209 _PyObject_FastCallDict (callable=<function at remote 0x7ffff53e84c0>, args=<optimized out>, nargsf=<optimized out>, kwargs=<optimized out>) at ../Objects/call.c:96
#210 0x0000000000526a61 in _PyObject_Call_Prepend (kwargs=0x0, args=(<DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>, 'search tag:inbox AND NOT tag:killed AND NOT path:uoe/indirect/**'), obj=<UI(dbman=<DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>, buffers=[<SearchBuffer(dbman=<...>, ui=<...>, querystring='tag:inbox AND NOT tag:killed AND NOT path:uoe/indirect/**', sort_order='newest_first', result_count=40, search_threads_rebuild_limit=0, isinitialized=True, threadlist=<IterableWalker(iterable=<generator at remote 0x7ffff4b775f0>, kwargs={'dbman': <...>}, containerclass=<WidgetMeta(__module__='alot.widgets.search', __doc__='\n    selectable line widget that represents a :class:`~alot.db.Thread`\n    in the :class:`~alot.buffers.SearchBuffer`.\n    ', __init__=<function at remote 0x7ffff543dee0>, rebuild=<function at remote 0x7ffff5441820>, render=<function at remote 0x7ffff5441af0>, selectable=<function at remote 0x7ffff5441940>, keypress=<function at remote 0x7ffff54419d0>, get_thread=<function at remote 0x7ffff5441a60>, _ThreadlineWidget__super=<super at remote 0x7ffff5445f00>) at remote 0xd6b0a0>, l...(truncated), callable=<function at remote 0x7ffff53e84c0>) at ../Objects/call.c:887
#211 slot_tp_init (self=<UI(dbman=<DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>, buffers=[<SearchBuffer(dbman=<...>, ui=<...>, querystring='tag:inbox AND NOT tag:killed AND NOT path:uoe/indirect/**', sort_order='newest_first', result_count=40, search_threads_rebuild_limit=0, isinitialized=True, threadlist=<IterableWalker(iterable=<generator at remote 0x7ffff4b775f0>, kwargs={'dbman': <...>}, containerclass=<WidgetMeta(__module__='alot.widgets.search', __doc__='\n    selectable line widget that represents a :class:`~alot.db.Thread`\n    in the :class:`~alot.buffers.SearchBuffer`.\n    ', __init__=<function at remote 0x7ffff543dee0>, rebuild=<function at remote 0x7ffff5441820>, render=<function at remote 0x7ffff5441af0>, selectable=<function at remote 0x7ffff5441940>, keypress=<function at remote 0x7ffff54419d0>, get_thread=<function at remote 0x7ffff5441a60>, _ThreadlineWidget__super=<super at remote 0x7ffff5445f00>) at remote 0xd6b0a0>, l...(truncated), args=(<DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>, 'search tag:inbox AND NOT tag:killed AND NOT path:uoe/indirect/**'), kwds=0x0) at ../Objects/typeobject.c:6787
#212 0x00000000005103d3 in type_call (kwds=0x0, args=(<DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>, 'search tag:inbox AND NOT tag:killed AND NOT path:uoe/indirect/**'), type=<optimized out>) at ../Objects/typeobject.c:994
#213 _PyObject_MakeTpCall (callable=<type at remote 0xd94420>, args=<optimized out>, nargs=<optimized out>, keywords=<optimized out>) at ../Objects/call.c:159
#214 0x000000000050a77d in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0xe32a28, callable=<type at remote 0xd94420>) at ../Include/cpython/abstract.h:125
#215 _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0xe32a28, callable=<type at remote 0xd94420>) at ../Include/cpython/abstract.h:115
#216 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x9241a0) at ../Python/ceval.c:4963
#217 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3500
#218 0x000000000051ad20 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0xe32840, for file /home/pazz/projects/alot/alot/__main__.py, line 649, in main (options=<Namespace(read_only=False, config=None, notmuch_config='/home/pazz/.notmuch-config', colour_mode=None, mailindex_path=None, debug_level='info', logfile='/dev/null', command=[]) at remote 0x7ffff4b6fd30>, command=None, root_logger=None, numeric_loglevel=20, logformat='%(levelname)s:%(module)s:%(message)s', cpath='/home/pazz/.config/alot/config', xdg_dir='/home/pazz/.config/', alotconfig='/home/pazz/.config/alot/config', indexpath='/home/pazz/mail', dbman=<DBManager(ro=False, path='/home/pazz/mail', writequeue=<collections.deque at remote 0x7ffff4b72940>, processes=[]) at remote 0x7ffff4afd190>, cmdstring='search tag:inbox AND NOT tag:killed AND NOT path:uoe/indirect/**')) at ../Python/ceval.c:741
#219 function_code_fastcall (globals=<optimized out>, nargs=0, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#220 _PyFunction_Vectorcall (func=<optimized out>, stack=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:410
#221 0x00000000005058a6 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7ffff782b980, callable=<function at remote 0x7ffff4b76550>) at ../Include/cpython/abstract.h:127
#222 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x9241a0) at ../Python/ceval.c:4963
#223 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3500
#224 0x0000000000503df5 in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7ffff782b800, for file /home/pazz/.local/bin/alot, line 33, in <module> ()) at ../Python/ceval.c:741
#225 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=0x0, kwargs=0x0, kwcount=<optimized out>, kwstep=2, defs=0x0, defcount=0, kwdefs=0x0, closure=0x0, name=0x0, qualname=0x0) at ../Python/ceval.c:4298
#226 0x00000000005cd673 in PyEval_EvalCodeEx (closure=0x0, kwdefs=0x0, defcount=0, defs=0x0, kwcount=0, kws=0x0, argcount=0, args=0x0, locals=<optimized out>, globals=<optimized out>, _co=<optimized out>) at ../Python/ceval.c:4327
#227 PyEval_EvalCode (co=<optimized out>, globals=<optimized out>, locals=<optimized out>) at ../Python/ceval.c:718
#228 0x00000000005eb6a1 in run_eval_code_obj (co=0x7ffff770dea0, globals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='/home/pazz/.local/bin/alot') at remote 0x7ffff788c820>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff78b70e0>, '__file__': '/home/pazz/.local/bin/alot', '__cached__': None, 're': <module at remote 0x7ffff7718180>, 'sys': <module at remote 0x7ffff78abe00>, '__requires__': 'alot', 'distribution': <function at remote 0x7ffff76d3820>, 'importlib_load_entry_point': <function at remote 0x7ffff787e1f0>, 'load_entry_point': <function at remote 0x7ffff787e1f0>}, locals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='/home/pazz/.local/bin/alot') at remote 0x7ffff788c820>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff78b70e0>, '__file__': '/home/pazz/.local/bin/alot', '__cached__': None, 're': <module at remote 0x7ffff7718180>, 'sys': <module at remote 0x7ffff78abe00>, '__requires__': 'alot', 'distribution': <function at remote 0x7ffff76d3820>, 'importlib_load_entry_point': <function at remote 0x7ffff787e1f0>, 'load_entry_point': <function at remote 0x7ffff787e1f0>}) at ../Python/pythonrun.c:1125
#229 0x00000000005e6bdf in run_mod (mod=<optimized out>, filename=<optimized out>, globals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='/home/pazz/.local/bin/alot') at remote 0x7ffff788c820>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff78b70e0>, '__file__': '/home/pazz/.local/bin/alot', '__cached__': None, 're': <module at remote 0x7ffff7718180>, 'sys': <module at remote 0x7ffff78abe00>, '__requires__': 'alot', 'distribution': <function at remote 0x7ffff76d3820>, 'importlib_load_entry_point': <function at remote 0x7ffff787e1f0>, 'load_entry_point': <function at remote 0x7ffff787e1f0>}, locals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='/home/pazz/.local/bin/alot') at remote 0x7ffff788c820>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff78b70e0>, '__file__': '/home/pazz/.local/bin/alot', '__cached__': None, 're': <module at remote 0x7ffff7718180>, 'sys': <module at remote 0x7ffff78abe00>, '__requires__': 'alot', 'distribution': <function at remote 0x7ffff76d3820>, 'importlib_load_entry_point': <function at remote 0x7ffff787e1f0>, 'load_entry_point': <function at remote 0x7ffff787e1f0>}, flags=<optimized out>, arena=<optimized out>) at ../Python/pythonrun.c:1147
#230 0x00000000005ef537 in PyRun_FileExFlags (fp=0x922e40, filename_str=<optimized out>, start=<optimized out>, globals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='/home/pazz/.local/bin/alot') at remote 0x7ffff788c820>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff78b70e0>, '__file__': '/home/pazz/.local/bin/alot', '__cached__': None, 're': <module at remote 0x7ffff7718180>, 'sys': <module at remote 0x7ffff78abe00>, '__requires__': 'alot', 'distribution': <function at remote 0x7ffff76d3820>, 'importlib_load_entry_point': <function at remote 0x7ffff787e1f0>, 'load_entry_point': <function at remote 0x7ffff787e1f0>}, locals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='/home/pazz/.local/bin/alot') at remote 0x7ffff788c820>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff78b70e0>, '__file__': '/home/pazz/.local/bin/alot', '__cached__': None, 're': <module at remote 0x7ffff7718180>, 'sys': <module at remote 0x7ffff78abe00>, '__requires__': 'alot', 'distribution': <function at remote 0x7ffff76d3820>, 'importlib_load_entry_point': <function at remote 0x7ffff787e1f0>, 'load_entry_point': <function at remote 0x7ffff787e1f0>}, closeit=1, flags=0x7fffffffdec8) at ../Python/pythonrun.c:1063
#231 0x00000000005ef000 in PyRun_SimpleFileExFlags (fp=0x922e40, filename=0x7ffff773df50 "/home/pazz/.local/bin/alot", closeit=1, flags=0x7fffffffdec8) at ../Python/pythonrun.c:428
#232 0x00000000005e40c5 in pymain_run_file (cf=0x7fffffffdec8, config=0x923590) at ../Modules/main.c:381
#233 pymain_run_python (exitcode=0x7fffffffdec0) at ../Modules/main.c:606
#234 Py_RunMain () at ../Modules/main.c:685
#235 0x00000000005c29c9 in Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at ../Modules/main.c:739
#236 0x00007ffff7c37cca in __libc_start_main (main=0x5c2990 <main>, argc=2, argv=0x7fffffffe0b8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe0a8) at ../csu/libc-start.c:308
#237 0x00000000005c28ca in _start ()

[-- Attachment #3: info-signals --]
[-- Type: text/plain, Size: 7063 bytes --]

Signal        Stop	Print	Pass to program	Description

SIGHUP        Yes	Yes	Yes		Hangup
SIGINT        Yes	Yes	No		Interrupt
SIGQUIT       Yes	Yes	Yes		Quit
SIGILL        Yes	Yes	Yes		Illegal instruction
SIGTRAP       Yes	Yes	No		Trace/breakpoint trap
SIGABRT       Yes	Yes	Yes		Aborted
SIGEMT        Yes	Yes	Yes		Emulation trap
SIGFPE        Yes	Yes	Yes		Arithmetic exception
SIGKILL       Yes	Yes	Yes		Killed
SIGBUS        Yes	Yes	Yes		Bus error
SIGSEGV       Yes	Yes	Yes		Segmentation fault
SIGSYS        Yes	Yes	Yes		Bad system call
SIGPIPE       Yes	Yes	Yes		Broken pipe
SIGALRM       No	No	Yes		Alarm clock
SIGTERM       Yes	Yes	Yes		Terminated
SIGURG        No	No	Yes		Urgent I/O condition
SIGSTOP       Yes	Yes	Yes		Stopped (signal)
SIGTSTP       Yes	Yes	Yes		Stopped (user)
SIGCONT       Yes	Yes	Yes		Continued
SIGCHLD       No	No	Yes		Child status changed
SIGTTIN       Yes	Yes	Yes		Stopped (tty input)
SIGTTOU       Yes	Yes	Yes		Stopped (tty output)
SIGIO         No	No	Yes		I/O possible
SIGXCPU       Yes	Yes	Yes		CPU time limit exceeded
SIGXFSZ       Yes	Yes	Yes		File size limit exceeded
SIGVTALRM     No	No	Yes		Virtual timer expired
SIGPROF       No	No	Yes		Profiling timer expired
SIGWINCH      No	No	Yes		Window size changed
SIGLOST       Yes	Yes	Yes		Resource lost
SIGUSR1       Yes	Yes	Yes		User defined signal 1
SIGUSR2       Yes	Yes	Yes		User defined signal 2
SIGPWR        Yes	Yes	Yes		Power fail/restart
SIGPOLL       No	No	Yes		Pollable event occurred
SIGWIND       Yes	Yes	Yes		SIGWIND
SIGPHONE      Yes	Yes	Yes		SIGPHONE
SIGWAITING    No	No	Yes		Process's LWPs are blocked
SIGLWP        No	No	Yes		Signal LWP
SIGDANGER     Yes	Yes	Yes		Swap space dangerously low
SIGGRANT      Yes	Yes	Yes		Monitor mode granted
SIGRETRACT    Yes	Yes	Yes		Need to relinquish monitor mode
SIGMSG        Yes	Yes	Yes		Monitor mode data available
SIGSOUND      Yes	Yes	Yes		Sound completed
SIGSAK        Yes	Yes	Yes		Secure attention
SIGPRIO       No	No	Yes		SIGPRIO
SIG33         Yes	Yes	Yes		Real-time event 33
SIG34         Yes	Yes	Yes		Real-time event 34
SIG35         Yes	Yes	Yes		Real-time event 35
SIG36         Yes	Yes	Yes		Real-time event 36
SIG37         Yes	Yes	Yes		Real-time event 37
SIG38         Yes	Yes	Yes		Real-time event 38
SIG39         Yes	Yes	Yes		Real-time event 39
SIG40         Yes	Yes	Yes		Real-time event 40
SIG41         Yes	Yes	Yes		Real-time event 41
SIG42         Yes	Yes	Yes		Real-time event 42
SIG43         Yes	Yes	Yes		Real-time event 43
SIG44         Yes	Yes	Yes		Real-time event 44
SIG45         Yes	Yes	Yes		Real-time event 45
SIG46         Yes	Yes	Yes		Real-time event 46
SIG47         Yes	Yes	Yes		Real-time event 47
SIG48         Yes	Yes	Yes		Real-time event 48
SIG49         Yes	Yes	Yes		Real-time event 49
SIG50         Yes	Yes	Yes		Real-time event 50
SIG51         Yes	Yes	Yes		Real-time event 51
SIG52         Yes	Yes	Yes		Real-time event 52
SIG53         Yes	Yes	Yes		Real-time event 53
SIG54         Yes	Yes	Yes		Real-time event 54
SIG55         Yes	Yes	Yes		Real-time event 55
SIG56         Yes	Yes	Yes		Real-time event 56
SIG57         Yes	Yes	Yes		Real-time event 57
SIG58         Yes	Yes	Yes		Real-time event 58
SIG59         Yes	Yes	Yes		Real-time event 59
SIG60         Yes	Yes	Yes		Real-time event 60
SIG61         Yes	Yes	Yes		Real-time event 61
SIG62         Yes	Yes	Yes		Real-time event 62
SIG63         Yes	Yes	Yes		Real-time event 63
SIGCANCEL     No	No	Yes		LWP internal signal
SIG32         Yes	Yes	Yes		Real-time event 32
SIG64         Yes	Yes	Yes		Real-time event 64
SIG65         Yes	Yes	Yes		Real-time event 65
SIG66         Yes	Yes	Yes		Real-time event 66
SIG67         Yes	Yes	Yes		Real-time event 67
SIG68         Yes	Yes	Yes		Real-time event 68
SIG69         Yes	Yes	Yes		Real-time event 69
SIG70         Yes	Yes	Yes		Real-time event 70
SIG71         Yes	Yes	Yes		Real-time event 71
SIG72         Yes	Yes	Yes		Real-time event 72
SIG73         Yes	Yes	Yes		Real-time event 73
SIG74         Yes	Yes	Yes		Real-time event 74
SIG75         Yes	Yes	Yes		Real-time event 75
SIG76         Yes	Yes	Yes		Real-time event 76
SIG77         Yes	Yes	Yes		Real-time event 77
SIG78         Yes	Yes	Yes		Real-time event 78
SIG79         Yes	Yes	Yes		Real-time event 79
SIG80         Yes	Yes	Yes		Real-time event 80
SIG81         Yes	Yes	Yes		Real-time event 81
SIG82         Yes	Yes	Yes		Real-time event 82
SIG83         Yes	Yes	Yes		Real-time event 83
SIG84         Yes	Yes	Yes		Real-time event 84
SIG85         Yes	Yes	Yes		Real-time event 85
SIG86         Yes	Yes	Yes		Real-time event 86
SIG87         Yes	Yes	Yes		Real-time event 87
SIG88         Yes	Yes	Yes		Real-time event 88
SIG89         Yes	Yes	Yes		Real-time event 89
SIG90         Yes	Yes	Yes		Real-time event 90
SIG91         Yes	Yes	Yes		Real-time event 91
SIG92         Yes	Yes	Yes		Real-time event 92
SIG93         Yes	Yes	Yes		Real-time event 93
SIG94         Yes	Yes	Yes		Real-time event 94
SIG95         Yes	Yes	Yes		Real-time event 95
SIG96         Yes	Yes	Yes		Real-time event 96
SIG97         Yes	Yes	Yes		Real-time event 97
SIG98         Yes	Yes	Yes		Real-time event 98
SIG99         Yes	Yes	Yes		Real-time event 99
SIG100        Yes	Yes	Yes		Real-time event 100
SIG101        Yes	Yes	Yes		Real-time event 101
SIG102        Yes	Yes	Yes		Real-time event 102
SIG103        Yes	Yes	Yes		Real-time event 103
SIG104        Yes	Yes	Yes		Real-time event 104
SIG105        Yes	Yes	Yes		Real-time event 105
SIG106        Yes	Yes	Yes		Real-time event 106
SIG107        Yes	Yes	Yes		Real-time event 107
SIG108        Yes	Yes	Yes		Real-time event 108
SIG109        Yes	Yes	Yes		Real-time event 109
SIG110        Yes	Yes	Yes		Real-time event 110
SIG111        Yes	Yes	Yes		Real-time event 111
SIG112        Yes	Yes	Yes		Real-time event 112
SIG113        Yes	Yes	Yes		Real-time event 113
SIG114        Yes	Yes	Yes		Real-time event 114
SIG115        Yes	Yes	Yes		Real-time event 115
SIG116        Yes	Yes	Yes		Real-time event 116
SIG117        Yes	Yes	Yes		Real-time event 117
SIG118        Yes	Yes	Yes		Real-time event 118
SIG119        Yes	Yes	Yes		Real-time event 119
SIG120        Yes	Yes	Yes		Real-time event 120
SIG121        Yes	Yes	Yes		Real-time event 121
SIG122        Yes	Yes	Yes		Real-time event 122
SIG123        Yes	Yes	Yes		Real-time event 123
SIG124        Yes	Yes	Yes		Real-time event 124
SIG125        Yes	Yes	Yes		Real-time event 125
SIG126        Yes	Yes	Yes		Real-time event 126
SIG127        Yes	Yes	Yes		Real-time event 127
SIGINFO       Yes	Yes	Yes		Information request
EXC_BAD_ACCESS Yes	Yes	Yes		Could not access memory
EXC_BAD_INSTRUCTION Yes	Yes	Yes		Illegal instruction/operand
EXC_ARITHMETIC Yes	Yes	Yes		Arithmetic exception
EXC_EMULATION Yes	Yes	Yes		Emulation instruction
EXC_SOFTWARE  Yes	Yes	Yes		Software generated exception
EXC_BREAKPOINT Yes	Yes	Yes		Breakpoint
SIGLIBRT      No	No	Yes		librt internal signal

Use the "handle" command to change these tables.

[-- Attachment #4: py-bt --]
[-- Type: text/plain, Size: 4014 bytes --]

Traceback (most recent call first):
  <built-in method notmuch_thread_destroy of CompiledLib object at remote 0x7ffff636f040>
  File "/home/pazz/.local/lib/python3.8/site-packages/notmuch2/_thread.py", line 38, in _destroy
    capi.lib.notmuch_thread_destroy(self._thread_p)
  File "/home/pazz/.local/lib/python3.8/site-packages/notmuch2/_thread.py", line 34, in __del__
    self._destroy()
  File "/home/pazz/projects/alot/alot/db/manager.py", line 570, in get_threads
  <built-in method next of module object at remote 0x7ffff78b70e0>
  File "/home/pazz/projects/alot/alot/walker.py", line 84, in _get_next_item
    next_obj = next(self.iterable)
  File "/home/pazz/projects/alot/alot/walker.py", line 72, in _get_at_pos
    widget = self._get_next_item()
  File "/home/pazz/projects/alot/alot/walker.py", line 46, in get_next
    return self._get_at_pos(start_from + self.direction)
  File "/usr/lib/python3/dist-packages/urwid/listbox.py", line 641, in calculate_visible
    
  File "/usr/lib/python3/dist-packages/urwid/listbox.py", line 695, in render
    new_focus_widget, position = self._body.get_focus()
  File "/usr/lib/python3/dist-packages/urwid/widget.py", line 145, in cached_render
    canv = fn(self, size, focus=focus)
  File "/home/pazz/projects/alot/alot/buffers/buffer.py", line 19, in render
    return self.body.render(size, focus)
  File "/usr/lib/python3/dist-packages/urwid/container.py", line 2369, in render
  File "/usr/lib/python3/dist-packages/urwid/widget.py", line 145, in cached_render
    canv = fn(self, size, focus=focus)
  File "/usr/lib/python3/dist-packages/urwid/decoration.py", line 226, in render
    canv = self._original_widget.render(size, focus=focus)
  File "/usr/lib/python3/dist-packages/urwid/widget.py", line 145, in cached_render
    canv = fn(self, size, focus=focus)
  File "/usr/lib/python3/dist-packages/urwid/main_loop.py", line 588, in draw_screen
    canvas = self._topmost_widget.render(self.screen_size, focus=True)
  File "/home/pazz/projects/alot/alot/ui.py", line 668, in update
    self.mainloop.draw_screen()
  File "/home/pazz/projects/alot/alot/commands/search.py", line 461, in refresh
  File "/home/pazz/projects/alot/alot/db/manager.py", line 147, in flush
    afterwards()
  File "/home/pazz/projects/alot/alot/commands/globals.py", line 611, in apply
    ui.dbman.flush()
  File "/home/pazz/projects/alot/alot/ui.py", line 723, in apply_command
    cmd.apply(self)
  File "/home/pazz/projects/alot/alot/commands/search.py", line 737, in apply
  File "/home/pazz/projects/alot/alot/ui.py", line 721, in apply_command
    await cmd.apply(self)
  File "/home/pazz/projects/alot/alot/ui.py", line 277, in apply_commandline
    await apply_this_command(c)
  File "/home/pazz/projects/alot/alot/ui.py", line 195, in _apply_fire
    await self.apply_commandline(cmdline)
  <built-in method run of Context object at remote 0x7ffff4a88c40>
  File "/usr/lib/python3.8/asyncio/events.py", line 81, in _run
    self._context.run(self._callback, *self._args)
  File "/usr/lib/python3.8/asyncio/base_events.py", line 2627, in _run_once
  File "/usr/lib/python3.8/asyncio/base_events.py", line 826, in run_forever
    None, getaddr_func, host, port, family, type, proto, flags)
  File "/home/pazz/.local/lib/python3.8/site-packages/twisted/internet/asyncioreactor.py", line 267, in run
    self._asyncioEventloop.run_forever()
  File "/usr/lib/python3/dist-packages/urwid/main_loop.py", line 1341, in run
    self.reactor.run()
  File "/usr/lib/python3/dist-packages/urwid/main_loop.py", line 385, in _run
    self.event_loop.run()
  File "/usr/lib/python3/dist-packages/urwid/main_loop.py", line 287, in run
    self._run()
  File "/home/pazz/projects/alot/alot/ui.py", line 1938, in __init__
  File "/home/pazz/projects/alot/alot/__main__.py", line 649, in main
  File "/home/pazz/.local/bin/alot", line 33, in <module>
    sys.exit(load_entry_point('alot', 'console_scripts', 'alot')())

[-- Attachment #5: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: notmuch2 (python cffi bindings) segfault gdb logs
  2020-11-23 10:36 notmuch2 (python cffi bindings) segfault gdb logs Patrick Totzke
@ 2020-11-24 21:31 ` Floris Bruynooghe
  2020-11-25 10:35   ` Patrick Totzke
  0 siblings, 1 reply; 3+ messages in thread
From: Floris Bruynooghe @ 2020-11-24 21:31 UTC (permalink / raw)
  To: Patrick Totzke, notmuch

Hi Patrick,

On Mon 23 Nov 2020 at 10:36 +0000, Patrick Totzke wrote:
> I've been complaining about the new (and old) python bindings causing the python interpreter to segfault occasionally. So far I was not able to reproduce this reliably nor provide error traces. This has just changed:
> see below and attached for what I got from gdb.

Your gdb info doesn't say explicitly (or I missed it), but this is
showing a SEGFAULT I guess?

> I hope that whoever is in charge of the bindings can make sense of
> it. I don't have any experience so far with cffi nor gdb and have a
> hard time debugging this. The logs below are my attempt to collect as
> much detail as possible about. Please let me know if I missed
> something.

From what I can tell we're calling a function to free something which
segfaults, so it probably was freed already and we didn't know.  We need
to find out who freed it before and why we thought it still needed to be
freed.

> (gdb) info threads
>   Id   Target Id                                     Frame 
> * 1    Thread 0x7ffff7c0e740 (LWP 3614451) "python3" __GI_raise (sig=sig@entry=6)
>     at ../sysdeps/unix/sysv/linux/raise.c:50

From this I gather we only have one thread, could you confirm this?
notmuch2 just isn't thread safe at the moment (I forget whether this was
intentional or by accident, might have been intentional depending on how
threadsafe libnotmuch is).

> Traceback (most recent call first):
>   <built-in method notmuch_thread_destroy of CompiledLib object at remote 0x7ffff636f040>
>   File "/home/pazz/.local/lib/python3.8/site-packages/notmuch2/_thread.py", line 38, in _destroy
>     capi.lib.notmuch_thread_destroy(self._thread_p)
>   File "/home/pazz/.local/lib/python3.8/site-packages/notmuch2/_thread.py", line 34, in __del__
>     self._destroy()
>   File "/home/pazz/projects/alot/alot/db/manager.py", line 570, in get_threads
>   <built-in method next of module object at remote 0x7ffff78b70e0>

I pulled alot master and this does not match at all.  Could you tell me
which git ref this was using so I can try and see what alot is actually
doing?  (or some other way of sharing the source in this backtrace)



Cheers,
Floris

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: notmuch2 (python cffi bindings) segfault gdb logs
  2020-11-24 21:31 ` Floris Bruynooghe
@ 2020-11-25 10:35   ` Patrick Totzke
  0 siblings, 0 replies; 3+ messages in thread
From: Patrick Totzke @ 2020-11-25 10:35 UTC (permalink / raw)
  To: Floris Bruynooghe, notmuch

Hello Floris, thanks for having a look at this!


Quoting Floris Bruynooghe (2020-11-24 21:31:00)

> Hi Patrick,
> 
> On Mon 23 Nov 2020 at 10:36 +0000, Patrick Totzke wrote:
> > I've been complaining about the new (and old) python bindings causing the python interpreter to segfault occasionally. So far I was not able to reproduce this reliably nor provide error traces. This has just changed:
> > see below and attached for what I got from gdb.
> 
> Your gdb info doesn't say explicitly (or I missed it), but this is
> showing a SEGFAULT I guess?

Yes, correct. I saw this triggered when untagging some messages from my inbox in alot.
I forgot to mention version numbers: 

    notmuch: 0.31+7~g981d5a0
    Python: 3.8.6
    alot: 0.9.1

notmuch and bindings are compiled from git master, on a debian testing system.


> > I hope that whoever is in charge of the bindings can make sense of
> > it. I don't have any experience so far with cffi nor gdb and have a
> > hard time debugging this. The logs below are my attempt to collect as
> > much detail as possible about. Please let me know if I missed
> > something.
> 
> From what I can tell we're calling a function to free something which
> segfaults, so it probably was freed already and we didn't know.  We need
> to find out who freed it before and why we thought it still needed to be
> freed.
 

It may help to know that this only ever happened if i tagged messages while the alot screen did not display the whole query result.
I presume that this means there was some left over reference to an existing query object, which could have been affected by libtalloc.

Alot is reading thread id's from notmuch2.Database.threads() in a generator:
https://github.com/pazz/alot/blob/master/alot/db/manager.py#L314
Could this be problematic? After all, it may continue reading from it after a while.


> > (gdb) info threads
> >   Id   Target Id                                     Frame 
> > * 1    Thread 0x7ffff7c0e740 (LWP 3614451) "python3" __GI_raise (sig=sig@entry=6)
> >     at ../sysdeps/unix/sysv/linux/raise.c:50
> 
> From this I gather we only have one thread, could you confirm this?
> notmuch2 just isn't thread safe at the moment (I forget whether this was
> intentional or by accident, might have been intentional depending on how
> threadsafe libnotmuch is).


Yes, I'm quite -- but not 100% --- sure as I did not write the port to notmuch2 for alot's backend.


> > Traceback (most recent call first):
> >   <built-in method notmuch_thread_destroy of CompiledLib object at remote 0x7ffff636f040>
> >   File "/home/pazz/.local/lib/python3.8/site-packages/notmuch2/_thread.py", line 38, in _destroy
> >     capi.lib.notmuch_thread_destroy(self._thread_p)
> >   File "/home/pazz/.local/lib/python3.8/site-packages/notmuch2/_thread.py", line 34, in __del__
> >     self._destroy()
> >   File "/home/pazz/projects/alot/alot/db/manager.py", line 570, in get_threads
> >   <built-in method next of module object at remote 0x7ffff78b70e0>
> 
> I pulled alot master and this does not match at all.  Could you tell me
> which git ref this was using so I can try and see what alot is actually
> doing?  (or some other way of sharing the source in this backtrace)


This happed on alot master: 7915ea60ba866010abc728851626df96d8b80816 for me.
I should say that I've had this issue long before, even before alot used the new bindings.

Another stab in the dark: Could this be due to concurrent changes to the notmuch index in my mail sync/tagging script?
I am using afew https://github.com/afewmail/afew which is still on the old python bindings as far as I am aware.

Thanks again for your efforts Floris!
P

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-11-25 10:35 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-11-23 10:36 notmuch2 (python cffi bindings) segfault gdb logs Patrick Totzke
2020-11-24 21:31 ` Floris Bruynooghe
2020-11-25 10:35   ` Patrick Totzke

Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).