[Dovecot] 1.0alpha1: new assert/core

Jeff A. Earickson jaearick at colby.edu
Wed Sep 7 18:23:15 EEST 2005


Hi,
    I saw a new assert and core dump today in 1.0alpha1.
Setup is Solaris 9, dovecot built with gcc 4.0.1, running
as imap server for mbox format.  The syslog said:

IMAP(user): file message-body-search.c: line 393 (message_body_search_ctx): assertion failed: (input->v_offset <= part->physical_pos)

A gdb analysis of the core dump is attached.  BTW, I save
core dumps in case you need further debugging done for an
assert.

On another note, I have also had issues with dovecot locking
up with "Too many open files" syslog error messages.  Last night,
after several hours of "too many open files" complaints, the
master dovecot process just died -- no core dump and no complaint
to syslog.  Per advice of the list, I have doubled the rlim_fd_cur 
and rlim_fd_max kernel parameters and rebooted my imap server. 
I also saw in my syslog:

Sep  6 16:48:53 emerald dovecot: [ID 956436 mail.error] pipe() failed: Too many open files
Sep  6 16:48:53 emerald dovecot: [ID 257797 mail.crit] dup2(stderr) failed: Bad file number

With students back, they have been giving dovecot a real hard
workout.

Jeff Earickson
Colby College
-------------- next part --------------
Script started on Wed Sep 07 11:03:16 2005
%gdb imap core.dbilar
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=0x82290 "file %s: line %d (%s): assertion failed: (%s)",
    args=0xffbff2b8) at failures.c:374
#3  0x00068f30 in i_panic (
    format=0x82290 "file %s: line %d (%s): assertion failed: (%s)")
    at failures.c:173
#4  0x00063244 in message_body_search_ctx (ctx=0xffbff3f4, input=0xb95f0,
    part=0xb1968) at message-body-search.c:395
#5  0x000632ec in message_body_search_ctx (ctx=0xffbff3f4, input=0xb95f0,
    part=0xb1918) at message-body-search.c:408
#6  0x000633ec in message_body_search (key=Variable "key" is not available.
) at message-body-search.c:436
#7  0x000430ac in search_body (arg=0xac168, context=0xffbff5d0)
    at index-search.c:448
#8  0x0005b1f0 in search_arg_foreach (arg=0xac168,
    callback=0x43048 <search_body>, context=0xffbff5d0) at mail-search.c:81
#9  0x0005b224 in mail_search_args_foreach (args=0xac168,
    callback=0x43048 <search_body>, context=0xffbff5d0) at mail-search.c:93
#10 0x000432e8 in search_arg_match_text (args=Variable "args" is not available.
) at index-search.c:528
#11 0x00043964 in search_match_next (ctx=0xad080) at index-search.c:795
#12 0x00043a14 in index_storage_search_next (_ctx=Variable "_ctx" is not available.
) at index-search.c:823
#13 0x0005bd84 in mailbox_search_next (ctx=Variable "ctx" is not available.
) at mail-storage.c:403
#14 0x000261d4 in imap_sort (cmd=0xa2ee8, charset=0xa32c0 "US-ASCII",
    args=0xac168, sort_program=Variable "sort_program" is not available.
) at imap-sort.c:247
#15 0x0001f668 in cmd_sort (cmd=0xa2ee8) at cmd-sort.c:123
#16 0x0002028c in cmd_uid (cmd=0xa2ee8) at cmd-uid.c:19
#17 0x00020c60 in client_handle_input (cmd=0xa2ee8) at client.c:334
#18 0x00020d68 in _client_input (context=Variable "context" is not available.
) at client.c:386
#19 0x0006e850 in io_loop_handler_run (ioloop=0xa0db0) at ioloop-poll.c:184
#20 0x0006e11c in io_loop_run (ioloop=0xa0db0) at ioloop.c:230
#21 0x00029348 in main (argc=0, argv=0xffbffbac, envp=0xffbffbb4) at main.c:229
(gdb) up 4
#4  0x00063244 in message_body_search_ctx (ctx=0xffbff3f4, input=0xb95f0,
    part=0xb1968) at message-body-search.c:395
395                     i_stream_skip(input, part->physical_pos - input->v_offset);
(gdb) print *ctx
$1 = {pool = 0x0, key = 0x98bd0 "LOBSTER", key_len = 7,
  charset = 0xa9460 "US-ASCII", unknown_charset = 0, search_header = 0}
(gdb) print *input
$2 = {v_offset = 1387, stream_errno = 0, mmaped = 0, closed = 0, seekable = 0,
  eof = 0, real_stream = 0xb95c8}
(gdb) print part    *part
$3 = {parent = 0xb1918, next = 0xb19b8, children = 0x0, physical_pos = 1384,
  header_size = {physical_size = 93, virtual_size = 98, lines = 0},
  body_size = {physical_size = 4312, virtual_size = 4428, lines = 116},
  flags = 72, context = 0x0}
(gdb) print found
$4 = 0
(gdb) print part->physical_pos
$5 = 1384
(gdb) print part->parte  ent
$6 = (struct message_part *) 0xb1918
(gdb) print *(part->part ent)
$7 = {parent = 0x0, next = 0x0, children = 0xb1968, physical_pos = 0,
  header_size = {physical_size = 1357, virtual_size = 1357, lines = 0},
  body_size = {physical_size = 8955, virtual_size = 9265, lines = 0},
  flags = 65, context = 0x0}
(gdb) print (*  *(part->next)
$8 = {parent = 0xb1918, next = 0x0, children = 0x0, physical_pos = 5816,
  header_size = {physical_size = 80, virtual_size = 84, lines = 0},
  body_size = {physical_size = 4387, virtual_size = 4566, lines = 179},
  flags = 72, context = 0x0}
(gdb) print in  *(input->real_stream)
$9 = {iostream = {pool = 0xb9598, refcount = 1, close = 0x615a0 <_close>,
    destroy = 0x615a8 <_destroy>,
    set_max_buffer_size = 0x615e4 <_set_max_buffer_size>},
  read = 0x61a20 <_read>, seek = 0x61b9c <_seek>, sync = 0x61cc4 <_sync>,
  stat = 0x61cd8 <_stat>, istream = {v_offset = 1387, stream_errno = 0,
    mmaped = 0, closed = 0, seekable = 0, eof = 0, real_stream = 0xb95c8},
  fd = -1,
  buffer = 0xb97c0 "X-Colby-MailScanner-From: gypsywolf at usadatanet.net\r\n\r\nypsywolf at usadatanet.net\r\n\r\ne Mail (2.482)\r\n003938F39A6 at usadatanet.net>\r\n16098F4F\r\n[66.218.28.113])\r\n", w_buffer = 0x0, line_str = 0x0,
  buffer_size = 0, abs_start_offset = 0, statbuf = {st_dev = 0, st_pad1 = {0,
      0, 0}, st_ino = 0, st_mode = 0, st_nlink = 0, st_uid = 0, st_gid = 0,
    st_rdev = 0, st_pad2 = {0, 0}, st_size = -1, st_atim = {
      tv_sec = 1126037478, tv_nsec = 0}, st_mtim = {tv_sec = 1126037478,
      tv_nsec = 0}, st_ctim = {tv_sec = 1126037478, tv_nsec = 0},
    st_blksize = 0, st_blocks = 0, st_fstype = '\0' <repeats 15 times>,
    st_pad4 = {0, 0, 0, 0, 0, 0, 0, 0}}, skip = 54, pos = 54}
(gdb) quit
%exit
exit

script done on Wed Sep 07 11:11:02 2005


More information about the dovecot mailing list