[Dovecot] 1.0alpha2: two asserts/cores

Jeff A. Earickson jaearick at colby.edu
Mon Sep 19 16:26:59 EEST 2005


Hi,
    Two cores over the weekend, same assert message in syslog:

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

Setup: Solaris 9, imap usage only, mbox format, dovecot compiled
with gcc 4.0.1.

gdb sessions of the two core files attached.  Let me know if you
need further analysis of the cores.

Jeff Earickson
Colby College
-------------- next part --------------
Script started on Mon Sep 19 09:00:31 2005
%bgdb
%stty erase 
%dgdb imap core.acroman
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  0x000695c4 in i_internal_panic_handler (
    fmt=0x82578 "file %s: line %d (%s): assertion failed: (%s)",
    args=0xffbff210) at failures.c:374
#3  0x000690a8 in i_panic (
    format=0x82578 "file %s: line %d (%s): assertion failed: (%s)")
    at failures.c:173
#4  0x000633bc in message_body_search_ctx (ctx=0xffbff3dc, input=0xb9ca0,
    part=0xb21d8) at message-body-search.c:395
#5  0x00063464 in message_body_search_ctx (ctx=0xffbff3dc, input=0xb9ca0,
    part=0xb2188) at message-body-search.c:408
#6  0x00063464 in message_body_search_ctx (ctx=0xffbff3dc, input=0xb9ca0,
    part=0xb20e8) at message-body-search.c:408
#7  0x00063564 in message_body_search (key=Variable "key" is not available.
) at message-body-search.c:436
#8  0x000430fc in search_body (arg=0xac960, context=0xffbff5b8)
    at index-search.c:448
#9  0x0005b350 in search_arg_foreach (arg=0xac960,
    callback=0x43098 <search_body>, context=0xffbff5b8) at mail-search.c:81
#10 0x0005b384 in mail_search_args_foreach (args=0xac960,
    callback=0x43098 <search_body>, context=0xffbff5b8) at mail-search.c:93
#11 0x00043338 in search_arg_match_text (args=Variable "args" is not available.
) at index-search.c:528
#12 0x000439b4 in search_match_next (ctx=0xad850) at index-search.c:795
#13 0x00043a64 in index_storage_search_next (_ctx=Variable "_ctx" is not available.
) at index-search.c:823
#14 0x0005befc in mailbox_search_next (ctx=Variable "ctx" is not available.
) at mail-storage.c:408
#15 0x000261d4 in imap_sort (cmd=0xa3210, charset=0xa35e8 "US-ASCII",
    args=0xac938, sort_program=Variable "sort_program" is not available.
) at imap-sort.c:247
#16 0x0001f668 in cmd_sort (cmd=0xa3210) at cmd-sort.c:123
#17 0x0002028c in cmd_uid (cmd=0xa3210) at cmd-uid.c:19
#18 0x00020c60 in client_handle_input (cmd=0xa3210) at client.c:334
#19 0x00020d68 in _client_input (context=Variable "context" is not available.
) at client.c:386
#20 0x0006ea7c in io_loop_handler_run (ioloop=0xa10d8) at ioloop-poll.c:184
#21 0x0006e348 in io_loop_run (ioloop=0xa10d8) at ioloop.c:230
#22 0x00029348 in main (argc=0, argv=0xffbffb94, envp=0xffbffb9c) at main.c:229
(gdb) up 4
#4  0x000633bc in message_body_search_ctx (ctx=0xffbff3dc, input=0xb9ca0,
    part=0xb21d8) at message-body-search.c:395
395                     i_stream_skip(input, part->physical_pos - input->v_offset);
(gdb) print *ctx
$1 = {pool = 0x0, key = 0x98f00 "MEETING", key_len = 7,
  charset = 0xa9788 "US-ASCII", unknown_charset = 0, search_header = 0}
(gdb) print *input
$2 = {v_offset = 1530, stream_errno = 0, mmaped = 0, closed = 0, seekable = 0,
  eof = 0, real_stream = 0xb9c78}
(gdb) print *part
$3 = {parent = 0xb2188, next = 0x0, children = 0xb2228, physical_pos = 1500,
  header_size = {physical_size = 857, virtual_size = 875, lines = 0},
  body_size = {physical_size = 551367, virtual_size = 558548, lines = 0},
  flags = 65, context = 0x0}
(gdb) up
#5  0x00063464 in message_body_search_ctx (ctx=0xffbff3dc, input=0xb9ca0,
    part=0xb2188) at message-body-search.c:408
408                             if (message_body_search_ctx(ctx, input, part->children))
(gdb) print *ctx
$4 = {pool = 0x0, key = 0x98f00 "MEETING", key_len = 7,
  charset = 0xa9788 "US-ASCII", unknown_charset = 0, search_header = 0}
(gdb) print *input
$5 = {v_offset = 1530, stream_errno = 0, mmaped = 0, closed = 0, seekable = 0,
  eof = 0, real_stream = 0xb9c78}
(gdb) print *part
$6 = {parent = 0xb20e8, next = 0x0, children = 0xb21d8, physical_pos = 1470,
  header_size = {physical_size = 30, virtual_size = 32, lines = 0},
  body_size = {physical_size = 552224, virtual_size = 559423, lines = 7199},
  flags = 68, context = 0x0}
(gdb) up
#6  0x00063464 in message_body_search_ctx (ctx=0xffbff3dc, input=0xb9ca0,
    part=0xb20e8) at message-body-search.c:408
408                             if (message_body_search_ctx(ctx, input, part->children))
(gdb) print *ctx
$7 = {pool = 0x0, key = 0x98f00 "MEETING", key_len = 7,
  charset = 0xa9788 "US-ASCII", unknown_charset = 0, search_header = 0}
(gdb) print *input
$8 = {v_offset = 1530, stream_errno = 0, mmaped = 0, closed = 0, seekable = 0,
  eof = 0, real_stream = 0xb9c78}
(gdb) print *part
$9 = {parent = 0x0, next = 0x0, children = 0xb2138, physical_pos = 0,
  header_size = {physical_size = 830, virtual_size = 830, lines = 0},
  body_size = {physical_size = 552941, virtual_size = 560164, lines = 0},
  flags = 65, context = 0x0}
(gdb) print part->children
$10 = (struct message_part *) 0xb2138
(gdb) print *(part->children)
$11 = {parent = 0xb20e8, next = 0xb2188, children = 0x0, physical_pos = 911,
  header_size = {physical_size = 1, virtual_size = 2, lines = 0}, body_size = {
    physical_size = 513, virtual_size = 527, lines = 14}, flags = 72,
  context = 0x0}
(gdb) down
#5  0x00063464 in message_body_search_ctx (ctx=0xffbff3dc, input=0xb9ca0,
    part=0xb2188) at message-body-search.c:408
408                             if (message_body_search_ctx(ctx, input, part->children))
(gdb) print *(part->children)
$12 = {parent = 0xb2188, next = 0x0, children = 0xb2228, physical_pos = 1500,
  header_size = {physical_size = 857, virtual_size = 875, lines = 0},
  body_size = {physical_size = 551367, virtual_size = 558548, lines = 0},
  flags = 65, context = 0x0}
(gdb) down
#4  0x000633bc in message_body_search_ctx (ctx=0xffbff3dc, input=0xb9ca0,
    part=0xb21d8) at message-body-search.c:395
395                     i_stream_skip(input, part->physical_pos - input->v_offset);
(gdb) print *(part->children)
$13 = {parent = 0xb21d8, next = 0xb2278, children = 0x0, physical_pos = 2439,
  header_size = {physical_size = 58, virtual_size = 61, lines = 0},
  body_size = {physical_size = 3, virtual_size = 6, lines = 3}, flags = 72,
  context = 0x0}
(gdb) quit
%ls -lexit
script done on Mon Sep 19 09:07:34 2005
-------------- next part --------------
Script started on Mon Sep 19 09:15:44 2005
%gdb imap core.tjstenov
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  0x000695c4 in i_internal_panic_handler (
    fmt=0x82578 "file %s: line %d (%s): assertion failed: (%s)",
    args=0xffbff298) at failures.c:374
#3  0x000690a8 in i_panic (
    format=0x82578 "file %s: line %d (%s): assertion failed: (%s)")
    at failures.c:173
#4  0x000633bc in message_body_search_ctx (ctx=0xffbff3d4, input=0x21c490,
    part=0x22cd88) at message-body-search.c:395
#5  0x00063464 in message_body_search_ctx (ctx=0xffbff3d4, input=0x21c490,
    part=0x22cd38) at message-body-search.c:408
#6  0x00063564 in message_body_search (key=Variable "key" is not available.
) at message-body-search.c:436
#7  0x000430fc in search_body (arg=0x1f5e80, context=0xffbff5b0)
    at index-search.c:448
#8  0x0005b350 in search_arg_foreach (arg=0x1f5e80,
    callback=0x43098 <search_body>, context=0xffbff5b0) at mail-search.c:81
#9  0x0005b384 in mail_search_args_foreach (args=0x1f5e80,
    callback=0x43098 <search_body>, context=0xffbff5b0) at mail-search.c:93
#10 0x00043338 in search_arg_match_text (args=Variable "args" is not available.
) at index-search.c:528
#11 0x000439b4 in search_match_next (ctx=0xaaac8) at index-search.c:795
#12 0x00043a64 in index_storage_search_next (_ctx=Variable "_ctx" is not available.
) at index-search.c:823
#13 0x0005befc in mailbox_search_next (ctx=Variable "ctx" is not available.
) at mail-storage.c:408
#14 0x000261d4 in imap_sort (cmd=0xa3210, charset=0xa35e0 "US-ASCII",
    args=0x1f5e80, sort_program=Variable "sort_program" is not available.
) at imap-sort.c:247
#15 0x0001f668 in cmd_sort (cmd=0xa3210) at cmd-sort.c:123
#16 0x0002028c in cmd_uid (cmd=0xa3210) at cmd-uid.c:19
#17 0x00020c60 in client_handle_input (cmd=0xa3210) at client.c:334
#18 0x00020d68 in _client_input (context=Variable "context" is not available.
) at client.c:386
#19 0x0006ea7c in io_loop_handler_run (ioloop=0xa10d8) at ioloop-poll.c:184
#20 0x0006e348 in io_loop_run (ioloop=0xa10d8) at ioloop.c:230
#21 0x00029348 in main (argc=0, argv=0xffbffb8c, envp=0xffbffb94) at main.c:229
(gdb) up 4
#4  0x000633bc in message_body_search_ctx (ctx=0xffbff3d4, input=0x21c490,
    part=0x22cd88) at message-body-search.c:395
395                     i_stream_skip(input, part->physical_pos - input->v_offset);
(gdb) print *ctx
$1 = {pool = 0x0, key = 0x98f00 "MEETING", key_len = 7,
  charset = 0x1ab630 "US-ASCII", unknown_charset = 0, search_header = 0}
(gdb) print *input
$2 = {v_offset = 676, stream_errno = 0, mmaped = 0, closed = 0, seekable = 0,
  eof = 0, real_stream = 0x21c468}
(gdb) print *part
$3 = {parent = 0x22cd38, next = 0x0, children = 0x22cdd8, physical_pos = 673,
  header_size = {physical_size = 104, virtual_size = 108, lines = 0},
  body_size = {physical_size = 28014, virtual_size = 28393, lines = 0},
  flags = 65, context = 0x0}
(gdb)  up
#5  0x00063464 in message_body_search_ctx (ctx=0xffbff3d4, input=0x21c490,
    part=0x22cd38) at message-body-search.c:408
408                             if (message_body_search_ctx(ctx, input, part->children))
(gdb) print part    *part
$4 = {parent = 0x0, next = 0x0, children = 0x22cd88, physical_pos = 0,
  header_size = {physical_size = 646, virtual_size = 646, lines = 0},
  body_size = {physical_size = 28174, virtual_size = 28561, lines = 0},
  flags = 65, context = 0x0}
(gdb)  up
#6  0x00063564 in message_body_search (key=Variable "key" is not available.
) at message-body-search.c:436
436             return message_body_search_ctx(&ctx, input, part);
(gdb) print *key
Variable "key" is not available.
(gdb) print ctx
$5 = {pool = 0x0, key = 0x98f00 "MEETING", key_len = 7,
  charset = 0x1ab630 "US-ASCII", unknown_charset = 0, search_header = 0}
(gdb) print input
$6 = (struct istream *) 0x21c490
(gdb) print *input
$7 = {v_offset = 676, stream_errno = 0, mmaped = 0, closed = 0, seekable = 0,
  eof = 0, real_stream = 0x21c468}
(gdb) print part
$8 = (const struct message_part *) 0x22cd38
(gdb) print *part
$9 = {parent = 0x0, next = 0x0, children = 0x22cd88, physical_pos = 0,
  header_size = {physical_size = 646, virtual_size = 646, lines = 0},
  body_size = {physical_size = 28174, virtual_size = 28561, lines = 0},
  flags = 65, context = 0x0}
(gdb) up
#7  0x000430fc in search_body (arg=0x1f5e80, context=0xffbff5b0)
    at index-search.c:448
448                     ret = message_body_search(arg->value.str,
(gdb) print *arg
$10 = {next = 0x0, type = SEARCH_BODY, value = {subargs = 0x0, seqset = 0x0,
    str = 0x1f5ea8 "meeting"}, context = 0x0, hdr_field_name = 0x0, not = 0,
  match_always = 0, result = -1}
(gdb) print *context
Attempt to dereference a generic pointer.
(gdb) print (struct search_body_context *) contec xt
$11 = (struct search_body_context *) 0xffbff5b0
(gdb) print (struct search_body_context *  ) context
$12 = {index_ctx = 0xffbff5b0, input = 0x21c490, part = 0x0}
(gdb) quit
%lexit
exit

script done on Mon Sep 19 09:21:19 2005


More information about the dovecot mailing list