[Dovecot] Unexpected behaviour when deleteing a big mailbox

Steffen Kaiser skdovecot at smail.inf.fh-bonn-rhein-sieg.de
Thu Mar 22 15:22:18 EET 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Wed, 21 Mar 2007, Timo Sirainen wrote:

> On Wed, 2007-03-21 at 16:38 +0100, Steffen Kaiser wrote:
>> I noticed with EXPUNGE that the client feedback is sent after all messages
>> are deleted, when this is the same with COPY, could one sent some feedback
>> to the client in order to keep the connection open?
>
> Does the attached patch help?

Yes!

The connection stays alive the whole time.

I did two tests:

1) I closed Thunderbird after 15min.
The server performed the COPY command. They stayed in box1 and appeared in 
Trash. (Due to the COPY/Mark delete/Expunge sequence got broken).

2) I moved all messages again into Trash, this time waited.

During expunging there is this problem:

dovecot: Mar 22 13:35:20 Info: IMAP(dvtest) [18381]: expunged: uid=83803, 
msgid=<xxxxxxxx.xxxxxxx at xx-xxxx-xxxxx-xxxx.xx>, box=box1
dovecot: Mar 22 13:35:20 Info: IMAP(dvtest) [18381]: expunged: uid=83804, 
msgid=<xxxxxxxx.xxxxx at xx-xxxx-xxxxx-xxxx.xx>, box=box1
dovecot: Mar 22 13:35:39 Error: IMAP(dvtest) [18381]: Maildir 
/mnt/mailcache/dvtest/.box1 sync: UID inserted in the middle of mailbox 
(16251 > 6588, file = 1174389173.P6520Q1M362610.ux-2s11-9:2,Fdc)
dovecot: Mar 22 13:35:39 Info: IMAP(dvtest) [18381]: Disconnected: Mailbox 
is in inconsistent state, please relogin.

[[snip log of a login as dvtest]]
dovecot: Mar 22 13:35:39 Error: IMAP(dvtest) [18381]: Maildir 
/mnt/mailcache/dvtest/.box1 sync: UID inserted in the middle of mailbox 
(16251 > 6588, file = 1174389173.P6520Q1M362610.ux-2s11-9:2,Fdc)
dovecot: Mar 22 13:35:40 Error: IMAP(dvtest) [18384]: Corrupted index 
cache file /var/cache/dovecot/31045/index/.box1/dovecot.index.cache: 
indexid changed
- -> These are the only "Error:" lines in the server log.

102 message were still in box1. (Well, of more than 80'000!)

====

Then I disabled log throddling, pointed pine to the Trash folder with
167'606 messages, marked them as deleted and expunged them. And they were 
gone.

====

Then I started up Thunderbird again, in order to check Trash etc. and, 
eventually, deleted the file 102 messages from box1.:

dovecot: Mar 22 14:05:09 Error: IMAP(dvtest) [18444]: Maildir 
/mnt/mailcache/dvtest/.box1 sync: UID < next_uid (16251 < 83805, file = 
1174390126.P30568Q0M945620.ux-2s11-9:2,RSTbde)
dovecot: Mar 22 14:05:09 Info: IMAP(dvtest) [18444]: Disconnected: Mailbox 
is in inconsistent state, please relogin.
dovecot: Mar 22 14:05:09 Error: IMAP(dvtest) [18444]: file client.c: line 
404 (_client_input): assertion failed: (!client->handling_input)
dovecot: Mar 22 14:05:09 Error: IMAP(dvtest) [18444]: Raw backtrace: imap 
[0x80b58e1] -> imap [0x80b57fc] -> imap [0x805bdf7] -> imap [0x8058406] -> 
imap [0x8058669] -> imap [0x805870c] -> imap(cmd_idle+0x144) [0x8058894] 
- -> imap [0x805b628] -> imap [0x805b6b7] -> imap(_client_input+0x6c) 
[0x805bd3c] -> imap(io_loop_handler_run+0x152) [0x80bb8b2] -> 
imap(io_loop_run+0x28) [0x80bab78] -> imap(main+0x4b0) [0x8063d50] -> 
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xc8) [0xb7e0eea8] -> imap 
[0x8056871]
dovecot: Mar 22 14:05:09 Error: child 18444 (imap) killed with signal 6

gdb tells:
Core was generated by `imap [dvtest 10.20.10.63]'.
Program terminated with signal 6, Aborted.
#0  0xffffe410 in __kernel_vsyscall ()
(gdb) bt full
#0  0xffffe410 in __kernel_vsyscall ()
No symbol table info available.
#1  0xb7e22811 in raise () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#2  0xb7e23fb9 in abort () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#3  0x080b58ea in i_internal_panic_handler (fmt=0x80c5a08 "file %s: line 
%d (%s): assertion failed: (%s)",
     args=0xbfbab1f4 "\003\026\r\b\224\001") at failures.c:403
         backtrace = 0x80d6448 "imap [0x80b58e1] -> imap [0x80b57fc] -> 
imap [0x805bdf7] -> imap [0x8058406] -> imap [0x8058669] -> imap 
[0x805870c] -> imap(cmd_idle+0x144) [0x8058894] -> imap [0x805b628] -> 
imap [0x805b6b7] -> imap"...
#4  0x080b57fc in i_panic (format=0x80c5a08 "file %s: line %d (%s): 
assertion failed: (%s)") at failures.c:183
         args = 0xbfbab1f4 "\003\026\r\b\224\001"
#5  0x0805bdf7 in _client_input (context=0x80e10c8) at client.c:404
         client = (struct client *) 0x80e10c8
         cmd = <value optimized out>
         __PRETTY_FUNCTION__ = "_client_input"
#6  0x08058406 in idle_finish (ctx=0x80e4350, done_ok=false) at 
cmd-idle.c:71
         client = (struct client *) 0x80e10c8
#7  0x08058669 in cmd_idle_continue (cmd=0x80e110c) at cmd-idle.c:220
         client = (struct client *) 0x80e10c8
         ctx = (struct cmd_idle_context *) 0x80e4350
#8  0x0805870c in idle_sync_now (box=<value optimized out>, ctx=0x80e4350) 
at cmd-idle.c:157
         __PRETTY_FUNCTION__ = "idle_sync_now"
#9  0x08058894 in cmd_idle (cmd=0x80e110c) at cmd-idle.c:273
         client = (struct client *) 0x80e10c8
         ctx = (struct cmd_idle_context *) 0x80e4350
         interval = <value optimized out>
#10 0x0805b628 in client_handle_input (cmd=0x80e110c) at client.c:335
         client = (struct client *) 0x80e10c8
         __PRETTY_FUNCTION__ = "client_handle_input"
#11 0x0805b6b7 in client_handle_input (cmd=0x80e110c) at client.c:392
         client = (struct client *) 0x80e10c8
         __PRETTY_FUNCTION__ = "client_handle_input"
#12 0x0805bd3c in _client_input (context=0x80e10c8) at client.c:435
         client = (struct client *) 0x80e10c8
         cmd = (struct client_command_context *) 0x80e110c
         __PRETTY_FUNCTION__ = "_client_input"
#13 0x080bb8b2 in io_loop_handler_run (ioloop=0x80de9b0) at 
ioloop-poll.c:199
         ctx = (struct ioloop_handler_context *) 0x80de9d8
         pollfd = <value optimized out>
         tv = {tv_sec = 0, tv_usec = 620373}
         io = (struct io *) 0x81160e8
         t_id = 2
         msecs = <value optimized out>
         ret = 0
         call = <value optimized out>
#14 0x080bab78 in io_loop_run (ioloop=0x80de9b0) at ioloop.c:323
No locals.
#15 0x08063d50 in main (argc=Cannot access memory at address 0x480c
) at main.c:287
         home = 0x0

Bye,

- -- 
Steffen Kaiser
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iQEVAwUBRgKDDS9SORjhbDpvAQJa3wf+PDXIniMhbRvxXEuKSGiy1mibA0TjVgEs
3VdlcmMaKrDa0yDNUI69y01sODbkfkeLznsu/UBH5p/qroTo5tWOsPz01BJjHHJn
p1tXppkKxT9UdI7FjGTIu2yyc/SLEjHRrM+NRg8vQgPoSIVFbYi3uaDRDO/9WShr
p4Tt1nJ8zyvm+fTL5VzdNLOd4iHjBIvUOLPfIxgyyE10nkwEgcaqwPiU4SOCuk4l
yqVedrDP1xGmH0JyoMkehrGP3w+WITMK6PuwtpeWX+YXE4USjuijewqILHQ1gIuy
z72spc/SQKBrZTaI3PTRGtKhdYeQ37btKlDH9r4oUNcwPjGZ//BYfg==
=dny2
-----END PGP SIGNATURE-----


More information about the dovecot mailing list