From: Gaute Hope <eg@gaute.vetsj.com>
To: David Bremner <david@tethera.net>, notmuch@notmuchmail.org
Subject: Re: talloc_abort in notmuch_thread_get_tags () when db has been modified
Date: Fri, 17 Feb 2017 14:01:35 +0000 [thread overview]
Message-ID: <1487339566.mz8acpov1j.astroid@strange.none> (raw)
In-Reply-To: <877f4p9f2m.fsf@tethera.net>
David Bremner writes on februar 17, 2017 13:28:
> Gaute Hope <eg@gaute.vetsj.com> writes:
>
>> David Bremner writes on mars 7, 2016 13:01:
>>> Gaute Hope <eg@gaute.vetsj.com> writes:
>>>
>>> Of course _why_ this error is happening could still be notmuch's
>>> fault. Can you reproduce the problem under valgrind?
>>
>
>> Hi again,
>>
>> For future reference: Attached is C++ test code that demonstrates the problem
>> (at least on my setup). It is part of the astroid test suite.
>>
>
> And did you try running this under valgrind?
>
```
$ valgrind test/test_notmuch_standalone
==9543== Memcheck, a memory error detector
==9543== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==9543== Using Valgrind-3.12.0 and LibVEX; rerun with -h for copyright info
==9543== Command: test/test_notmuch_standalone
==9543==
db: running test query..
query: *, approx: 10 threads.
thread id to change: 0000000000000002, thread no: 3
restarting query..
moving to thread: 2
tags: unread
tags: inbox
continue loading..
threads != NULL
terminate called after throwing an instance of 'Xapian::DatabaseModifiedError'
==9543==
==9543== Process terminating with default action of signal 6 (SIGABRT): dumping core
==9543== at 0xE46E04F: raise (in /usr/lib/libc-2.24.so)
==9543== by 0xE46F479: abort (in /usr/lib/libc-2.24.so)
==9543== by 0xD7494EC: __gnu_cxx::__verbose_terminate_handler() (vterminate.cc:95)
==9543== by 0xD7472A5: __cxxabiv1::__terminate(void (*)()) (eh_terminate.cc:47)
==9543== by 0xD7472F0: std::terminate() (eh_terminate.cc:57)
==9543== by 0xD747507: __cxa_throw (eh_throw.cc:87)
==9543== by 0xEEB987D: ??? (in /usr/lib/libxapian.so.30.2.0)
==9543== by 0xEEBC4A7: ??? (in /usr/lib/libxapian.so.30.2.0)
==9543== by 0xEEBEE14: ??? (in /usr/lib/libxapian.so.30.2.0)
==9543== by 0xEEBF0B7: ??? (in /usr/lib/libxapian.so.30.2.0)
==9543== by 0xEEBFF77: ??? (in /usr/lib/libxapian.so.30.2.0)
==9543== by 0xEE9539A: ??? (in /usr/lib/libxapian.so.30.2.0)
==9543==
==9543== HEAP SUMMARY:
==9543== in use at exit: 332,606 bytes in 1,171 blocks
==9543== total heap usage: 28,503 allocs, 27,332 frees, 3,835,392 bytes allocated
==9543==
==9543== LEAK SUMMARY:
==9543== definitely lost: 232 bytes in 1 blocks
==9543== indirectly lost: 285 bytes in 2 blocks
==9543== possibly lost: 8,577 bytes in 93 blocks
==9543== still reachable: 323,432 bytes in 1,074 blocks
==9543== of which reachable via heuristic:
==9543== newarray : 1,536 bytes in 16 blocks
==9543== suppressed: 0 bytes in 0 blocks
==9543== Rerun with --leak-check=full to see details of leaked memory
==9543==
==9543== For counts of detected and suppressed errors, rerun with: -v
==9543== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Aborted (core dumped)
```
>> The test-code must be adapted to your _test_ notmuch db.
>>
>> To pick up on this again, this issue started cropping up more frequently
>> again, and I can't see a way currently to anticipate or recover from
>> this from a user application of the notmuch library. There seems to be
>> an XapianError, which may or may not be handled by notmuch.
>
> Previously you only reported a talloc error. Do you have a new stacktrace?
>
Yeah - unsure if it is the same.
```
(gdb) r
Starting program: /home/gaute/dev/mail/notm/astroid/test/test_notmuch_standalone
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
db: running test query..
query: *, approx: 10 threads.
thread id to change: 0000000000000002, thread no: 3
restarting query..
moving to thread: 2
tags: unread
tags: inbox
continue loading..
threads != NULL
terminate called after throwing an instance of 'Xapian::DatabaseModifiedError'
Program received signal SIGABRT, Aborted.
0x00007fffee46b04f in raise () from /usr/lib/libc.so.6
(gdb) bt
#0 0x00007fffee46b04f in raise () at /usr/lib/libc.so.6
#1 0x00007fffee46c47a in abort () at /usr/lib/libc.so.6
#2 0x00007fffef2624ed in __gnu_cxx::__verbose_terminate_handler() ()
at /build/gcc-multilib/src/gcc/libstdc++-v3/libsupc++/vterminate.cc:95
#3 0x00007fffef2602a6 in __cxxabiv1::__terminate(void (*)()) (handler=<optimized out>)
at /build/gcc-multilib/src/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:47
#4 0x00007fffef2602f1 in std::terminate() ()
at /build/gcc-multilib/src/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:57
#5 0x00007fffef260508 in __cxxabiv1::__cxa_throw(void*, std::type_info*, void (*)(void*)) (obj=0xb0eff0, tinfo=0x7fffede100b8 <typeinfo for Xapian::DatabaseModifiedError>, dest=0x7fffedaa7e30 <Xapian::DatabaseModifiedError::~DatabaseModifiedError()>)
at /build/gcc-multilib/src/gcc/libstdc++-v3/libsupc++/eh_throw.cc:87
#6 0x00007fffedac587e in () at /usr/lib/libxapian.so.30
#7 0x00007fffedac84a8 in () at /usr/lib/libxapian.so.30
#8 0x00007fffedacae15 in () at /usr/lib/libxapian.so.30
#9 0x00007fffedacb0b8 in () at /usr/lib/libxapian.so.30
#10 0x00007fffedacbf78 in () at /usr/lib/libxapian.so.30
#11 0x00007fffedaa139b in () at /usr/lib/libxapian.so.30
#12 0x00007fffeda55e3c in Xapian::Document::termlist_begin() const ()
at /usr/lib/libxapian.so.30
#13 0x00007ffff716e11b in _notmuch_message_ensure_metadata(_notmuch_message*) (message=message@entry=0xb11430) at lib/message.cc:331
#14 0x00007ffff716e989 in notmuch_message_get_thread_id(notmuch_message_t*) (message=message@entry=0xb11430) at lib/message.cc:536
#15 0x00007ffff7174685 in _notmuch_thread_create(void*, notmuch_database_t*, unsigned int, notmuch_doc_id_set_t*, notmuch_string_list_t*, notmuch_exclude_t, notmuch_sort_t) (ctx=0xb0f270, notmuch=0xaf62c0, seed_doc_id=3, match_set=match_set@entry=0xb0ef28, exclude_terms=0xabb060, omit_excluded=NOTMUCH_EXCLUDE_TRUE, sort=NOTMUCH_SORT_NEWEST_FIRST) at lib/thread.cc:456
#16 0x00007ffff71715bd in notmuch_threads_get(notmuch_threads_t*) (threads=0xb0ef10) at lib/query.cc:532
#17 0x00000000005f85a5 in main() () at test/test_notmuch_standalone.cc:191
```
next prev parent reply other threads:[~2017-02-17 14:01 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-18 12:45 talloc_abort in notmuch_thread_get_tags () when db has been modified Gaute Hope
2016-03-07 9:14 ` Gaute Hope
2016-03-07 12:01 ` David Bremner
2017-02-15 22:58 ` Gaute Hope
2017-02-17 12:28 ` David Bremner
2017-02-17 14:01 ` Gaute Hope [this message]
2017-02-17 15:35 ` David Bremner
2017-11-03 10:45 ` Gaute Hope
2017-11-03 12:02 ` Gaute Hope
2017-11-03 12:18 ` David Bremner
2017-11-03 12:50 ` Gaute Hope
-- strict thread matches above, loose matches on Subject: below --
2016-01-18 8:46 Gaute Hope
2016-01-18 12:25 ` David Bremner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://notmuchmail.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1487339566.mz8acpov1j.astroid@strange.none \
--to=eg@gaute.vetsj.com \
--cc=david@tethera.net \
--cc=notmuch@notmuchmail.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).