[Dovecot] Assertion failure in mail-index-transaction.c
I just noticed one instance of this in the current CVS version:
dovecot: Jul 18 15:25:48 Error: 5962 IMAP(mailuser): mbox sync: Expunged message reappeared in mailbox /mailhome/new/o/h/mailuser/mbox (UID 2834 < 2872)
dovecot: Jul 18 15:25:48 Error: 5962 IMAP(mailuser): file mail-index-transaction.c: line 129 (mail_index_buffer_convert_to_uids): assertion failed: (*seq != 0)
dovecot: Jul 18 15:25:48 Error: child 5962 (imap) killed with signal 6
(gdb) bt full #0 0xffffe410 in ?? () No symbol table info available. #1 0xbffff438 in ?? () No symbol table info available. #2 0x00000006 in ?? () No symbol table info available. #3 0x0000174a in ?? () No symbol table info available. #4 0xb7ef1d41 in raise () from /lib/tls/libc.so.6 No symbol table info available. #5 0xb7ef3529 in abort () from /lib/tls/libc.so.6 No symbol table info available. #6 0x0809a96a in i_internal_panic_handler ( fmt=0x6
, args=0x174a ) at failures.c:374 No locals. #7 0x0809ad84 in i_panic ( format=0x80a772c "file %s: line %d (%s): assertion failed: (%s)") at failures.c:173 No locals. #8 0x08082711 in mail_index_buffer_convert_to_uids (t=0x80d14b8, array=0x80d14d0, range=1) at mail-index-transaction.c:129 view = (struct mail_index_view *) 0x80cfdc0 rec = Variable "rec" is not available.(gdb) bt #0 0xffffe410 in ?? () #1 0xbffff438 in ?? () #2 0x00000006 in ?? () #3 0x0000174a in ?? () #4 0xb7ef1d41 in raise () from /lib/tls/libc.so.6 #5 0xb7ef3529 in abort () from /lib/tls/libc.so.6 #6 0x0809a96a in i_internal_panic_handler ( fmt=0x6
, args=0x174a ) at failures.c:374 #7 0x0809ad84 in i_panic ( format=0x80a772c "file %s: line %d (%s): assertion failed: (%s)") at failures.c:173 #8 0x08082711 in mail_index_buffer_convert_to_uids (t=0x80d14b8, array=0x80d14d0, range=1) at mail-index-transaction.c:129 #9 0x08083b87 in mail_index_transaction_commit (t=0x80d14b8, log_file_seq_r=0xbffff65c, log_file_offset_r=0xbffff660) at mail-index-transaction.c:183 #10 0x080703f4 in mbox_sync (mbox=0x80c5bc0, flags=Variable "flags" is not available. ) at mbox-sync.c:1623 #11 0x080710c9 in mbox_storage_sync_init (box=0x80c5bc0, flags=MAILBOX_SYNC_FLAG_FULL_READ) at mbox-sync.c:1700 #12 0x0808ef01 in mailbox_sync_init (box=0x0, flags=MAILBOX_SYNC_FLAG_FULL_READ) at mail-storage.c:334 #13 0x0805eb58 in imap_sync_nonselected (box=0x80c5bc0, flags=MAILBOX_SYNC_FLAG_FULL_READ) at imap-sync.c:166 #14 0x080580f6 in _cmd_select_full (cmd=0x80beba8, readonly=0) at cmd-select.c:39 #15 0x08058281 in cmd_select (cmd=0x80beba8) at cmd-select.c:92 #16 0x0805986b in _client_input (context=0x80beb68) at client.c:334 #17 0x0809ff3a in io_loop_handler_run (ioloop=0x80bd9b0) at ioloop-poll.c:184 #18 0x0809f569 in io_loop_run (ioloop=0x80bd9b0) at ioloop.c:218 #19 0x08060657 in main (argc=1, argv=0xbffffa34, envp=0xbffffa3c) at main.c:228(gdb) p seq
$1 = (uint32_t *) 0x80d4d18
(gdb) p *seq
$2 = 0
(gdb) p view->map
$3 = (struct mail_index_map *) 0x80c5fd0
(gdb) p *view->map
$4 = {refcount = 3, hdr = {major_version = 7 '\a', minor_version = 0 '\0',
base_header_size = 120, header_size = 200, record_size = 36,
compat_data = "\001\b\004", indexid = 1113829460, flags = 0,
uid_validity = 1113827022, next_uid = 2872, messages_count = 929,
recent_messages_count = 0, seen_messages_count = 810,
deleted_messages_count = 0, first_recent_uid_lowwater = 0,
first_unseen_uid_lowwater = 1149, first_deleted_uid_lowwater = 2846,
log_file_seq = 8, log_file_int_offset = 27912,
log_file_ext_offset = 27912, sync_size = 9241460, sync_stamp = 1113863658,
day_stamp = 1121659200, day_first_uid = {2855, 2849, 2849, 2753, 2753,
2753, 2491, 187}}, hdr_base = 0x80c60b0, records = 0x80c61d8,
records_count = 929, extension_pool = 0x80ce490, extensions = {
buffer = 0x80ce4c0, element_size = 28}, ext_id_map = {buffer = 0x80ce588,
element_size = 4}, mmap_base = 0x0, mmap_size = 0, mmap_used_size = 0,
buffer = 0x80c61b8, hdr_copy_buf = 0x80c6090, keyword_idx_map = {
buffer = 0x0, element_size = 0}, write_to_disk = 0}
(gdb) p t
$5 = (struct mail_index_transaction *) 0x80d14b8
(gdb) p *t
$6 = {refcount = 1, view = 0x80cfdc0, appends = {buffer = 0x80d4830,
element_size = 8}, first_new_seq = 930, last_new_seq = 953, expunges = {
buffer = 0x80d4810, element_size = 8}, updates = {buffer = 0x0,
element_size = 0}, last_update_idx = 0,
pre_hdr_change = '\0'
On Mon, 2005-07-18 at 17:52 -0400, Todd Burroughs wrote:
I just noticed one instance of this in the current CVS version:
dovecot: Jul 18 15:25:48 Error: 5962 IMAP(mailuser): mbox sync: Expunged message reappeared in mailbox /mailhome/new/o/h/mailuser/mbox (UID 2834 < 2872)
I made some changes to the code which caused this. The check for this error was actually wrong, and I don't think this error should ever have actually occured. I added an extra assert there, so it probably starts crashing in that assert the next time it happens. Then it would be nice to get these variables:
p *sync_ctx.sync_view.map p *sync_ctx.sync_view.index.map
You were running with mmap_disable=yes I think?
participants (2)
-
Timo Sirainen
-
Todd Burroughs