[Dovecot] Index cache file problems in Dovecot 1.2.0

Chris Wakelin c.d.wakelin at reading.ac.uk
Wed Aug 5 20:29:46 EEST 2009


Timo Sirainen wrote:
> On Tue, 2009-07-14 at 11:08 +0100, Chris Wakelin wrote:
>> Error: Corrupted index cache file
>> <path>/.imap/INBOX/dovecot.index.cache: field index too large (47 >= 25)
> 
> Wonder if http://hg.dovecot.org/dovecot-1.2/rev/ae3e0ff64c94 fixes it?

I've not seen that one in my stress testing with imaptest on a recent
dovecot-latest (1.2.2 plus patches, almost the same as the 1.2.3 release
candidate) which I did in earlier versions, so good stuff :)

> 
>>> Jul 14 08:52:53 dovecot: Error: child 17694 (imap) killed with signal 10 (core dumped)
> ..
>>> #0  mail_cache_get_record (cache=0x124e28, offset=289, rec_r=0xffbeeb6c)
>>>     at mail-cache-lookup.c:30
>>> 30              if (rec->size < sizeof(*rec)) {
> 
> Fixed: http://hg.dovecot.org/dovecot-1.2/rev/ea2eed32d59e
> 

Likewise.

I'm still getting errors like

Aug 04 18:01:22 IMAP 23842 <username> 127.0.0.1 : Error: Corrupted index
cache file <path>/.imap/INBOX/dovecot.index.cache: used_file_size too large
Aug 04 18:01:22 IMAP 23842 <username> 127.0.0.1 : Error:
fcntl(write-lock) locking failed for file
<path>/.imap/INBOX/dovecot.index.log: Deadlock situation detected/avoided
Aug 04 18:01:22 IMAP 23842 <username> 127.0.0.1 : Error:
mail_index_wait_lock_fd() failed with file
<path>/.imap/INBOX/dovecot.index.log: Deadlock situation detected/avoided
Aug 04 18:01:32 IMAP 23840 <username> 127.0.0.1 : Error: stat() failed
with index cache file <path>/.imap/INBOX/dovecot.index.cache: No such
file or directory

on Solaris 8 (64-bit Sparc, but 32-bit binary) and

Aug 05 16:42:46 IMAP 29142 <username> 127.0.0.1 : Error: Corrupted index
cache file <path>/.imap/INBOX/dovecot.index.cache: used_file_size too large
Aug 05 16:42:46 IMAP 29143 <username> 127.0.0.1 : Error: Corrupted index
cache file <path>/.imap/INBOX/dovecot.index.cache: used_file_size too large
Aug 05 16:43:16 IMAP 29148 <username> 127.0.0.1 : Error: Corrupted index
cache file <path>/.imap/INBOX/dovecot.index.cache: used_file_size too large
Aug 05 16:43:16 IMAP 29148 <username> 127.0.0.1 : Error: fcntl() failed
with mbox file <path>/INBOX: Deadlock situation detected/avoided
Aug 05 16:43:16 IMAP 29148 <username> 127.0.0.1 : Error: fcntl() failed
with mbox file <path>/INBOX: Deadlock situation detected/avoided
Aug 05 16:43:17 IMAP 29149 <username> 127.0.0.1 : Error: Corrupted index
cache file <path>/.imap/INBOX/dovecot.index.cache: used_file_size too large
Aug 05 16:43:17 IMAP 29147 <username> 127.0.0.1 : Error: Corrupted index
cache file <path>/.imap/INBOX/dovecot.index.cache: used_file_size too large
Aug 05 16:43:18 IMAP 29150 <username> 127.0.0.1 : Error: Corrupted index
cache file <path>/.imap/INBOX/dovecot.index.cache: record points outside
file

on Solaris 10 (64-bit Sparc, but 32-bit binary) but no errors on Ubuntu
8.04.3 x86_64. When not using concurrent logons, I think it was fine
even in 1.2.0 (which made we wonder about a possible race condition?).

I've been using something like

./imaptest host=127.0.0.1 port=6143 user=<username> pass=<passwd>
mbox=./dovecot-crlf clients=5 msgs=10000 box=INBOX copybox=test1407
seed=140709

for all the tests, resetting the INBOX (which is a ~90MB mbox file with
10,000+ messages) and removing the indexes and test1407 folders each time.

Is there a way to make Dovecot abort (or even assert crash for a
backtrace) on these errors (which of course, it usually manages
transparently to the user)?

dovecot -n output ("%J" is a local hash function):

# 1.2.2: <path>/etc/dovecot-test1.2.conf
# OS: SunOS 5.10 sun4u  ufs
base_dir: <path>/var/run/dovecot-test1.2/
log_path: <path>/var/log/dovecot-test1.2.log
info_log_path: <path>/var/log/dovecot-test1.2.log
protocols: imap imaps pop3 pop3s
listen(default): *:6143
listen(imap): *:6143
listen(pop3): *:6110
ssl_listen(default): *:6993
ssl_listen(imap): *:6993
ssl_listen(pop3): *:6995
ssl_cert_file: <path>/certs/<hostname>.rdg.ac.uk.crt
ssl_key_file: <path>/certs/<hostname>.rdg.ac.uk.key
disable_plaintext_auth: no
shutdown_clients: no
login_dir: <path>/var/run/dovecot-test1.2/login
login_executable(default): <path>/libexec/dovecot/imap-login-test1.2
login_executable(imap): <path>/libexec/dovecot/imap-login-test1.2
login_executable(pop3): <path>/libexec/dovecot/pop3-login-test1.2
login_greeting(default): University of Reading IMAP test1.2 ready.
login_greeting(imap): University of Reading IMAP test1.2 ready.
login_greeting(pop3): University of Reading POP3 test1.2 ready.
login_process_per_connection: no
max_mail_processes: 4096
verbose_proctitle: yes
mail_location:
mbox:/export/folders/%Jn/%n/mail/:INBOX=/export/mail/%Jn/%n/INBOX:INDEX=/export/indexes/%Jn/%n
mbox_very_dirty_syncs: yes
mail_drop_priv_before_exec: yes
mail_executable(default): <path>/libexec/dovecot/imap-test1.2
mail_executable(imap): <path>/libexec/dovecot/imap-test1.2
mail_executable(pop3): <path>/libexec/dovecot/pop3-test1.2
mail_plugins(default): zlib
mail_plugins(imap): zlib
mail_plugins(pop3):
mail_plugin_dir(default): <path>/libexec/plugins-1.2
mail_plugin_dir(imap): <path>/libexec/plugins-1.2
mail_plugin_dir(pop3): <path>/lib/dovecot/pop3
mail_log_prefix: %Us %p %u %r :
imap_capability(default): IMAP4 IMAP4rev1 IDLE LOGIN-REFERRALS
MAILBOX-REFERRALS NAMESPACE LITERAL+ UIDPLUS CHILDREN
imap_capability(imap): IMAP4 IMAP4rev1 IDLE LOGIN-REFERRALS
MAILBOX-REFERRALS NAMESPACE LITERAL+ UIDPLUS CHILDREN
imap_capability(pop3):
imap_client_workarounds(default): outlook-idle delay-newmail
imap_client_workarounds(imap): outlook-idle delay-newmail
imap_client_workarounds(pop3):
pop3_reuse_xuidl(default): no
pop3_reuse_xuidl(imap): no
pop3_reuse_xuidl(pop3): yes
pop3_uidl_format(default): %08Xu%08Xv
pop3_uidl_format(imap): %08Xu%08Xv
pop3_uidl_format(pop3): %08Xv%08Xu
pop3_client_workarounds(default):
pop3_client_workarounds(imap):
pop3_client_workarounds(pop3): outlook-no-nuls
namespace:
  type: private
  separator: /
  inbox: yes
  list: yes
  subscriptions: yes
namespace:
  type: private
  separator: /
  prefix: mail/
  hidden: yes
  list: yes
  subscriptions: yes
namespace:
  type: private
  separator: /
  prefix: ~/mail/
  hidden: yes
  list: yes
  subscriptions: yes
namespace:
  type: private
  separator: /
  prefix: ~%u/mail/
  hidden: yes
  list: yes
  subscriptions: yes
lda:
  postmaster_address: postmaster at example.com
auth default:
  mechanisms: plain login
  executable: <path>/libexec/dovecot/dovecot-auth-test1.2
  username_format: %Ln
  verbose: yes
  debug: yes
  passdb:
    driver: passwd-file
    args: <path>/etc/test_users
  passdb:
    driver: passwd-file
    args: /export/mailconfig/%Jn/%n/migrating
    deny: yes
  passdb:
    driver: passwd-file
    args: /export/mailconfig/%Jn/%n/proxy.%Ls
  passdb:
    driver: ldap
    args: <path>/etc/dovecot-ldap.conf
  userdb:
    driver: passwd-file
    args: <path>/etc/test_users
  userdb:
    driver: passwd-file
    args: <path>/etc/userdb

Best Wishes,
Chris

-- 
--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-
Christopher Wakelin,                           c.d.wakelin at reading.ac.uk
IT Services Centre, The University of Reading,  Tel: +44 (0)118 378 8439
Whiteknights, Reading, RG6 2AF, UK              Fax: +44 (0)118 975 3094


More information about the dovecot mailing list