On Mon, May 16 2022 at 06:47 -03, David Bremner <david@tethera.net> wrote: > Ideally of course I'd like a reproducer in C. It would help to have > line numbers in the valgrind output. It might be enough you install the > notmuch debug symbols? Took me a while to figure out the debugging workflow in NixOS, but I managed to capture the line numbers. At messsage.cc:1333, at the second condition below: --8<---------------cut here---------------start------------->8--- /* Synchronize changes made to message->doc out into the database. */ void _notmuch_message_sync (notmuch_message_t *message) { if (_notmuch_database_mode (message->notmuch) == NOTMUCH_DATABASE_MODE_READ_ONLY) return; if (! message->modified) return; ... } --8<---------------cut here---------------end--------------->8--- It becomes very clear why this error only happens when removing a non-existent tag if you look at at message.cc:1570... --8<---------------cut here---------------start------------->8--- try { message->doc.remove_term (term); message->modified = true; } catch (const Xapian::InvalidArgumentError) { /* We'll let the philosophers try to wrestle with the * question of whether failing to remove that which was not * there in the first place is failure. For us, we'll silently * consider it all good. */ } --8<---------------cut here---------------end--------------->8--- So I guess `message->modified' isn't correctly initialized, at least according to valgrind. -- Eliza _______________________________________________ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-leave@notmuchmail.org