[Dovecot] 1.0alpha1: assert and core

Jeff A. Earickson jaearick at colby.edu
Fri Aug 26 15:53:11 EEST 2005


Hi,

I've been running 1.0alpha1 in production since August 18, and
got my first assert and core yesterday.  Otherwise it has been 
running flawlessly.

My setup: Sun E220R, Solaris 9, compiled dovecot with gcc 4.0.1,
configured dovecot like so:

#!/usr/bin/sh
VERSION=1.0-alpha1
CC=gcc CFLAGS="-g -O" CPPFLAGS=-I/opt/openssl/include LDFLAGS=-L/opt/openssl/lib \
./configure --prefix=/opt/dovecot.$VERSION --with-ssl=openssl \
--with-ssldir=/opt/openssl/ssl  > configure.out

The syslog message:

Aug 25 04:15:43 emerald dovecot: [ID 107833 mail.error] IMAP(user): file mbox-sync-update.c: line 442 (mbox_sync_update_header_from): assertion failed: (ctx->mail.uid == 0 || ctx->mail.uid_broken || ctx->mail.uid == mail->uid)

Gdb analysis of the resulting core file is attached, I hope this
helps.  The user's mailbox is 41003432 bytes in size.

Jeff Earickson
Colby College
-------------- next part --------------
Script started on Fri Aug 26 08:42:32 2005
%gdb imap core
GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "sparc-sun-solaris2.9"...
Core was generated by `imap'.
Program terminated with signal 6, Aborted.
Reading symbols from /usr/lib/libdl.so.1...done.
Loaded symbols for /usr/lib/libdl.so.1
Reading symbols from /usr/lib/libsocket.so.1...done.
Loaded symbols for /usr/lib/libsocket.so.1
Reading symbols from /usr/lib/libnsl.so.1...done.
Loaded symbols for /usr/lib/libnsl.so.1
Reading symbols from /usr/lib/librt.so.1...done.
Loaded symbols for /usr/lib/librt.so.1
Reading symbols from /usr/lib/libsendfile.so.1...done.
Loaded symbols for /usr/lib/libsendfile.so.1
Reading symbols from /usr/lib/libc.so.1...done.
Loaded symbols for /usr/lib/libc.so.1
Reading symbols from /usr/lib/libmp.so.2...done.
Loaded symbols for /usr/lib/libmp.so.2
Reading symbols from /usr/lib/libaio.so.1...done.
Loaded symbols for /usr/lib/libaio.so.1
Reading symbols from /usr/lib/libmd5.so.1...done.
Loaded symbols for /usr/lib/libmd5.so.1
Reading symbols from /usr/platform/SUNW,Ultra-1/lib/libc_psr.so.1...done.
Loaded symbols for /usr/platform/SUNW,Ultra-60/lib/libc_psr.so.1
#0  0xff2201a0 in _libc_kill () from /usr/lib/libc.so.1
(gdb) backtrace
#0  0xff2201a0 in _libc_kill () from /usr/lib/libc.so.1
#1  0xff1b6ce0 in abort () from /usr/lib/libc.so.1
#2  0x0006944c in i_internal_panic_handler (
    fmt=0x7d1c0 "file %s: line %d (%s): assertion failed: (%s)",
    args=0xffbff288) at failures.c:374
#3  0x00068f30 in i_panic (
    format=0x7d1c0 "file %s: line %d (%s): assertion failed: (%s)")
    at failures.c:173
#4  0x0003f2d8 in mbox_sync_update_header_from (ctx=0xffbff318, mail=0xbf930)
    at mbox-sync-update.c:443
#5  0x0003db18 in mbox_sync_read_and_move (sync_ctx=0xffbff708, mails=Variable "mails" is not available.
)
    at mbox-sync-rewrite.c:353
#6  0x0003e07c in mbox_sync_rewrite (sync_ctx=0xffbff708, end_offset=The value of variable 'end_offset' is distributed across several
locations, and GDB cannot access its value.

)
    at mbox-sync-rewrite.c:473
#7  0x00039570 in mbox_sync_handle_missing_space (mail_ctx=0xffbff5d8)
    at mbox-sync.c:827
#8  0x00039c00 in mbox_sync_loop (sync_ctx=0xffbff708, mail_ctx=0xffbff5d8,
    partial=0) at mbox-sync.c:1125
#9  0x0003a94c in mbox_sync_do (sync_ctx=0xffbff708, flags=Variable "flags" is not available.
)
    at mbox-sync.c:1458
#10 0x0003afe0 in mbox_sync (mbox=0xaa438, flags=MBOX_SYNC_REWRITE)
    at mbox-sync.c:1692
#11 0x000335bc in mbox_storage_close (box=0xaa438) at mbox-storage.c:955
#12 0x0005bb7c in mailbox_close (box=Variable "box" is not available.
) at mail-storage.c:298
#13 0x000202fc in cmd_unselect (cmd=0xa2ee8) at cmd-unselect.c:18
#14 0x00020c60 in client_handle_input (cmd=0xa2ee8) at client.c:334
#15 0x00020d68 in _client_input (context=Variable "context" is not available.
) at client.c:386
#16 0x0006e850 in io_loop_handler_run (ioloop=0xa0db0) at ioloop-poll.c:184
#17 0x0006e11c in io_loop_run (ioloop=0xa0db0) at ioloop.c:230
#18 0x00029348 in main (argc=0, argv=0xffbffba4, envp=0xffbffbac) at main.c:229
(gdb) up 4
#4  0x0003f2d8 in mbox_sync_update_header_from (ctx=0xffbff318, mail=0xbf930)
    at mbox-sync-update.c:443
443             ctx->mail.uid = mail->uid;
(gdb) print ctx
$1 = (struct mbox_sync_mail_context *) 0xffbff318
(gdb) print *ctx
$2 = {sync_ctx = 0xffbff708, mail = {uid = 1655, idx_seq = 0, keywords = {
      buffer = 0x0, element_size = 0}, flags = 0 '\0', uid_broken = 0,
    from_offset = 0, body_size = 1151, offset = 6525755, space = 0},
  seq = 634, hdr_offset = 6525755, body_offset = 6526652,
  header_first_change = 866, header_last_change = 4294967295,
  header = 0xb63d8, hdr_md5_sum = "?`\a[;\017\020.?\224\237K?\231??",
  content_length = 18446744073709551615, hdr_pos = {841, 4294967295, 866, 853,
    874}, parsed_uid = 1655, last_uid_value_start_pos = 0, have_eoh = 1,
  need_rewrite = 0, seen_imapbase = 0, pseudo = 0, updated = 0, recent = 0,
  dirty = 0, imapbase_rewrite = 0, imapbase_updated = 0}
(gdb) print *mail
$3 = {uid = 1644, idx_seq = 1644, keywords = {buffer = 0x0, element_size = 0},
  flags = 0 '\0', uid_broken = 1, from_offset = 6525704, body_size = 1151,
  offset = 6525755, space = -4}
(gdb) print ctx->mail.uid_broken
$4 = 0
(gdb) print ctx->mail.uid
$5 = 1655
(gdb) print mail. ->uid
$6 = 1644
(gdb) print ctx->mail.keywords
$7 = {buffer = 0x0, element_size = 0}
(gdb) print &ctx->mail.keywords
$8 = (array_t *) 0xffbff328
(gdb) print ctx->mail.keywords.buffer
$9 = (buffer_t *) 0x0
(gdb) quit
%exit
exit

script done on Fri Aug 26 08:49:29 2005


More information about the dovecot mailing list