* talloc_abort in notmuch_thread_get_tags () when db has been modified
@ 2016-01-18 8:46 Gaute Hope
2016-01-18 12:25 ` David Bremner
0 siblings, 1 reply; 13+ messages in thread
From: Gaute Hope @ 2016-01-18 8:46 UTC (permalink / raw)
To: notmuch
Hi,
a user of astroid [0] ran into a issue [1] (full trace at issue) where
reading a long query causes a talloc_abort in notmuch_thread_get_tags
(). 'notmuch new' is running at the same time, and most likely a thread
in the query has been modified since the query was done. Note that a
notmuch_thread_get_authors () call returns NULL without causing a full
crash. The code causing the crash is:
```
for (tags = notmuch_thread_get_tags (nm_thread);
notmuch_tags_valid (tags);
notmuch_tags_move_to_next (tags))
{
tag = notmuch_tags_get (tags); // tag belongs to tags
}
// or db.cc:508 in astroid/src.
```
while:
```
const char * auths = notmuch_thread_get_authors (nm_thread);
```
returns `NULL`, but does not crash.
Is there a way for me to handle this from the application side?
Admittedly I do keep query objects around for a while
(astroid/src/thread_index.cc:141), but in this case the issue would
probably occur anyway since it simply takes a long time to read the
query.
Regards, Gaute
[0] https://github.com/gauteh/astroid
[1] https://github.com/gauteh/astroid/issues/64
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: talloc_abort in notmuch_thread_get_tags () when db has been modified
2016-01-18 8:46 Gaute Hope
@ 2016-01-18 12:25 ` David Bremner
0 siblings, 0 replies; 13+ messages in thread
From: David Bremner @ 2016-01-18 12:25 UTC (permalink / raw)
To: Gaute Hope, notmuch
Gaute Hope <eg@gaute.vetsj.com> writes:
> Hi,
>
> a user of astroid [0] ran into a issue [1] (full trace at issue) where
> reading a long query causes a talloc_abort in notmuch_thread_get_tags
> (). 'notmuch new' is running at the same time, and most likely a thread
> in the query has been modified since the query was done. Note that a
> notmuch_thread_get_authors () call returns NULL without causing a full
> crash. The code causing the crash is:
>
> ```
> for (tags = notmuch_thread_get_tags (nm_thread);
> notmuch_tags_valid (tags);
> notmuch_tags_move_to_next (tags))
> {
> tag = notmuch_tags_get (tags); // tag belongs to tags
> }
>
> // or db.cc:508 in astroid/src.
> ```
>
The most likely cause of such a crash looks to me like nm_thread is NULL
or corrupted when passed in to get_tags. It's used without checking as a
talloc context, and that call to talloc never returns.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: talloc_abort in notmuch_thread_get_tags () when db has been modified
@ 2016-01-18 12:45 Gaute Hope
2016-03-07 9:14 ` Gaute Hope
0 siblings, 1 reply; 13+ messages in thread
From: Gaute Hope @ 2016-01-18 12:45 UTC (permalink / raw)
To: David Bremner, notmuch
David Bremner writes on January 18, 2016 13:25:
> The most likely cause of such a crash looks to me like nm_thread is NULL
> or corrupted when passed in to get_tags. It's used without checking as a
> talloc context, and that call to talloc never returns.
>
Ok, I'll check some further. I am checking whether nm_thread is NULL
though, the preceding code is as follows
(astroid/src/modes/thread_index/thread_index.cc:258):
```
for (;
notmuch_threads_valid (threads);
notmuch_threads_move_to_next (threads)) {
notmuch_thread_t * thread;
thread = notmuch_threads_get (threads);
if (thread == NULL) {
log << error << "ti: error: could not get thread." << endl;
throw database_error ("ti: could not get thread (is NULL)");
}
/* test for revision discarded */
const char * ti = notmuch_thread_get_thread_id (thread);
if (ti == NULL) {
log << error << "ti: revision discarded, trying to reopen." << endl;
reopen_tries++;
refresh (all, current_thread + count, false);
return;
}
NotmuchThread *t = new NotmuchThread (thread); // get_tags is inside here
notmuch_thread_destroy (thread);
```
(note that there is a bit of code there trying to determine whether the
db is still valid, or needs to be re-opened)
- g
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: talloc_abort in notmuch_thread_get_tags () when db has been modified
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
0 siblings, 1 reply; 13+ messages in thread
From: Gaute Hope @ 2016-03-07 9:14 UTC (permalink / raw)
To: David Bremner, notmuch
Gaute Hope writes on January 18, 2016 13:45:
> David Bremner writes on January 18, 2016 13:25:
>> The most likely cause of such a crash looks to me like nm_thread is NULL
>> or corrupted when passed in to get_tags. It's used without checking as a
>> talloc context, and that call to talloc never returns.
>>
>
> Ok, I'll check some further. I am checking whether nm_thread is NULL
> though, [...]
Hi,
The stack trace that I get is as follows:
```
Stack trace of thread 15719:
#0 0x00007fc80cd9f2a8 raise (libc.so.6)
#1 0x00007fc80cda072a abort (libc.so.6)
#2 0x00007fc80c95889c n/a (libtalloc.so.2)
#3 0x00007fc80c95a02d talloc_named_const (libtalloc.so.2)
#4 0x00007fc814d674c5 _notmuch_string_list_create (libnotmuch.so.4)
#5 0x00007fc814d75f32 notmuch_thread_get_tags (libnotmuch.so.4)
#6 0x00000000004757cb _ZN7Astroid13NotmuchThread8get_tagsEP15_notmuch_thread (astroid)
```
this happens when:
1) start a long running query loading in the background
2) modify the db enough for the query to get invalidated.
as far as I can see, there is _no_ way to catch this error without
completely crashing the application. I would have to isolate this code
in a separate process or trap SIGABRT (which is certainly messy).
Best regards, Gaute
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: talloc_abort in notmuch_thread_get_tags () when db has been modified
2016-03-07 9:14 ` Gaute Hope
@ 2016-03-07 12:01 ` David Bremner
2017-02-15 22:58 ` Gaute Hope
0 siblings, 1 reply; 13+ messages in thread
From: David Bremner @ 2016-03-07 12:01 UTC (permalink / raw)
To: Gaute Hope, notmuch
Gaute Hope <eg@gaute.vetsj.com> writes:
> as far as I can see, there is _no_ way to catch this error without
> completely crashing the application. I would have to isolate this code
> in a separate process or trap SIGABRT (which is certainly messy).
I'm not sure what you expect libnotmuch to do here. There's a fatal
"should not happen" error in the memory allocator; it isn't really the
sort of thing one can recover from. It's also not in code we control.
Of course _why_ this error is happening could still be notmuch's
fault. Can you reproduce the problem under valgrind?
d
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: talloc_abort in notmuch_thread_get_tags () when db has been modified
2016-03-07 12:01 ` David Bremner
@ 2017-02-15 22:58 ` Gaute Hope
2017-02-17 12:28 ` David Bremner
0 siblings, 1 reply; 13+ messages in thread
From: Gaute Hope @ 2017-02-15 22:58 UTC (permalink / raw)
To: David Bremner, notmuch
[-- Attachment #1: Type: text/plain, Size: 1172 bytes --]
David Bremner writes on mars 7, 2016 13:01:
> Gaute Hope <eg@gaute.vetsj.com> writes:
>
>> as far as I can see, there is _no_ way to catch this error without
>> completely crashing the application. I would have to isolate this code
>> in a separate process or trap SIGABRT (which is certainly messy).
>
> I'm not sure what you expect libnotmuch to do here. There's a fatal
> "should not happen" error in the memory allocator; it isn't really the
> sort of thing one can recover from. It's also not in code we control.
>
> 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.
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.
Regards, Gaute
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: test_notmuch_standalone.cc --]
[-- Type: text/x-c++src; name=test_notmuch_standalone.cc, Size: 5178 bytes --]
# include <iostream>
# include <boost/filesystem.hpp>
# include <notmuch.h>
namespace bfs = boost::filesystem;
using std::cout;
using std::endl;
int main () {
bfs::path path_db = bfs::absolute (bfs::path("./test/mail/test_mail"));
notmuch_database_t * nm_db;
notmuch_status_t s =
notmuch_database_open (
path_db.c_str(),
notmuch_database_mode_t::NOTMUCH_DATABASE_MODE_READ_ONLY,
&nm_db);
cout << "db: running test query.." << endl;
notmuch_query_t * q = notmuch_query_create (nm_db, "*");
unsigned int c;
notmuch_status_t st = notmuch_query_count_threads_st (q, &c); // destructive
notmuch_query_destroy (q);
q = notmuch_query_create (nm_db, "*");
cout << "query: " << notmuch_query_get_query_string (q) << ", approx: "
<< c << " threads." << endl;
notmuch_threads_t * threads;
notmuch_thread_t * thread;
st = notmuch_query_search_threads_st (q, &threads);
std::string thread_id;
int i = 0;
for (; notmuch_threads_valid (threads);
notmuch_threads_move_to_next (threads)) {
thread = notmuch_threads_get (threads);
i++;
if (i == 3)
thread_id = notmuch_thread_get_thread_id (thread);
notmuch_thread_destroy (thread);
if (i == 3) break;
}
cout << "thread id to change: " << thread_id << ", thread no: " << i << endl;
notmuch_query_destroy (q);
/* restart query */
cout << "restarting query.." << endl;
q = notmuch_query_create (nm_db, "*");
st = notmuch_query_search_threads_st (q, &threads);
i = 0;
int stop = 2;
cout << "moving to thread: " << stop << endl;
for ( ; notmuch_threads_valid (threads);
notmuch_threads_move_to_next (threads))
{
thread = notmuch_threads_get (threads);
notmuch_thread_get_thread_id (thread);
i++;
cout << "tags: ";
/* get tags */
notmuch_tags_t *tags;
const char *tag;
for (tags = notmuch_thread_get_tags (thread);
notmuch_tags_valid (tags);
notmuch_tags_move_to_next (tags))
{
tag = notmuch_tags_get (tags);
cout << tag << " ";
}
cout << endl;
notmuch_thread_destroy (thread);
if (i == stop) break;
}
/* now open a new db instance, modify the already loaded thread and
* continue loading the original query */
notmuch_database_t * nm_db2;
s = notmuch_database_open (
path_db.c_str(),
notmuch_database_mode_t::NOTMUCH_DATABASE_MODE_READ_WRITE,
&nm_db2);
char qry_s[256];
sprintf (qry_s, "thread:%s", thread_id.c_str ());
notmuch_query_t * q2 = notmuch_query_create (nm_db2, qry_s);
notmuch_threads_t * ts2;
notmuch_thread_t * t2;
st = notmuch_query_search_threads_st (q2, &ts2);
for ( ; notmuch_threads_valid (ts2);
notmuch_threads_move_to_next (ts2))
{
t2 = notmuch_threads_get (ts2);
std::string thread_id = notmuch_thread_get_thread_id (t2);
/* remove unread tag */
notmuch_messages_t * ms = notmuch_thread_get_messages (t2);
notmuch_message_t * m;
for (; notmuch_messages_valid (ms); notmuch_messages_move_to_next (ms)) {
m = notmuch_messages_get (ms);
st = notmuch_message_remove_tag (m, "unread");
notmuch_message_destroy (m);
}
notmuch_messages_destroy (ms);
notmuch_thread_destroy (t2);
break;
}
notmuch_query_destroy (q2);
notmuch_database_close (nm_db2);
/* re-add unread tag */
s = notmuch_database_open (
path_db.c_str(),
notmuch_database_mode_t::NOTMUCH_DATABASE_MODE_READ_WRITE,
&nm_db2);
q2 = notmuch_query_create (nm_db2, qry_s);
st = notmuch_query_search_threads_st (q2, &ts2);
for ( ; notmuch_threads_valid (ts2);
notmuch_threads_move_to_next (ts2))
{
t2 = notmuch_threads_get (ts2);
std::string thread_id = notmuch_thread_get_thread_id (t2);
/* remove unread tag */
notmuch_messages_t * ms = notmuch_thread_get_messages (t2);
notmuch_message_t * m;
for (; notmuch_messages_valid (ms); notmuch_messages_move_to_next (ms)) {
m = notmuch_messages_get (ms);
st = notmuch_message_add_tag (m, "unread");
notmuch_message_destroy (m);
}
notmuch_messages_destroy (ms);
notmuch_thread_destroy (t2);
break;
}
notmuch_query_destroy (q2);
notmuch_database_close (nm_db2);
/* continue loading */
cout << "continue loading.." << endl;
for ( ; notmuch_threads_valid (threads);
notmuch_threads_move_to_next (threads))
{
if (threads == NULL) {
cout << "threads == NULL" << endl;
} else {
cout << "threads != NULL" << endl;
}
thread = notmuch_threads_get (threads);
cout << "loading: " << i;
std::string tid = notmuch_thread_get_thread_id (thread);
cout << ": " << tid << endl;
/* get tags */
notmuch_tags_t *tags;
const char *tag;
cout << "tags: ";
for (tags = notmuch_thread_get_tags (thread);
notmuch_tags_valid (tags);
notmuch_tags_move_to_next (tags))
{
tag = notmuch_tags_get (tags);
cout << tag << " ";
}
cout << endl;
i++;
notmuch_thread_destroy (thread);
}
notmuch_database_close (nm_db);
return 0;
}
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: talloc_abort in notmuch_thread_get_tags () when db has been modified
2017-02-15 22:58 ` Gaute Hope
@ 2017-02-17 12:28 ` David Bremner
2017-02-17 14:01 ` Gaute Hope
0 siblings, 1 reply; 13+ messages in thread
From: David Bremner @ 2017-02-17 12:28 UTC (permalink / raw)
To: Gaute Hope, notmuch
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?
> 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?
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: talloc_abort in notmuch_thread_get_tags () when db has been modified
2017-02-17 12:28 ` David Bremner
@ 2017-02-17 14:01 ` Gaute Hope
2017-02-17 15:35 ` David Bremner
0 siblings, 1 reply; 13+ messages in thread
From: Gaute Hope @ 2017-02-17 14:01 UTC (permalink / raw)
To: David Bremner, notmuch
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
```
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: talloc_abort in notmuch_thread_get_tags () when db has been modified
2017-02-17 14:01 ` Gaute Hope
@ 2017-02-17 15:35 ` David Bremner
2017-11-03 10:45 ` Gaute Hope
0 siblings, 1 reply; 13+ messages in thread
From: David Bremner @ 2017-02-17 15:35 UTC (permalink / raw)
To: Gaute Hope, notmuch
Gaute Hope <eg@gaute.vetsj.com> writes:
> threads != NULL
> terminate called after throwing an instance of 'Xapian::DatabaseModifiedError'
Yeah, that looks like a different problem. But it _should_ be something
we can catch in libnotmuch.
d
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: talloc_abort in notmuch_thread_get_tags () when db has been modified
2017-02-17 15:35 ` David Bremner
@ 2017-11-03 10:45 ` Gaute Hope
2017-11-03 12:02 ` Gaute Hope
0 siblings, 1 reply; 13+ messages in thread
From: Gaute Hope @ 2017-11-03 10:45 UTC (permalink / raw)
To: David Bremner, notmuch
David Bremner writes on februar 17, 2017 16:35:
> Gaute Hope <eg@gaute.vetsj.com> writes:
>
>> threads != NULL
>> terminate called after throwing an instance of 'Xapian::DatabaseModifiedError'
>
> Yeah, that looks like a different problem. But it _should_ be something
> we can catch in libnotmuch.
For reference; I'm getting several reports of this or similar error:
* https://github.com/astroidmail/astroid/issues/414
* https://github.com/astroidmail/astroid/blob/master/tests/test_notmuch_standalone.cc
Presently, I cannot reproduce it myself, but seems to be fairly
consistent for the users this happens with.
Not sure if this is talloc_abort() anymore.
Regards, Gaute
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: talloc_abort in notmuch_thread_get_tags () when db has been modified
2017-11-03 10:45 ` Gaute Hope
@ 2017-11-03 12:02 ` Gaute Hope
2017-11-03 12:18 ` David Bremner
0 siblings, 1 reply; 13+ messages in thread
From: Gaute Hope @ 2017-11-03 12:02 UTC (permalink / raw)
To: David Bremner, notmuch
Gaute Hope writes on november 3, 2017 11:45:
> David Bremner writes on februar 17, 2017 16:35:
>> Gaute Hope <eg@gaute.vetsj.com> writes:
>>
>>> threads != NULL
>>> terminate called after throwing an instance of 'Xapian::DatabaseModifiedError'
>>
>> Yeah, that looks like a different problem. But it _should_ be something
>> we can catch in libnotmuch.
>
> For reference; I'm getting several reports of this or similar error:
>
> * https://github.com/astroidmail/astroid/issues/414
> * https://github.com/astroidmail/astroid/blob/master/tests/test_notmuch_standalone.cc
>
> Presently, I cannot reproduce it myself, but seems to be fairly
> consistent for the users this happens with.
>
> Not sure if this is talloc_abort() anymore.
Actually, at this point this seems to be caused by different GMime
versions used for binary and notmuch library.
Regards, Gaute
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: talloc_abort in notmuch_thread_get_tags () when db has been modified
2017-11-03 12:02 ` Gaute Hope
@ 2017-11-03 12:18 ` David Bremner
2017-11-03 12:50 ` Gaute Hope
0 siblings, 1 reply; 13+ messages in thread
From: David Bremner @ 2017-11-03 12:18 UTC (permalink / raw)
To: Gaute Hope, notmuch
Gaute Hope <eg@gaute.vetsj.com> writes:
>> Not sure if this is talloc_abort() anymore.
>
> Actually, at this point this seems to be caused by different GMime
> versions used for binary and notmuch library.
>
> Regards, Gaute
OK, that sounds like not-a-notmuch-bug.
d
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: talloc_abort in notmuch_thread_get_tags () when db has been modified
2017-11-03 12:18 ` David Bremner
@ 2017-11-03 12:50 ` Gaute Hope
0 siblings, 0 replies; 13+ messages in thread
From: Gaute Hope @ 2017-11-03 12:50 UTC (permalink / raw)
To: David Bremner, notmuch
David Bremner writes on november 3, 2017 13:18:
> Gaute Hope <eg@gaute.vetsj.com> writes:
>
>>> Not sure if this is talloc_abort() anymore.
>>
>> Actually, at this point this seems to be caused by different GMime
>> versions used for binary and notmuch library.
>>
>> Regards, Gaute
>
> OK, that sounds like not-a-notmuch-bug.
Yes.. most definetely not.
- gaute
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2017-11-03 12:50 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
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
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).