pazz / alot

Terminal-based Mail User Agent
GNU General Public License v3.0
695 stars 164 forks source link

The program aborts upon hitting page_down, after toggling tags on an item several times #1504

Open lenormf opened 4 years ago

lenormf commented 4 years ago

I originally thought this issue I'm hitting was #1460, but since the following reproducer is so different from the one in #1460, which I cannot reproduce, I'm reporting details here.

Describe the bug

alot crashes with signal ABORT.

Software Versions

Archlinux.

To Reproduce Steps to reproduce the behaviour:

  1. open a search buffer, search tag:inbox
  2. hold the s key for ~10s, to mark the same item as read/unread in rapid successions
  3. hit the page-down key

The crash doesn't occur with j or page-up.

But it does occur if you hit ctrl+d twice.

Error Log

alot.log

Full stacktrace, excerpt below:

#0  0x00007ffff7dfcce5 in raise () at /usr/lib/libc.so.6
#1  0x00007ffff7de6857 in abort () at /usr/lib/libc.so.6
#2  0x00007ffff538da20 in talloc_abort () at /usr/lib/libtalloc.so.2
#3  0x00007ffff538da56 in talloc_abort_unknown_value () at /usr/lib/libtalloc.so.2
#4  0x00007ffff538dad4 in talloc_chunk_from_ptr () at /usr/lib/libtalloc.so.2
#5  0x00007ffff538feeb in _talloc_free () at /usr/lib/libtalloc.so.2
#6  0x00007ffff549f5ab in notmuch_thread_destroy () at /usr/lib/libnotmuch.so.5
#7  0x00007ffff61c6c6d in ffi_call_unix64 () at /usr/lib/libffi.so.7
#8  0x00007ffff61c65a7 in ffi_call_int () at /usr/lib/libffi.so.7
#9  0x00007ffff61c6624 in ffi_call () at /usr/lib/libffi.so.7
#10 0x00007ffff621d084 in  () at /usr/lib/python3.8/lib-dynload/_ctypes.cpython-38-x86_64-linux-gnu.so

[…]

#82 0x00007ffff7c7881e in Py_RunMain () at /usr/lib/libpython3.8.so.1.0
#83 0x00007ffff7c78909 in Py_BytesMain () at /usr/lib/libpython3.8.so.1.0
#84 0x00007ffff7de8023 in __libc_start_main () at /usr/lib/libc.so.6
#85 0x000055555555505e in _start ()
lenormf commented 4 years ago

I just reproduced the issue by only hitting s, so I suppose this could be a dupe of #1460 after all. At least we have a fast reproducer here!

pazz commented 4 years ago

Thanks for this. I can reproduce it as initially reported, but not just with the s key. If you'd take the helm on this one that'd be much appreciated. I don't really have the time to dig deeper into libnotmuch or its bindings. I wasn't even aware that there is a second verison of these bindings. Is it "official", i.e., part of nochmuch yet?

lenormf commented 4 years ago

I'll try to look into it, but no promises.

I was actually hoping you could answer those questions, which I asked in #1460 since you commented on the RFC for the FFI bindings.

The bindings were renamed into notmuch2 and are part of the upstream repository - just completely undocumented as far as I could see. There's even a request pending to have a Debian python3-notmuch2 package, to:

encourage new downstream development to rely on notmuch2 instead of on notmuch

lenormf commented 4 years ago

Got the following output for the first time while using the same reproducer above:

terminate called after throwing an instance of 'Xapian::DatabaseModifiedError'
lenormf commented 4 years ago

Also got a stacktrace in the debug log, this time!

DEBUG:search:page down
ERROR:ui:Traceback (most recent call last):
  File "/home/fle/misc/alot/alot/ui.py", line 723, in apply_command
    cmd.apply(self)
  File "/home/fle/misc/alot/alot/commands/search.py", line 252, in apply
    MoveCommand.apply(self, ui)
  File "/home/fle/misc/alot/alot/commands/globals.py", line 1062, in apply
    ui.mainloop.process_input([self.movement])
  File "/usr/lib/python3.8/site-packages/urwid/main_loop.py", line 513, in process_input
    k = self._topmost_widget.keypress(self.screen_size, k)
  File "/usr/lib/python3.8/site-packages/urwid/container.py", line 1131, in keypress
    return self.body.keypress( (maxcol, remaining), key )
  File "/home/fle/misc/alot/alot/buffers/buffer.py", line 29, in keypress
    return self.body.keypress(size, key)
  File "/usr/lib/python3.8/site-packages/urwid/listbox.py", line 975, in keypress
    return actual_key(self._keypress_page_down((maxcol, maxrow)))
  File "/usr/lib/python3.8/site-packages/urwid/listbox.py", line 1391, in _keypress_page_down
    widget, pos = self._body.get_next(pos)
  File "/home/fle/misc/alot/alot/walker.py", line 46, in get_next
    return self._get_at_pos(start_from + self.direction)
  File "/home/fle/misc/alot/alot/walker.py", line 72, in _get_at_pos
    widget = self._get_next_item()
  File "/home/fle/misc/alot/alot/walker.py", line 85, in _get_next_item
    next_widget = self.containerclass(next_obj, **self.kwargs)
  File "/home/fle/misc/alot/alot/widgets/search.py", line 27, in __init__
    self.rebuild()
  File "/home/fle/misc/alot/alot/widgets/search.py", line 33, in rebuild
    self.thread = self.dbman.get_thread(self.tid)
  File "/home/fle/misc/alot/alot/db/manager.py", line 213, in get_thread
    db = Database(path=self.path, mode=Database.MODE.READ_ONLY)
  File "/usr/lib/python3.8/site-packages/notmuch2/_database.py", line 129, in __init__
    raise errors.NotmuchError(ret, msg)
notmuch2.XapianError: A Xapian exception occurred opening database: Couldn't open /home/fle/mail//.notmuch/xapian/postlist.glass to read

ERROR:ui:Traceback (most recent call last):
  File "/home/fle/misc/alot/alot/ui.py", line 723, in apply_command
    cmd.apply(self)
  File "/home/fle/misc/alot/alot/commands/search.py", line 252, in apply
    MoveCommand.apply(self, ui)
  File "/home/fle/misc/alot/alot/commands/globals.py", line 1062, in apply
    ui.mainloop.process_input([self.movement])
  File "/usr/lib/python3.8/site-packages/urwid/main_loop.py", line 513, in process_input
    k = self._topmost_widget.keypress(self.screen_size, k)
  File "/usr/lib/python3.8/site-packages/urwid/container.py", line 1131, in keypress
    return self.body.keypress( (maxcol, remaining), key )
  File "/home/fle/misc/alot/alot/buffers/buffer.py", line 29, in keypress
    return self.body.keypress(size, key)
  File "/usr/lib/python3.8/site-packages/urwid/listbox.py", line 975, in keypress
    return actual_key(self._keypress_page_down((maxcol, maxrow)))
  File "/usr/lib/python3.8/site-packages/urwid/listbox.py", line 1391, in _keypress_page_down
    widget, pos = self._body.get_next(pos)
  File "/home/fle/misc/alot/alot/walker.py", line 46, in get_next
    return self._get_at_pos(start_from + self.direction)
  File "/home/fle/misc/alot/alot/walker.py", line 72, in _get_at_pos
    widget = self._get_next_item()
  File "/home/fle/misc/alot/alot/walker.py", line 85, in _get_next_item
    next_widget = self.containerclass(next_obj, **self.kwargs)
  File "/home/fle/misc/alot/alot/widgets/search.py", line 27, in __init__
    self.rebuild()
  File "/home/fle/misc/alot/alot/widgets/search.py", line 33, in rebuild
    self.thread = self.dbman.get_thread(self.tid)
  File "/home/fle/misc/alot/alot/db/manager.py", line 213, in get_thread
    db = Database(path=self.path, mode=Database.MODE.READ_ONLY)
  File "/usr/lib/python3.8/site-packages/notmuch2/_database.py", line 129, in __init__
    raise errors.NotmuchError(ret, msg)
notmuch2.XapianError: A Xapian exception occurred opening database: Couldn't open /home/fle/mail//.notmuch/xapian/postlist.glass to read

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/fle/misc/alot/alot/ui.py", line 277, in apply_commandline
    await apply_this_command(c)
  File "/home/fle/misc/alot/alot/ui.py", line 725, in apply_command
    self._error_handler(e)
  File "/home/fle/misc/alot/alot/ui.py", line 160, in _error_handler
    self.notify(msg, priority='error')
  File "/home/fle/misc/alot/alot/ui.py", line 624, in notify
    self.update()
  File "/home/fle/misc/alot/alot/ui.py", line 660, in update
    lines.append(self.build_statusbar())
  File "/home/fle/misc/alot/alot/ui.py", line 681, in build_statusbar
    info['total_messages'] = self.dbman.count_messages('*')
  File "/home/fle/misc/alot/alot/db/manager.py", line 201, in count_messages
    db = Database(path=self.path, mode=Database.MODE.READ_ONLY)
  File "/usr/lib/python3.8/site-packages/notmuch2/_database.py", line 129, in __init__
    raise errors.NotmuchError(ret, msg)
notmuch2.XapianError: A Xapian exception occurred opening database: Couldn't open /home/fle/mail//.notmuch/xapian/postlist.glass to read

ERROR:base_events:Task exception was never retrieved
future: <Task finished name='Task-6' coro=<UI._input_filter.<locals>._apply_fire() done, defined at /home/fle/misc/alot/alot/ui.py:193> exception=XapianError()>
Traceback (most recent call last):
  File "/home/fle/misc/alot/alot/ui.py", line 723, in apply_command
    cmd.apply(self)
  File "/home/fle/misc/alot/alot/commands/search.py", line 252, in apply
    MoveCommand.apply(self, ui)
  File "/home/fle/misc/alot/alot/commands/globals.py", line 1062, in apply
    ui.mainloop.process_input([self.movement])
  File "/usr/lib/python3.8/site-packages/urwid/main_loop.py", line 513, in process_input
    k = self._topmost_widget.keypress(self.screen_size, k)
  File "/usr/lib/python3.8/site-packages/urwid/container.py", line 1131, in keypress
    return self.body.keypress( (maxcol, remaining), key )
  File "/home/fle/misc/alot/alot/buffers/buffer.py", line 29, in keypress
    return self.body.keypress(size, key)
  File "/usr/lib/python3.8/site-packages/urwid/listbox.py", line 975, in keypress
    return actual_key(self._keypress_page_down((maxcol, maxrow)))
  File "/usr/lib/python3.8/site-packages/urwid/listbox.py", line 1391, in _keypress_page_down
    widget, pos = self._body.get_next(pos)
  File "/home/fle/misc/alot/alot/walker.py", line 46, in get_next
    return self._get_at_pos(start_from + self.direction)
  File "/home/fle/misc/alot/alot/walker.py", line 72, in _get_at_pos
    widget = self._get_next_item()
  File "/home/fle/misc/alot/alot/walker.py", line 85, in _get_next_item
    next_widget = self.containerclass(next_obj, **self.kwargs)
  File "/home/fle/misc/alot/alot/widgets/search.py", line 27, in __init__
    self.rebuild()
  File "/home/fle/misc/alot/alot/widgets/search.py", line 33, in rebuild
    self.thread = self.dbman.get_thread(self.tid)
  File "/home/fle/misc/alot/alot/db/manager.py", line 213, in get_thread
    db = Database(path=self.path, mode=Database.MODE.READ_ONLY)
  File "/usr/lib/python3.8/site-packages/notmuch2/_database.py", line 129, in __init__
    raise errors.NotmuchError(ret, msg)
notmuch2.XapianError: A Xapian exception occurred opening database: Couldn't open /home/fle/mail//.notmuch/xapian/postlist.glass to read

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/fle/misc/alot/alot/ui.py", line 277, in apply_commandline
    await apply_this_command(c)
  File "/home/fle/misc/alot/alot/ui.py", line 725, in apply_command
    self._error_handler(e)
  File "/home/fle/misc/alot/alot/ui.py", line 160, in _error_handler
    self.notify(msg, priority='error')
  File "/home/fle/misc/alot/alot/ui.py", line 624, in notify
    self.update()
  File "/home/fle/misc/alot/alot/ui.py", line 660, in update
    lines.append(self.build_statusbar())
  File "/home/fle/misc/alot/alot/ui.py", line 681, in build_statusbar
    info['total_messages'] = self.dbman.count_messages('*')
  File "/home/fle/misc/alot/alot/db/manager.py", line 201, in count_messages
    db = Database(path=self.path, mode=Database.MODE.READ_ONLY)
  File "/usr/lib/python3.8/site-packages/notmuch2/_database.py", line 129, in __init__
    raise errors.NotmuchError(ret, msg)
notmuch2.XapianError: A Xapian exception occurred opening database: Couldn't open /home/fle/mail//.notmuch/xapian/postlist.glass to read

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/fle/misc/alot/alot/ui.py", line 195, in _apply_fire
    await self.apply_commandline(cmdline)
  File "/home/fle/misc/alot/alot/ui.py", line 283, in apply_commandline
    self._error_handler(e)
  File "/home/fle/misc/alot/alot/ui.py", line 160, in _error_handler
    self.notify(msg, priority='error')
  File "/home/fle/misc/alot/alot/ui.py", line 624, in notify
    self.update()
  File "/home/fle/misc/alot/alot/ui.py", line 660, in update
    lines.append(self.build_statusbar())
  File "/home/fle/misc/alot/alot/ui.py", line 681, in build_statusbar
    info['total_messages'] = self.dbman.count_messages('*')
  File "/home/fle/misc/alot/alot/db/manager.py", line 201, in count_messages
    db = Database(path=self.path, mode=Database.MODE.READ_ONLY)
  File "/usr/lib/python3.8/site-packages/notmuch2/_database.py", line 129, in __init__
    raise errors.NotmuchError(ret, msg)
notmuch2.XapianError: A Xapian exception occurred opening database: Couldn't open /home/fle/mail//.notmuch/xapian/postlist.glass to read

DEBUG:ui:Got key (['page down'], [27, 91, 54, 126])
DEBUG:ui:cmdline: 'move page down'
DEBUG:ui:search command string: "move page down"
DEBUG:__init__:mode:search got commandline "move page down"
DEBUG:__init__:ARGS: ['move', 'page', 'down']
DEBUG:__init__:cmd parms {'movement': ['page', 'down']}
DEBUG:search:page down
ERROR:ui:Traceback (most recent call last):
  File "/home/fle/misc/alot/alot/ui.py", line 723, in apply_command
    cmd.apply(self)
  File "/home/fle/misc/alot/alot/commands/search.py", line 252, in apply
    MoveCommand.apply(self, ui)
  File "/home/fle/misc/alot/alot/commands/globals.py", line 1062, in apply
    ui.mainloop.process_input([self.movement])
  File "/usr/lib/python3.8/site-packages/urwid/main_loop.py", line 513, in process_input
    k = self._topmost_widget.keypress(self.screen_size, k)
  File "/usr/lib/python3.8/site-packages/urwid/container.py", line 1131, in keypress
    return self.body.keypress( (maxcol, remaining), key )
  File "/home/fle/misc/alot/alot/buffers/buffer.py", line 29, in keypress
    return self.body.keypress(size, key)
  File "/usr/lib/python3.8/site-packages/urwid/listbox.py", line 975, in keypress
    return actual_key(self._keypress_page_down((maxcol, maxrow)))
  File "/usr/lib/python3.8/site-packages/urwid/listbox.py", line 1391, in _keypress_page_down
    widget, pos = self._body.get_next(pos)
  File "/home/fle/misc/alot/alot/walker.py", line 46, in get_next
    return self._get_at_pos(start_from + self.direction)
  File "/home/fle/misc/alot/alot/walker.py", line 72, in _get_at_pos
    widget = self._get_next_item()
  File "/home/fle/misc/alot/alot/walker.py", line 85, in _get_next_item
    next_widget = self.containerclass(next_obj, **self.kwargs)
  File "/home/fle/misc/alot/alot/widgets/search.py", line 27, in __init__
    self.rebuild()
  File "/home/fle/misc/alot/alot/widgets/search.py", line 33, in rebuild
    self.thread = self.dbman.get_thread(self.tid)
  File "/home/fle/misc/alot/alot/db/manager.py", line 213, in get_thread
    db = Database(path=self.path, mode=Database.MODE.READ_ONLY)
  File "/usr/lib/python3.8/site-packages/notmuch2/_database.py", line 129, in __init__
    raise errors.NotmuchError(ret, msg)
notmuch2.XapianError: A Xapian exception occurred opening database: Couldn't open /home/fle/mail//.notmuch/xapian/postlist.glass to read

ERROR:ui:Traceback (most recent call last):
  File "/home/fle/misc/alot/alot/ui.py", line 723, in apply_command
    cmd.apply(self)
  File "/home/fle/misc/alot/alot/commands/search.py", line 252, in apply
    MoveCommand.apply(self, ui)
  File "/home/fle/misc/alot/alot/commands/globals.py", line 1062, in apply
    ui.mainloop.process_input([self.movement])
  File "/usr/lib/python3.8/site-packages/urwid/main_loop.py", line 513, in process_input
    k = self._topmost_widget.keypress(self.screen_size, k)
  File "/usr/lib/python3.8/site-packages/urwid/container.py", line 1131, in keypress
    return self.body.keypress( (maxcol, remaining), key )
  File "/home/fle/misc/alot/alot/buffers/buffer.py", line 29, in keypress
    return self.body.keypress(size, key)
  File "/usr/lib/python3.8/site-packages/urwid/listbox.py", line 975, in keypress
    return actual_key(self._keypress_page_down((maxcol, maxrow)))
  File "/usr/lib/python3.8/site-packages/urwid/listbox.py", line 1391, in _keypress_page_down
    widget, pos = self._body.get_next(pos)
  File "/home/fle/misc/alot/alot/walker.py", line 46, in get_next
    return self._get_at_pos(start_from + self.direction)
  File "/home/fle/misc/alot/alot/walker.py", line 72, in _get_at_pos
    widget = self._get_next_item()
  File "/home/fle/misc/alot/alot/walker.py", line 85, in _get_next_item
    next_widget = self.containerclass(next_obj, **self.kwargs)
  File "/home/fle/misc/alot/alot/widgets/search.py", line 27, in __init__
    self.rebuild()
  File "/home/fle/misc/alot/alot/widgets/search.py", line 33, in rebuild
    self.thread = self.dbman.get_thread(self.tid)
  File "/home/fle/misc/alot/alot/db/manager.py", line 213, in get_thread
    db = Database(path=self.path, mode=Database.MODE.READ_ONLY)
  File "/usr/lib/python3.8/site-packages/notmuch2/_database.py", line 129, in __init__
    raise errors.NotmuchError(ret, msg)
notmuch2.XapianError: A Xapian exception occurred opening database: Couldn't open /home/fle/mail//.notmuch/xapian/postlist.glass to read

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/fle/misc/alot/alot/ui.py", line 277, in apply_commandline
    await apply_this_command(c)
  File "/home/fle/misc/alot/alot/ui.py", line 725, in apply_command
    self._error_handler(e)
  File "/home/fle/misc/alot/alot/ui.py", line 160, in _error_handler
    self.notify(msg, priority='error')
  File "/home/fle/misc/alot/alot/ui.py", line 624, in notify
    self.update()
  File "/home/fle/misc/alot/alot/ui.py", line 660, in update
    lines.append(self.build_statusbar())
  File "/home/fle/misc/alot/alot/ui.py", line 681, in build_statusbar
    info['total_messages'] = self.dbman.count_messages('*')
  File "/home/fle/misc/alot/alot/db/manager.py", line 201, in count_messages
    db = Database(path=self.path, mode=Database.MODE.READ_ONLY)
  File "/usr/lib/python3.8/site-packages/notmuch2/_database.py", line 129, in __init__
    raise errors.NotmuchError(ret, msg)
notmuch2.XapianError: A Xapian exception occurred opening database: Couldn't open /home/fle/mail//.notmuch/xapian/postlist.glass to read

ERROR:base_events:Task exception was never retrieved
future: <Task finished name='Task-7' coro=<UI._input_filter.<locals>._apply_fire() done, defined at /home/fle/misc/alot/alot/ui.py:193> exception=XapianError()>
Traceback (most recent call last):
  File "/home/fle/misc/alot/alot/ui.py", line 723, in apply_command
    cmd.apply(self)
  File "/home/fle/misc/alot/alot/commands/search.py", line 252, in apply
    MoveCommand.apply(self, ui)
  File "/home/fle/misc/alot/alot/commands/globals.py", line 1062, in apply
    ui.mainloop.process_input([self.movement])
  File "/usr/lib/python3.8/site-packages/urwid/main_loop.py", line 513, in process_input
    k = self._topmost_widget.keypress(self.screen_size, k)
  File "/usr/lib/python3.8/site-packages/urwid/container.py", line 1131, in keypress
    return self.body.keypress( (maxcol, remaining), key )
  File "/home/fle/misc/alot/alot/buffers/buffer.py", line 29, in keypress
    return self.body.keypress(size, key)
  File "/usr/lib/python3.8/site-packages/urwid/listbox.py", line 975, in keypress
    return actual_key(self._keypress_page_down((maxcol, maxrow)))
  File "/usr/lib/python3.8/site-packages/urwid/listbox.py", line 1391, in _keypress_page_down
    widget, pos = self._body.get_next(pos)
  File "/home/fle/misc/alot/alot/walker.py", line 46, in get_next
    return self._get_at_pos(start_from + self.direction)
  File "/home/fle/misc/alot/alot/walker.py", line 72, in _get_at_pos
    widget = self._get_next_item()
  File "/home/fle/misc/alot/alot/walker.py", line 85, in _get_next_item
    next_widget = self.containerclass(next_obj, **self.kwargs)
  File "/home/fle/misc/alot/alot/widgets/search.py", line 27, in __init__
    self.rebuild()
  File "/home/fle/misc/alot/alot/widgets/search.py", line 33, in rebuild
    self.thread = self.dbman.get_thread(self.tid)
  File "/home/fle/misc/alot/alot/db/manager.py", line 213, in get_thread
    db = Database(path=self.path, mode=Database.MODE.READ_ONLY)
  File "/usr/lib/python3.8/site-packages/notmuch2/_database.py", line 129, in __init__
    raise errors.NotmuchError(ret, msg)
notmuch2.XapianError: A Xapian exception occurred opening database: Couldn't open /home/fle/mail//.notmuch/xapian/postlist.glass to read

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/fle/misc/alot/alot/ui.py", line 277, in apply_commandline
    await apply_this_command(c)
  File "/home/fle/misc/alot/alot/ui.py", line 725, in apply_command
    self._error_handler(e)
  File "/home/fle/misc/alot/alot/ui.py", line 160, in _error_handler
    self.notify(msg, priority='error')
  File "/home/fle/misc/alot/alot/ui.py", line 624, in notify
    self.update()
  File "/home/fle/misc/alot/alot/ui.py", line 660, in update
    lines.append(self.build_statusbar())
  File "/home/fle/misc/alot/alot/ui.py", line 681, in build_statusbar
    info['total_messages'] = self.dbman.count_messages('*')
  File "/home/fle/misc/alot/alot/db/manager.py", line 201, in count_messages
    db = Database(path=self.path, mode=Database.MODE.READ_ONLY)
  File "/usr/lib/python3.8/site-packages/notmuch2/_database.py", line 129, in __init__
    raise errors.NotmuchError(ret, msg)
notmuch2.XapianError: A Xapian exception occurred opening database: Couldn't open /home/fle/mail//.notmuch/xapian/postlist.glass to read

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/fle/misc/alot/alot/ui.py", line 195, in _apply_fire
    await self.apply_commandline(cmdline)
  File "/home/fle/misc/alot/alot/ui.py", line 283, in apply_commandline
    self._error_handler(e)
  File "/home/fle/misc/alot/alot/ui.py", line 160, in _error_handler
    self.notify(msg, priority='error')
  File "/home/fle/misc/alot/alot/ui.py", line 624, in notify
    self.update()
  File "/home/fle/misc/alot/alot/ui.py", line 660, in update
    lines.append(self.build_statusbar())
  File "/home/fle/misc/alot/alot/ui.py", line 681, in build_statusbar
    info['total_messages'] = self.dbman.count_messages('*')
  File "/home/fle/misc/alot/alot/db/manager.py", line 201, in count_messages
    db = Database(path=self.path, mode=Database.MODE.READ_ONLY)
  File "/usr/lib/python3.8/site-packages/notmuch2/_database.py", line 129, in __init__
    raise errors.NotmuchError(ret, msg)
notmuch2.XapianError: A Xapian exception occurred opening database: Couldn't open /home/fle/mail//.notmuch/xapian/postlist.glass to read

DEBUG:ui:Got key (['page up'], [27, 91, 53, 126])
DEBUG:ui:cmdline: 'move page up'
DEBUG:ui:search command string: "move page up"
DEBUG:__init__:mode:search got commandline "move page up"
DEBUG:__init__:ARGS: ['move', 'page', 'up']
DEBUG:__init__:cmd parms {'movement': ['page', 'up']}
DEBUG:search:page up
DEBUG:ui:Got key (['page up'], [27, 91, 53, 126])
DEBUG:ui:cmdline: 'move page up'
DEBUG:ui:search command string: "move page up"
DEBUG:__init__:mode:search got commandline "move page up"
DEBUG:__init__:ARGS: ['move', 'page', 'up']
DEBUG:__init__:cmd parms {'movement': ['page', 'up']}
DEBUG:search:page up
DEBUG:ui:Got key (['page up'], [27, 91, 53, 126])
DEBUG:ui:cmdline: 'move page up'
DEBUG:ui:search command string: "move page up"
DEBUG:__init__:mode:search got commandline "move page up"
DEBUG:__init__:ARGS: ['move', 'page', 'up']
DEBUG:__init__:cmd parms {'movement': ['page', 'up']}
DEBUG:search:page up
DEBUG:ui:Got key (['page up'], [27, 91, 53, 126])
DEBUG:ui:cmdline: 'move page up'
DEBUG:ui:search command string: "move page up"
DEBUG:__init__:mode:search got commandline "move page up"
DEBUG:__init__:ARGS: ['move', 'page', 'up']
DEBUG:__init__:cmd parms {'movement': ['page', 'up']}
DEBUG:search:page up
DEBUG:ui:Got key (['page up'], [27, 91, 53, 126])
DEBUG:ui:cmdline: 'move page up'
DEBUG:ui:search command string: "move page up"
DEBUG:__init__:mode:search got commandline "move page up"
DEBUG:__init__:ARGS: ['move', 'page', 'up']
DEBUG:__init__:cmd parms {'movement': ['page', 'up']}
DEBUG:search:page up
DEBUG:ui:Got key (['page up'], [27, 91, 53, 126])
DEBUG:ui:cmdline: 'move page up'
DEBUG:ui:search command string: "move page up"
DEBUG:__init__:mode:search got commandline "move page up"
DEBUG:__init__:ARGS: ['move', 'page', 'up']
DEBUG:__init__:cmd parms {'movement': ['page', 'up']}
DEBUG:search:page up
DEBUG:ui:Got key (['page up'], [27, 91, 53, 126])
DEBUG:ui:cmdline: 'move page up'
DEBUG:ui:search command string: "move page up"
DEBUG:__init__:mode:search got commandline "move page up"
DEBUG:__init__:ARGS: ['move', 'page', 'up']
DEBUG:__init__:cmd parms {'movement': ['page', 'up']}
DEBUG:search:page up
DEBUG:ui:Got key (['q'], [113])
DEBUG:ui:cmdline: 'exit'
DEBUG:ui:search command string: "exit"
DEBUG:__init__:mode:search got commandline "exit"
DEBUG:__init__:ARGS: ['exit']
DEBUG:__init__:cmd parms {}
DEBUG:globals:flush complete
ERROR:ui:Traceback (most recent call last):
  File "/home/fle/misc/alot/alot/ui.py", line 723, in apply_command
    cmd.apply(self)
  File "/home/fle/misc/alot/alot/commands/globals.py", line 619, in apply
    ui.update()
  File "/home/fle/misc/alot/alot/ui.py", line 660, in update
    lines.append(self.build_statusbar())
  File "/home/fle/misc/alot/alot/ui.py", line 681, in build_statusbar
    info['total_messages'] = self.dbman.count_messages('*')
  File "/home/fle/misc/alot/alot/db/manager.py", line 201, in count_messages
    db = Database(path=self.path, mode=Database.MODE.READ_ONLY)
  File "/usr/lib/python3.8/site-packages/notmuch2/_database.py", line 129, in __init__
    raise errors.NotmuchError(ret, msg)
notmuch2.XapianError: A Xapian exception occurred opening database: Couldn't open /home/fle/mail//.notmuch/xapian/postlist.glass to read

ERROR:ui:Traceback (most recent call last):
  File "/home/fle/misc/alot/alot/ui.py", line 723, in apply_command
    cmd.apply(self)
  File "/home/fle/misc/alot/alot/commands/globals.py", line 619, in apply
    ui.update()
  File "/home/fle/misc/alot/alot/ui.py", line 660, in update
    lines.append(self.build_statusbar())
  File "/home/fle/misc/alot/alot/ui.py", line 681, in build_statusbar
    info['total_messages'] = self.dbman.count_messages('*')
  File "/home/fle/misc/alot/alot/db/manager.py", line 201, in count_messages
    db = Database(path=self.path, mode=Database.MODE.READ_ONLY)
  File "/usr/lib/python3.8/site-packages/notmuch2/_database.py", line 129, in __init__
    raise errors.NotmuchError(ret, msg)
notmuch2.XapianError: A Xapian exception occurred opening database: Couldn't open /home/fle/mail//.notmuch/xapian/postlist.glass to read

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/fle/misc/alot/alot/ui.py", line 721, in apply_command
    await cmd.apply(self)
  File "/home/fle/misc/alot/alot/commands/globals.py", line 76, in apply
    await ui.apply_command(FlushCommand(callback=ui.exit))
  File "/home/fle/misc/alot/alot/ui.py", line 725, in apply_command
    self._error_handler(e)
  File "/home/fle/misc/alot/alot/ui.py", line 160, in _error_handler
    self.notify(msg, priority='error')
  File "/home/fle/misc/alot/alot/ui.py", line 624, in notify
    self.update()
  File "/home/fle/misc/alot/alot/ui.py", line 660, in update
    lines.append(self.build_statusbar())
  File "/home/fle/misc/alot/alot/ui.py", line 681, in build_statusbar
    info['total_messages'] = self.dbman.count_messages('*')
  File "/home/fle/misc/alot/alot/db/manager.py", line 201, in count_messages
    db = Database(path=self.path, mode=Database.MODE.READ_ONLY)
  File "/usr/lib/python3.8/site-packages/notmuch2/_database.py", line 129, in __init__
    raise errors.NotmuchError(ret, msg)
notmuch2.XapianError: A Xapian exception occurred opening database: Couldn't open /home/fle/mail//.notmuch/xapian/postlist.glass to read

ERROR:ui:Traceback (most recent call last):
  File "/home/fle/misc/alot/alot/ui.py", line 723, in apply_command
    cmd.apply(self)
  File "/home/fle/misc/alot/alot/commands/globals.py", line 619, in apply
    ui.update()
  File "/home/fle/misc/alot/alot/ui.py", line 660, in update
    lines.append(self.build_statusbar())
  File "/home/fle/misc/alot/alot/ui.py", line 681, in build_statusbar
    info['total_messages'] = self.dbman.count_messages('*')
  File "/home/fle/misc/alot/alot/db/manager.py", line 201, in count_messages
    db = Database(path=self.path, mode=Database.MODE.READ_ONLY)
  File "/usr/lib/python3.8/site-packages/notmuch2/_database.py", line 129, in __init__
    raise errors.NotmuchError(ret, msg)
notmuch2.XapianError: A Xapian exception occurred opening database: Couldn't open /home/fle/mail//.notmuch/xapian/postlist.glass to read

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/fle/misc/alot/alot/ui.py", line 721, in apply_command
    await cmd.apply(self)
  File "/home/fle/misc/alot/alot/commands/globals.py", line 76, in apply
    await ui.apply_command(FlushCommand(callback=ui.exit))
  File "/home/fle/misc/alot/alot/ui.py", line 725, in apply_command
    self._error_handler(e)
  File "/home/fle/misc/alot/alot/ui.py", line 160, in _error_handler
    self.notify(msg, priority='error')
  File "/home/fle/misc/alot/alot/ui.py", line 624, in notify
    self.update()
  File "/home/fle/misc/alot/alot/ui.py", line 660, in update
    lines.append(self.build_statusbar())
  File "/home/fle/misc/alot/alot/ui.py", line 681, in build_statusbar
    info['total_messages'] = self.dbman.count_messages('*')
  File "/home/fle/misc/alot/alot/db/manager.py", line 201, in count_messages
    db = Database(path=self.path, mode=Database.MODE.READ_ONLY)
  File "/usr/lib/python3.8/site-packages/notmuch2/_database.py", line 129, in __init__
    raise errors.NotmuchError(ret, msg)
notmuch2.XapianError: A Xapian exception occurred opening database: Couldn't open /home/fle/mail//.notmuch/xapian/postlist.glass to read

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/fle/misc/alot/alot/ui.py", line 277, in apply_commandline
    await apply_this_command(c)
  File "/home/fle/misc/alot/alot/ui.py", line 725, in apply_command
    self._error_handler(e)
  File "/home/fle/misc/alot/alot/ui.py", line 160, in _error_handler
    self.notify(msg, priority='error')
  File "/home/fle/misc/alot/alot/ui.py", line 624, in notify
    self.update()
  File "/home/fle/misc/alot/alot/ui.py", line 660, in update
    lines.append(self.build_statusbar())
  File "/home/fle/misc/alot/alot/ui.py", line 681, in build_statusbar
    info['total_messages'] = self.dbman.count_messages('*')
  File "/home/fle/misc/alot/alot/db/manager.py", line 201, in count_messages
    db = Database(path=self.path, mode=Database.MODE.READ_ONLY)
  File "/usr/lib/python3.8/site-packages/notmuch2/_database.py", line 129, in __init__
    raise errors.NotmuchError(ret, msg)
notmuch2.XapianError: A Xapian exception occurred opening database: Couldn't open /home/fle/mail//.notmuch/xapian/postlist.glass to read

ERROR:base_events:Task exception was never retrieved
future: <Task finished name='Task-15' coro=<UI._input_filter.<locals>._apply_fire() done, defined at /home/fle/misc/alot/alot/ui.py:193> exception=XapianError()>
Traceback (most recent call last):
  File "/home/fle/misc/alot/alot/ui.py", line 723, in apply_command
    cmd.apply(self)
  File "/home/fle/misc/alot/alot/commands/globals.py", line 619, in apply
    ui.update()
  File "/home/fle/misc/alot/alot/ui.py", line 660, in update
    lines.append(self.build_statusbar())
  File "/home/fle/misc/alot/alot/ui.py", line 681, in build_statusbar
    info['total_messages'] = self.dbman.count_messages('*')
  File "/home/fle/misc/alot/alot/db/manager.py", line 201, in count_messages
    db = Database(path=self.path, mode=Database.MODE.READ_ONLY)
  File "/usr/lib/python3.8/site-packages/notmuch2/_database.py", line 129, in __init__
    raise errors.NotmuchError(ret, msg)
notmuch2.XapianError: A Xapian exception occurred opening database: Couldn't open /home/fle/mail//.notmuch/xapian/postlist.glass to read

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/fle/misc/alot/alot/ui.py", line 721, in apply_command
    await cmd.apply(self)
  File "/home/fle/misc/alot/alot/commands/globals.py", line 76, in apply
    await ui.apply_command(FlushCommand(callback=ui.exit))
  File "/home/fle/misc/alot/alot/ui.py", line 725, in apply_command
    self._error_handler(e)
  File "/home/fle/misc/alot/alot/ui.py", line 160, in _error_handler
    self.notify(msg, priority='error')
  File "/home/fle/misc/alot/alot/ui.py", line 624, in notify
    self.update()
  File "/home/fle/misc/alot/alot/ui.py", line 660, in update
    lines.append(self.build_statusbar())
  File "/home/fle/misc/alot/alot/ui.py", line 681, in build_statusbar
    info['total_messages'] = self.dbman.count_messages('*')
  File "/home/fle/misc/alot/alot/db/manager.py", line 201, in count_messages
    db = Database(path=self.path, mode=Database.MODE.READ_ONLY)
  File "/usr/lib/python3.8/site-packages/notmuch2/_database.py", line 129, in __init__
    raise errors.NotmuchError(ret, msg)
notmuch2.XapianError: A Xapian exception occurred opening database: Couldn't open /home/fle/mail//.notmuch/xapian/postlist.glass to read

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/fle/misc/alot/alot/ui.py", line 277, in apply_commandline
    await apply_this_command(c)
  File "/home/fle/misc/alot/alot/ui.py", line 725, in apply_command
    self._error_handler(e)
  File "/home/fle/misc/alot/alot/ui.py", line 160, in _error_handler
    self.notify(msg, priority='error')
  File "/home/fle/misc/alot/alot/ui.py", line 624, in notify
    self.update()
  File "/home/fle/misc/alot/alot/ui.py", line 660, in update
    lines.append(self.build_statusbar())
  File "/home/fle/misc/alot/alot/ui.py", line 681, in build_statusbar
    info['total_messages'] = self.dbman.count_messages('*')
  File "/home/fle/misc/alot/alot/db/manager.py", line 201, in count_messages
    db = Database(path=self.path, mode=Database.MODE.READ_ONLY)
  File "/usr/lib/python3.8/site-packages/notmuch2/_database.py", line 129, in __init__
    raise errors.NotmuchError(ret, msg)
notmuch2.XapianError: A Xapian exception occurred opening database: Couldn't open /home/fle/mail//.notmuch/xapian/postlist.glass to read

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/fle/misc/alot/alot/ui.py", line 195, in _apply_fire
    await self.apply_commandline(cmdline)
  File "/home/fle/misc/alot/alot/ui.py", line 283, in apply_commandline
    self._error_handler(e)
  File "/home/fle/misc/alot/alot/ui.py", line 160, in _error_handler
    self.notify(msg, priority='error')
  File "/home/fle/misc/alot/alot/ui.py", line 624, in notify
    self.update()
  File "/home/fle/misc/alot/alot/ui.py", line 660, in update
    lines.append(self.build_statusbar())
  File "/home/fle/misc/alot/alot/ui.py", line 681, in build_statusbar
    info['total_messages'] = self.dbman.count_messages('*')
  File "/home/fle/misc/alot/alot/db/manager.py", line 201, in count_messages
    db = Database(path=self.path, mode=Database.MODE.READ_ONLY)
  File "/usr/lib/python3.8/site-packages/notmuch2/_database.py", line 129, in __init__
    raise errors.NotmuchError(ret, msg)
notmuch2.XapianError: A Xapian exception occurred opening database: Couldn't open /home/fle/mail//.notmuch/xapian/postlist.glass to read

It doesn't throw the same error, but it shows that not all exceptions are caught properly.

guijemont commented 3 years ago

I was hitting a segfault all the time with the same backtrace, using 424669b4e08dd841f499981bbce10c15a5c48463. I have now updated to 486df70dbaf31eaefd441f1f2f47c93d8a057fa6, using python3-notmuch2 from ubuntu 20.10. I get much less segfault, but I can reliably get a segfault with the steps to reproduce of that issue. This time, the stack trace is a little different (though similar):

#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#1  0x00007efcb2964864 in __GI_abort () at abort.c:79
#2  0x00007efcb074f4de in talloc_abort (reason=0x7efcb0759070 "Bad talloc magic value - unknown value") at ../../talloc.c:505
#3  0x00007efcb074f4d7 in talloc_abort_unknown_value () at ../../talloc.c:534
#4  talloc_chunk_from_ptr (ptr=0x375cc70) at ../../talloc.c:534
#5  _talloc_free (ptr=0x375cc70, location=<optimized out>) at ../../talloc.c:1767
#6  0x00007efcb09a9475 in _cffi_f_notmuch_thread_destroy (self=<optimized out>, arg0=<optimized out>) at build/temp.linux-x86_64-3.8/notmuch2._capi.c:4855
#7  0x000000000051dbff in cfunction_vectorcall_O (func=<built-in method notmuch_thread_destroy of _cffi_backend.Lib object at remote 0x7efcb09deb80>, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>)
    at ../Objects/methodobject.c:482
#8  0x000000000050e7af in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7efcaf48fec0, callable=<built-in method notmuch_thread_destroy of _cffi_backend.Lib object at remote 0x7efcb09deb80>)
    at ../Include/cpython/abstract.h:127
#9  call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x2332980) at ../Python/ceval.c:4963
#10 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3469
#11 0x000000000051ede7 in PyEval_EvalFrameEx
    (throwflag=0, f=Frame 0x7efcaf48fd40, for file /usr/lib/python3/dist-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 0x7efcb270e8b0>, __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 0x7efcafeba040>}, _member_type_=<type at remote 0x8d2440>, _value2member_map_={0: <...>, 1: <...>}, READ_ONLY=<...>, READ_WRITE=<...>, __new__=<function at remote 0x7efcb270e820>) at remote 0x27541d0>) at remote 0x7efcb09ecd00>, _memptr__db_p_2756640=<_cffi_backend._CDataBase at remote 0x7efcaeffd630>, closed=False) at remote 0x7efcaeffd8e0>, _parent=<Query(_db=<...>, _memptr__query_p_2753770=<_cffi_backend._CDataBase at remote 0x7efcaeffd9c0>) at remote 0x7efcaeffd0d0>, _memptr__iter_p_2745350=<_cffi_backend._CDataBase at...(truncated)) at ../Python/ceval.c:741
#12 function_code_fastcall (globals=<optimized out>, nargs=1, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#13 _PyFunction_Vectorcall (func=<optimized out>, stack=0x7efcaf48fd18, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:410
#14 0x0000000000509abc in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7efcaf48fd18, callable=<function at remote 0x7efcafed0a60>) at ../Include/cpython/abstract.h:127

You can find the full stack trace here (also with a version form bt full).

The end of my log file looks like this (having replaced names and email addresses):

DEBUG:manager:write-out item: ('toggle', <function TagCommand.apply.<locals>.refresh at 0x7fa91e46a040>, '(tag:inbox AND NOT tag:killed) AND thread:0000000000026cd1', ['unread'])
DEBUG:manager:cmd created
DEBUG:manager:got write lock
DEBUG:manager:got atomic
DEBUG:manager:ended atomic
DEBUG:manager:closed db
DEBUG:manager:<function TagCommand.apply.<locals>.refresh at 0x7fa91e46a040>
DEBUG:utils:unquoted header: |Anne O'nymous <anonymous@example.com>|
DEBUG:utils:unquoted header: |Anne O'nymous <anonymous@example.com>|
DEBUG:utils:unquoted header: |Anne O'nymous <anonymous@example.com>|
DEBUG:utils:unquoted header: |Anne O'nymous <anonymous@example.com>|
DEBUG:utils:unquoted header: |Anne O'nymous <anonymous@example.com>|
DEBUG:utils:unquoted header: |Anne O'nymous <anonymous@example.com>|
DEBUG:utils:unquoted header: |Anne O'nymous <anonymous@example.com>|
DEBUG:utils:unquoted header: |Anne O'nymous <anonymous@example.com>|
DEBUG:utils:unquoted header: |Anne O'nymous <anonymous@example.com>|
DEBUG:manager:called callback
DEBUG:manager:flush finished
DEBUG:utils:unquoted header: |Anne O'nymous <anonymous@example.com>|
DEBUG:utils:unquoted header: |Anne O'nymous <anonymous@example.com>|
DEBUG:utils:unquoted header: |Anne O'nymous <anonymous@example.com>|
DEBUG:utils:unquoted header: |Anne O'nymous <anonymous@example.com>|
DEBUG:utils:unquoted header: |Anne O'nymous <anonymous@example.com>|
DEBUG:utils:unquoted header: |Anne O'nymous <anonymous@example.com>|
DEBUG:utils:unquoted header: |Anne O'nymous <anonymous@example.com>|
DEBUG:utils:unquoted header: |Anne O'nymous <anonymous@example.com>|
DEBUG:utils:unquoted header: |Anne O'nymous <anonymous@example.com>|
DEBUG:globals:flush complete
DEBUG:ui:Got key (['page down'], [27, 91, 54, 126])
DEBUG:ui:cmdline: 'move page down'
DEBUG:ui:search command string: "move page down"
DEBUG:__init__:mode:search got commandline "move page down"
DEBUG:__init__:ARGS: ['move', 'page', 'down']
DEBUG:__init__:cmd parms {'movement': ['page', 'down']}
DEBUG:search:page down
DEBUG:utils:unquoted header: |Anne O'nymous <anonymous@example.com>|
pazz commented 3 years ago

Could you relay that to the notmuch list? Ideally as answer to my last mail on the python bindings segfaulting? Many thanks, P

Quoting Guillaume Emont (2021-03-02 17:44:41)

I was hitting a segfault all the time with the same backtrace, using 424669b. I have now updated to 486df70, using python3-notmuch2 from ubuntu 20.10. I get much less segfault, but I can reliably get a segfault with the steps to reproduce of that issue. This time, the stack trace is a little different (though similar):

0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49

1 0x00007efcb2964864 in __GI_abort () at abort.c:79

2 0x00007efcb074f4de in talloc_abort (reason=0x7efcb0759070 "Bad talloc magic value - unknown value") at ../../talloc.c:505

3 0x00007efcb074f4d7 in talloc_abort_unknown_value () at ../../talloc.c:534

4 talloc_chunk_from_ptr (ptr=0x375cc70) at ../../talloc.c:534

5 _talloc_free (ptr=0x375cc70, location=) at ../../talloc.c:1767

6 0x00007efcb09a9475 in _cffi_f_notmuch_thread_destroy (self=, arg0=) at build/temp.linux-x86_64-3.8/notmuch2._capi.c:4855

7 0x000000000051dbff in cfunction_vectorcall_O (func=<built-in method notmuch_thread_destroy of _cffi_backend.Lib object at remote 0x7efcb09deb80>, args=, nargsf=, kwnames=)

at ../Objects/methodobject.c:482

8 0x000000000050e7af in _PyObject_Vectorcall (kwnames=0x0, nargsf=, args=0x7efcaf48fec0, callable=<built-in method notmuch_thread_destroy of _cffi_backend.Lib object at remote 0x7efcb09deb80>)

at ../Include/cpython/abstract.h:127

9 call_function (kwnames=0x0, oparg=, pp_stack=, tstate=0x2332980) at ../Python/ceval.c:4963

10 _PyEval_EvalFrameDefault (f=, throwflag=) at ../Python/ceval.c:3469

11 0x000000000051ede7 in PyEval_EvalFrameEx

(throwflag=0, f=Frame 0x7efcaf48fd40, for file /usr/lib/python3/dist-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 0x7efcb270e8b0>, __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 0x7efcafeba040>}, _member_type_=<type at remote 0x8d2440>, _value2member_map_={0: <...>, 1: <...>}, READ_ONLY=<...>, READ_WRITE=<...>, __new__=<function at remote 0x7efcb270e820>) at remote 0x27541d0>) at remote 0x7efcb09ecd00>, _memptr__db_p_2756640=<_cffi_backend._CDataBase at remote 0x7efcaeffd630>, closed=False) at remote 0x7efcaeffd8e0>, _parent=<Query(_db=<...>, _memptr__query_p_2753770=<_cffi_backend._CDataBase at remote 0x7efcaeffd9c0>) at remote 0x7efcaeffd0d0>, _memptr__iter_p_2745350=<_cffi_backend._CDataBase at...(truncated)) at ../Python/ceval.c:741

12 function_code_fastcall (globals=, nargs=1, args=, co=) at ../Objects/call.c:283

13 _PyFunction_Vectorcall (func=, stack=0x7efcaf48fd18, nargsf=, kwnames=) at ../Objects/call.c:410

14 0x0000000000509abc in _PyObject_Vectorcall (kwnames=0x0, nargsf=, args=0x7efcaf48fd18, callable=<function at remote 0x7efcafed0a60>) at ../Include/cpython/abstract.h:127

You can find the full stack trace here (also with a version form bt full).

The end of my log file looks like this (having replaced names and email addresses):

DEBUG:manager:write-out item: ('toggle', <function TagCommand.apply..refresh at 0x7fa91e46a040>, '(tag:inbox AND NOT tag:killed) AND thread:0000000000026cd1', ['unread']) DEBUG:manager:cmd created DEBUG:manager:got write lock DEBUG:manager:got atomic DEBUG:manager:ended atomic DEBUG:manager:closed db DEBUG:manager:<function TagCommand.apply..refresh at 0x7fa91e46a040> DEBUG:utils:unquoted header: |Anne O'nymous anonymous@example.com| DEBUG:utils:unquoted header: |Anne O'nymous anonymous@example.com| DEBUG:utils:unquoted header: |Anne O'nymous anonymous@example.com| DEBUG:utils:unquoted header: |Anne O'nymous anonymous@example.com| DEBUG:utils:unquoted header: |Anne O'nymous anonymous@example.com| DEBUG:utils:unquoted header: |Anne O'nymous anonymous@example.com| DEBUG:utils:unquoted header: |Anne O'nymous anonymous@example.com| DEBUG:utils:unquoted header: |Anne O'nymous anonymous@example.com| DEBUG:utils:unquoted header: |Anne O'nymous anonymous@example.com| DEBUG:manager:called callback DEBUG:manager:flush finished DEBUG:utils:unquoted header: |Anne O'nymous anonymous@example.com| DEBUG:utils:unquoted header: |Anne O'nymous anonymous@example.com| DEBUG:utils:unquoted header: |Anne O'nymous anonymous@example.com| DEBUG:utils:unquoted header: |Anne O'nymous anonymous@example.com| DEBUG:utils:unquoted header: |Anne O'nymous anonymous@example.com| DEBUG:utils:unquoted header: |Anne O'nymous anonymous@example.com| DEBUG:utils:unquoted header: |Anne O'nymous anonymous@example.com| DEBUG:utils:unquoted header: |Anne O'nymous anonymous@example.com| DEBUG:utils:unquoted header: |Anne O'nymous anonymous@example.com| DEBUG:globals:flush complete DEBUG:ui:Got key (['page down'], [27, 91, 54, 126]) DEBUG:ui:cmdline: 'move page down' DEBUG:ui:search command string: "move page down" DEBUG:init:mode:search got commandline "move page down" DEBUG:init:ARGS: ['move', 'page', 'down'] DEBUG:init:cmd parms {'movement': ['page', 'down']} DEBUG:search:page down DEBUG:utils:unquoted header: |Anne O'nymous anonymous@example.com|

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.*

boutil commented 2 years ago

Hi! I am also affected by this. I confirm that adding the workaround above in hooks.py prevents alot from aborting after a few tags switchings.

pazz commented 2 years ago

Is this on the latest release or alot from git master?

Quoting Cédric Boutillier (2021-11-08 09:02:34)

Hi! I am also affected by this. I confirm that adding the workaround above in hooks.py prevents alot from aborting after a few tags switchings.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android. *

boutil commented 2 years ago

This is 0.10 (the 0.10-1 package, from Debian unstable). Oh! I have just seen the commit on top of master from last month. That should also probably fix that issue, shouldn't it?

pazz commented 2 years ago

Yes :)

Quoting Cédric Boutillier (2021-11-08 13:15:30)

This is 0.10 (the 0.10-1 package, from Debian unstable). Oh! I have just seen the commit on top of master from last month. That should also probably fix that issue, shouldn't it?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android. *

boutil commented 2 years ago

With the latest commit, I cannot reproduce the issue anymore, even without the workaround above. But it is true, as its description says, that it slows down a little the program, noticeably at startup. Thanks for the indication!