[Dovecot] Panic 1.1.4

Andre Hübner andre.huebner at gmx.de
Thu Oct 23 10:33:29 EEST 2008


Hi,


> So it happens regularly? Can you reproduce it? I can't really see how
> it's crashing. Could you apply the attached patch, and also compile the
> lib/*.c and lib-mail/istream-header-filter.c without -O2 so the
> backtrace will be more usable? (I usually do it by removing -O2 from the
> subdirs' Makefile and then make clean + make in those subdirs.)

reproducing is not easy, it happens on more frequented customer-servers,  on 
my testmachine is not enough traffic
but  i have a new core ;) same user was affected. i patched dovecot 1.1.4 
like you told and compiled it without -O2

Thats what i got:

dovecot -n
# 1.1.4: /etc/dovecot.conf
protocols: imap imaps pop3 pop3s
ssl_ca_file: /path/to/*.servername.com.bundle.crt
ssl_cert_file: /path/to/*.servername.com.crt
ssl_key_file: /path/to/*.servername.com.key
disable_plaintext_auth: no
login_dir: /var/run/dovecot/login
login_executable(default): /usr/libexec/dovecot/imap-login
login_executable(imap): /usr/libexec/dovecot/imap-login
login_executable(pop3): /usr/libexec/dovecot/pop3-login
login_greeting: servername.com mailserver ready.
login_process_per_connection: no
login_processes_count: 1
max_mail_processes: 100
verbose_proctitle: yes
mail_location: mbox:~/mail:INBOX=/var/spool/mail/%u
mail_cache_min_mail_count: 30
mail_debug: yes
lock_method: flock
mbox_read_locks: dotlock
mbox_very_dirty_syncs: yes
mail_drop_priv_before_exec: yes
mail_executable(default): /usr/libexec/dovecot/imap
mail_executable(imap): /usr/libexec/dovecot/imap
mail_executable(pop3): /usr/libexec/dovecot/pop3
mail_plugins(default): mail_log
mail_plugins(imap): mail_log
mail_plugins(pop3):
mail_plugin_dir(default): /usr/lib/dovecot/imap
mail_plugin_dir(imap): /usr/lib/dovecot/imap
mail_plugin_dir(pop3): /usr/lib/dovecot/pop3
imap_client_workarounds(default): outlook-idle netscape-eoh 
tb-extra-mailbox-sep delay-newmail
imap_client_workarounds(imap): outlook-idle netscape-eoh 
tb-extra-mailbox-sep delay-newmail
imap_client_workarounds(pop3):
pop3_client_workarounds(default):
pop3_client_workarounds(imap):
pop3_client_workarounds(pop3): oe-ns-eoh outlook-no-nuls
auth default:
  verbose: yes
  passdb:
    driver: shadow
  userdb:
    driver: passwd



gdb /usr/libexec/dovecot/imap /home/popuser/username/core
GNU gdb 6.4
Copyright 2005 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 "i586-suse-linux"...Using host libthread_db 
library "/lib/libthread_db.so.1".

Core was generated by `imap [username 78.69.54.113]'.
Program terminated with signal 6, Aborted.

warning: Can't read pathname for load map: Eingabe-/Ausgabefehler.
Reading symbols from /lib/libdl.so.2...done.
Loaded symbols for /lib/libdl.so.2
Reading symbols from /lib/libc.so.6...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Reading symbols from /usr/lib/dovecot/imap/lib20_mail_log_plugin.so...done.
Loaded symbols for /usr/lib/dovecot/imap/lib20_mail_log_plugin.so
Reading symbols from /lib/libnss_files.so.2...done.
Loaded symbols for /lib/libnss_files.so.2
Reading symbols from /lib/libgcc_s.so.1...done.
Loaded symbols for /lib/libgcc_s.so.1
#0  0xffffe410 in __kernel_vsyscall ()
(gdb) fr 6
#6  0x080eb86d in i_stream_read (stream=0x813eac0) at istream.c:82
82      istream.c: Datei oder Verzeichnis nicht gefunden.
        in istream.c
(gdb) p *stream.parent
There is no member named parent.
(gdb) p *stream.parent.real_stream
There is no member named parent.
(gdb) bt full
#0  0xffffe410 in __kernel_vsyscall ()
No symbol table info available.
#1  0xb7ecd7d0 in raise () from /lib/libc.so.6
No symbol table info available.
#2  0xb7eceea3 in abort () from /lib/libc.so.6
No symbol table info available.
#3  0x080e608f in default_fatal_finish (type=LOG_TYPE_PANIC, status=0) at 
failures.c:150
        backtrace = 0x811eb20 "imap [0x80e606d] -> imap [0x80e68d8] -> 
imap(i_fatal+0) [0x80e61e7] -> imap(i_stream_read+0xdc) [0x80eb86d] -> 
imap(i_stream_read_data+0x4b) [0x80ec07f] -> 
imap(message_parse_header_next+0xfd) [0x80dc"...
#4  0x080e68d8 in i_internal_fatal_handler (type=LOG_TYPE_PANIC, status=0, 
fmt=0x8111c38 "file %s: line %d (%s): assertion failed: (%s)",
    args=0xbfb05e34 ".\034\021\bR") at failures.c:430
No locals.
#5  0x080e61e7 in i_panic (format=0x8111c38 "file %s: line %d (%s): 
assertion failed: (%s)") at failures.c:197
        args = 0xbfb05e34 ".\034\021\bR"
#6  0x080eb86d in i_stream_read (stream=0x813eac0) at istream.c:82
        _stream = (struct istream_private *) 0x813ea98
        ret = -1
        orig_count = 64
        __PRETTY_FUNCTION__ = "i_stream_read"
#7  0x080ec07f in i_stream_read_data (stream=0x813eac0, data_r=0xbfb05ee0, 
size_r=0xbfb05edc, threshold=64) at istream.c:303
        ret = 0
        read_more = false
        __PRETTY_FUNCTION__ = "i_stream_read_data"
#8  0x080dc8fa in message_parse_header_next (ctx=0x8138cf0, 
hdr_r=0xbfb05f6c) at message-header-parser.c:89
        line = (struct message_header_line *) 0x8138cf0
        msg = (
    const unsigned char *) 0x8136b35 
"eQ4TJNHy2PNaxiJiub1zAQla5uSWXbFNL0EMJ+N9lJDzhnvdf301eNZ0TAR9E/u+Gf+Pe5//Eft7\n2Gy9Mj5////21n/978iM2Iy4j/s0Ne5d34/PTZraHIQYZj3EgiF6WAwuiAOAwGmfb9jyZPYe2jWj\nLswhKDsgDj8jBDBPW27lUMFXn6gNLuNBoKiHnGtw27kdxf"...
        i = 63
        size = 64
        startpos = 63
        colon_pos = 4294967295
        parse_size = 63
        value_pos = 3216006936
        ret = 1
        continued = false
        continues = false
        last_no_newline = 56
        last_crlf = 237
        no_newline = false
        crlf_newline = false
#9  0x080d8e2f in read_header (mstream=0x813eb78) at 
istream-header-filter.c:163
        hdr = (struct message_header_line *) 0x0
        highwater_offset = 452
        pos = 77
        ret = 77
        matched = false
        hdr_ret = 1
        __PRETTY_FUNCTION__ = "read_header"
#10 0x080d91a4 in i_stream_header_filter_read (stream=0x813eb78) at 
istream-header-filter.c:293
        mstream = (struct header_filter_istream *) 0x813eb78
        ret = 135523672
        pos = 0
#11 0x080d93c3 in parse_header (mstream=0x813eb78) at 
istream-header-filter.c:333
        pos = 77
#12 0x080d943a in i_stream_header_filter_seek (stream=0x813eb78, 
v_offset=2396, mark=false) at istream-header-filter.c:347
        mstream = (struct header_filter_istream *) 0x813eb78
#13 0x080ebbb9 in i_stream_seek (stream=0x813eba0, v_offset=2396) at 
istream.c:148
        _stream = (struct istream_private *) 0x813eb78
---Type <return> to continue, or q <return> to quit---
#14 0x0807a946 in mbox_mail_get_physical_size (_mail=0x813a0a0, 
size_r=0xbfb06178) at mbox-mail.c:255
        mail = (struct index_mail *) 0x813a0a0
        data = (struct index_mail_data *) 0x813a11c
        mbox = (struct mbox_mailbox *) 0x8130030
        input = (struct istream *) 0x813eba0
        hdr_size = {physical_size = 1944, virtual_size = 1986, lines = 42}
        old_offset = 2396
        body_offset = 322633803
        body_size = 452
        next_offset = 289381720
#15 0x080a3d37 in mail_get_physical_size (mail=0x813a0a0, size_r=0xbfb06178) 
at mail.c:100
        p = (struct mail_private *) 0x813a0a0
#16 0xb7fd0833 in mail_log_action (dest_trans=0x8139120, mail=0x813a0a0, 
event=MAIL_LOG_EVENT_COPY, data=0x81340d8 "Trash") at mail-log-plugin.c:305
        lt = (struct mail_log_transaction_context *) 0x8142690
        msgid = 0x813a99c "<24697.ashish at abram> "
        size = 2396
        str = (string_t *) 0x811e898
        pool = (pool_t) 0x8142678
#17 0xb7fd0c40 in mail_log_copy (t=0x8139120, mail=0x813a0a0, 
flags=MAIL_SEEN, keywords=0x813ea30, dest_mail=0x0) at mail-log-plugin.c:400
        _data_stack_cur_id = 4
        lbox = (union mailbox_module_context *) 0x8134118
        name = 0x81340d8 "Trash"
#18 0x080a6f9b in mailbox_copy (t=0x8139120, mail=0x813a0a0, 
flags=MAIL_SEEN, keywords=0x813ea30, dest_mail=0x0) at mail-storage.c:761
No locals.
#19 0x0805a776 in fetch_and_copy (client=0x8127548, destbox=0x8133f40, 
t=0x8139120, search_args=0x8128a10, src_uidset_r=0xbfb06294, 
copy_count_r=0xbfb06290)
    at cmd-copy.c:66
        search_ctx = (struct mail_search_context *) 0x8139fe8
        src_trans = (struct mailbox_transaction_context *) 0x81399c8
        keywords = (struct mail_keywords *) 0x813ea30
        keywords_list = (const char * const *) 0x813a968
        mail = (struct mail *) 0x813a0a0
        copy_count = 1
        srcset_ctx = {str = 0x811e320, first_uid = 0, last_uid = 4294967295}
        src_uidset = (string_t *) 0x811e320
        ret = 1
#20 0x0805aa0e in cmd_copy (cmd=0x81289c8) at cmd-copy.c:136
        client = (struct client *) 0x8127548
        storage = (struct mail_storage *) 0x8128108
        destbox = (struct mailbox *) 0x8133f40
        t = (struct mailbox_transaction_context *) 0x8139120
        search_arg = (struct mail_search_arg *) 0x8128a10
        messageset = 0x812cac8 "6918"
        mailbox = 0x812cad0 "Trash"
        src_uidset = 0x0
        msg = 0x0
        sync_flags = 0
        imap_flags = 0
        copy_count = 3086937280
        uid_validity = 135428860
        uid1 = 25
        uid2 = 135428860
        ret = 35
        __PRETTY_FUNCTION__ = "cmd_copy"
#21 0x08060173 in cmd_uid (cmd=0x81289c8) at cmd-uid.c:26
        command = (struct command *) 0x8127afc
        cmd_name = 0x812cac0 "copy"
#22 0x08061534 in client_command_input (cmd=0x81289c8) at client.c:580
        client = (struct client *) 0x8127548
        command = (struct command *) 0x23
---Type <return> to continue, or q <return> to quit---
        __PRETTY_FUNCTION__ = "client_command_input"
#23 0x08061769 in client_command_input (cmd=0x81289c8) at client.c:629
        client = (struct client *) 0x8127548
        command = (struct command *) 0x8127af0
        __PRETTY_FUNCTION__ = "client_command_input"
#24 0x08061867 in client_handle_next_command (client=0x8127548, 
remove_io_r=0xbfb063d5) at client.c:670
        size = 25
#25 0x080618a3 in client_handle_input (client=0x8127548) at client.c:680
        _data_stack_cur_id = 3
        ret = 18
        remove_io = false
        handled_commands = false
#26 0x08061a31 in client_input (client=0x8127548) at client.c:725
        cmd = (struct client_command_context *) 0xb7f62d98
        output = (struct ostream *) 0x8128904
        bytes = 25
        __PRETTY_FUNCTION__ = "client_input"
#27 0x080f0801 in io_loop_handler_run (ioloop=0x81269b0) at 
ioloop-epoll.c:203
        ctx = (struct ioloop_handler_context *) 0x8126aa8
        events = (struct epoll_event *) 0x8126ae8
        event = (const struct epoll_event *) 0x8126ae8
        list = (struct io_list *) 0x81275b8
        io = (struct io_file *) 0x8128960
        tv = {tv_sec = 1799, tv_usec = 999711}
        events_count = 4
        t_id = 2
        msecs = 1800000
        ret = 1
        i = 0
        j = 0
        call = true
#28 0x080efb18 in io_loop_run (ioloop=0x81269b0) at ioloop.c:320
No locals.
#29 0x0806ce89 in main (argc=3, argv=0xbfb06534, envp=0xbfb06544) at 
main.c:293
No locals.
(gdb) p *stream
$1 = {v_offset = 2421, stream_errno = 0, mmaped = 0, blocking = 1, closed = 
0, seekable = 1, eof = 0, real_stream = 0x813ea98}


Hope this helps to find the bug.  :)
I will do some tests with 1.1.5

Thanks,
Andre




More information about the dovecot mailing list