Bug in dovecot 2.3 virtual plugin

Jakob Schürz wertstoffe at nurfuerspam.de
Fri Jan 5 15:34:33 EET 2018



Am 05.01.2018 um 10:25 schrieb Aki Tuomi:
> This is a different bug, and I suspect it might be caused by virtual
> plugin. We'll look into it.
>
> Aki

Ok!
So the subject for this bug is (now) correct...

I found out, that the count of mailboxes is not the problem. But the 
count of emails!!
So i deletet all my mailboxes an created them new with doveadm.
430 empty mailboxes existed then. No problem with my virtual boxes.
Then i restored my emails mailbox for mailbox from backup.
After each restored mailbox i tested the virtual mailboxes.

It worked with 15482 emails.
Then i restored a larger one.  The total amount of emails was then 
16843, and the virtual mailbox crashed like before.
Then i deleted the emails from the box... all is working.
I added them again, deletet 200, all is working.
deleted all of them again and added them again... so they are again 
16844 (one email arrived in another mailbox), all is working. :-/

Put more and more emails to my mailboxes... checking every time if 
virtual mailboxes are working, so i get a new error:

Jän 05 14:28:18 aldebaran dovecot[17022]: 
imap(jakob)<5117><S0pzWAdiE/hcPAkS>: Panic: file mail-index.c: line 793 
(mail_index_close): assertion failed: (index->open_count > 0)
Jän 05 14:28:18 aldebaran dovecot[17022]: 
imap(jakob)<5117><S0pzWAdiE/hcPAkS>: Error: Raw backtrace: 
/usr/local/lib/dovecot/libdovecot.so.0(+0xc6021) [0x7f419fecd021] -> 
/usr/local/lib/dovecot/libdovecot.so.0(+0xc60ed) [0x7f419fecd0ed] -> 
/usr/local/lib/dovecot/libdovecot.so.0(i_fatal+0) [0x7f419fe3f481] -> 
/usr/local/lib/dovecot/libdovecot-storage.so.0(+0xf39a8) 
[0x7f41a026c9a8] -> 
/usr/local/lib/dovecot/libdovecot-storage.so.0(+0xd92d1) 
[0x7f41a02522d1] -> 
/usr/local/lib/dovecot/libdovecot-storage.so.0(+0xd9363) 
[0x7f41a0252363] -> 
/usr/local/lib/dovecot/libdovecot-storage.so.0(index_storage_mailbox_free+0x9) 
[0x7f41a0243f39] -> 
/usr/local/lib/dovecot/libdovecot-storage.so.0(+0xd05a4) 
[0x7f41a02495a4] -> 
/usr/local/lib/dovecot/libdovecot-storage.so.0(mailbox_free+0x19) 
[0x7f41a01c3c99] -> 
/usr/local/lib/dovecot/lib20_virtual_plugin.so(+0xabdc) [0x7f419b42ebdc] 
-> /usr/local/lib/dovecot/lib20_virtual_plugin.so(+0xacb9) 
[0x7f419b42ecb9] -> 
/usr/local/lib/dovecot/libdovecot-storage.so.0(mailbox_close+0x1a) 
[0x7f41a01c3c0a] -> 
/usr/local/lib/dovecot/lib20_virtual_plugin.so(+0xac60) [0x7f419b42ec60] 
-> /usr/local/lib/dovecot/lib20_virtual_plugin.so(+0xacb9) 
[0x7f419b42ecb9] -> 
/usr/local/lib/dovecot/libdovecot-storage.so.0(mailbox_close+0x1a) 
[0x7f41a01c3c0a] -> 
/usr/local/lib/dovecot/libdovecot-storage.so.0(mailbox_free+0x13) 
[0x7f41a01c3c93] -> dovecot/imap [jakob 92.60.9.18 
select](imap_client_close_mailbox+0x5b) [0x564c2088205b] -> dovecot/imap 
[jakob 92.60.9.18 select](+0x14f03) [0x564c20879f03] -> dovecot/imap 
[jakob 92.60.9.18 select](cmd_select_full+0xf9) [0x564c2087a129] -> 
dovecot/imap [jakob 92.60.9.18 select](command_exec+0x64) 
[0x564c20881ca4] -> dovecot/imap [jakob 92.60.9.18 select](+0x1b0b2) 
[0x564c208800b2] -> dovecot/imap [jakob 92.60.9.18 select](+0x1b13c) 
[0x564c2088013c] -> dovecot/imap [jakob 92.60.9.18 
select](client_handle_input+0x1a5) [0x564c20880565] -> dovecot/imap 
[jakob 92.60.9.18 select](client_input+0x82) [0x564c20880be2] -> 
/usr/local/lib/dovecot/libdovecot.so.0(io_loop_call_io+0x69) 
[0x7f419fee4c09] -> 
/usr/local/lib/dovecot/libdovecot.so.0(io_loop_handler_run_internal+0x109) 
[0x7f419fee64a9] -> 
/usr/local/lib/dovecot/libdovecot.so.0(io_loop_handler_run+0x52) 
[0x7f419fee4d12] -> 
/usr/local/lib/dovecot/libdovecot.so.0(io_loop_run+0x38) [0x7f419fee4f28]
Jän 05 14:28:18 aldebaran dovecot[17022]: 
imap(jakob)<5117><S0pzWAdiE/hcPAkS>: Fatal: master: service(imap): child 
5117 killed with signal 6 (core not dumped)



Do you need some configs and deeper descriptions from me?

I have two namespaces with virtual mailboxes:
The first "Real" is normally hidden. It's not hidden now for debug-purpose.

namespace Real {
   hidden = no
   ignore_on_failure = yes
   list = children
   location = 
virtual:/var/mail/real:INDEX=/var/lib/dovecot/db/indexes/real/%u
   prefix = Real/
   separator = /
   subscriptions = no
}

namespace Synoptic {
   hidden = no
   ignore_on_failure = yes
   list = children
   location = 
virtual:/var/mail/virtual:INDEX=/var/lib/dovecot/db/indexes/virtual/%u
   mailbox INBOX/Archives {
     auto = no
     special_use = \Archive
   }
   mailbox INBOX/Drafts {
     auto = no
     special_use = \Drafts
   }
   mailbox INBOX/Entwürfe {
     auto = no
     special_use = \Drafts
   }
   mailbox INBOX/Junk {
     auto = no
     special_use = \Junk
   }
   mailbox INBOX/Sent {
     auto = no
     special_use = \Sent
   }
   mailbox INBOX/Spam {
     auto = no
     special_use = \Junk
   }
   prefix = Synoptic/
   separator = /
   subscriptions = no
}

The "Real" namespace is to get a first filter for emails for all, the 
last 1, 2 and 3 years:

Here is the virtual-mailbox-definition:

/var/mail/real: # tree
.
├── Alle
│   └── dovecot-virtual
├── dovecot-acl-list
├── dreijahr
│   └── dovecot-virtual
├── einjahr
│   └── dovecot-virtual
└── zweijahr
     └── dovecot-virtual

and the index-files
/var/lib/dovecot/db/indexes: # tree real/
real/
└── jakob
     ├── Alle
     │   └── dovecot.index.log
     ├── dovecot.list.index.log
     ├── dreijahr
     │   └── dovecot.index.log
     ├── einjahr
     │   └── dovecot.index.log
     └── zweijahr
         └── dovecot.index.log


/var/mail/real: # cat Alle/dovecot-virtual
!INBOX
INBOX/*
-INBOX/Trash
-INBOX/Trash/*
-INBOX/Archives
-INBOX/Archives/*
-INBOX/Drafts
-INBOX/Drafts/*
-INBOX/Junk
-INBOX/Junk/*
-INBOX/SYSTEM
-INBOX/SYSTEM/*
  all

/var/mail/real: # cat einjahr/dovecot-virtual
Real/Alle
  all younger 31536000

And the namespace Synoptic is the one, i can subscribe. It has as 
Background the "Real"-namespace:

/var/mail/virtual: # tree
.
├── AKTUELL
│   └── dovecot-virtual
├── Archives
│   └── dovecot-virtual
├── dovecot-acl-list
├── Drafts
│   └── dovecot-virtual
├── GINBOX
│   └── dovecot-virtual
├── Markierte
│   └── dovecot-virtual
├── Neue
│   └── dovecot-virtual
├── Sent
│   └── dovecot-virtual
├── Trash
│   └── dovecot-virtual
├── Ungelesene
│   └── dovecot-virtual
└── WICHTIG
     └── dovecot-virtual

/var/mail/virtual: # cat AKTUELL/dovecot-virtual
Real/einjahr
  inthread refs younger 2592000

/var/mail/virtual: # cat Markierte/dovecot-virtual
Real/Alle
  flagged

The error only appears in a Mailbox from one of this two namespaces. 
Every other mailboxes (public, private, shared) are working correct.
When i try to open a mailbox from one of this two namespaces, the error 
below (Panic: Leaked view for index) is throwen

jakob


> On 04.01.2018 23:41, Jakob Schürz wrote:
>> Hi!
>>
>> This is very strange...
>> This error affects only one mailaccount, and it happend not yesterday.
>> The file
>>
>> /var/lib/dovecot/db/indexes/Maildir/jakob/INBOX/dovecot.index
>>
>> which hat "Panic: Leaked view for index" does not exist. only
>> dovecot.index.log and .cache exists in this mailbox. (which is normal
>> for small mailboxes, i've read). But why is dovecot throwing an error?
>>
>> And i could find out, this is only, when i try to open a virtual folder.
>>
>> I switched back to older self-compiled dovecot-versions... but the error
>> exists also there (but not before the update!!!)
>>
>> I also deleted all the dovecot.index-files, dovecot.index.log and
>> dovecot.index.cache-files to let rebuild dovecot the index again... the
>> error persists.
>>
>> Is it a misconfiguration?
>>
>> So i tried to build for the virtual-Mailboxes the Index in memory... the
>> error persists and dovecot wants to read this index-file.
>>
>> My virtual folders not working any longer (on this account only!)
>>
>> For debug purpose i deleted all the emails in this mailbox, the error
>> dissapered on this folder, but comes back in the next folder.
>>
>> could this be a problem with ulimit?
>>
>> greez
>> jakob
>>
>> Am 2018-01-04 um 11:07 schrieb Jakobus Schürz:
>>> Hi!
>>>
>>> Is this a bug according to the other one?
>>>
>>> When i try to open a real or virtual mailbox, i often (not on every
>>> mailbox) get this error-message:
>>>
>>> Jän 04 11:03:32 aldebaran dovecot[24534]:
>>> imap(jakob)<24705><Ug/EcfBhSrDAqAAO>: Panic: Leaked view for index
>>> /var/lib/dovecot/db/indexes/Maildir/jakob/INBOX/dovecot.index: Opened in
>>> index-storage.c:336
>>> Jän 04 11:03:32 aldebaran dovecot[24534]:
>>> imap(jakob)<24705><Ug/EcfBhSrDAqAAO>: Error: Raw backtrace:
>>> /usr/local/lib/dovecot/libdovecot.so.0(+0xc6021) [0x7f47d5872021] ->
>>> /usr/local/lib/dovecot/libdovecot.so.0(+0xc60ed) [0x7f47d58720ed] ->
>>> /usr/local/lib/dovecot/libdovecot.so.0(i_fatal+0) [0x7f47d57e4481] ->
>>> /usr/local/lib/dovecot/libdovecot-storage.so.0(+0xf3942)
>>> [0x7f47d5c11942] ->
>>> /usr/local/lib/dovecot/libdovecot-storage.so.0(index_storage_mailbox_close+0x72)
>>> [0x7f47d5be8ec2] ->
>>> /usr/local/lib/dovecot/libdovecot-storage.so.0(mailbox_close+0x1a)
>>> [0x7f47d5b68c0a] ->
>>> /usr/local/lib/dovecot/lib20_virtual_plugin.so(+0xa7e0) [0x7f47d0dd37e0]
>>> ->
>>> /usr/local/lib/dovecot/lib20_virtual_plugin.so(virtual_backend_box_open+0x2b)
>>> [0x7f47d0dd397b] ->
>>> /usr/local/lib/dovecot/lib20_virtual_plugin.so(virtual_storage_sync_init+0x1026)
>>> [0x7f47d0dd6926] ->
>>> /usr/local/lib/dovecot/libdovecot-storage.so.0(mailbox_sync_init+0x4d)
>>> [0x7f47d5b6b05d] ->
>>> /usr/local/lib/dovecot/libdovecot-storage.so.0(mailbox_sync+0x37)
>>> [0x7f47d5b6b117] ->
>>> /usr/local/lib/dovecot/libdovecot-storage.so.0(index_storage_get_status+0x31)
>>> [0x7f47d5be7781] ->
>>> /usr/local/lib/dovecot/lib20_virtual_plugin.so(+0x9b3d) [0x7f47d0dd2b3d]
>>> -> /usr/local/lib/dovecot/libdovecot-storage.so.0(+0xaded1)
>>> [0x7f47d5bcbed1] -> /usr/local/lib/dovecot/lib01_acl_plugin.so(+0xe975)
>>> [0x7f47d5001975] ->
>>> /usr/local/lib/dovecot/libdovecot-storage.so.0(mailbox_get_status+0x31)
>>> [0x7f47d5b6b4b1] ->
>>> /usr/local/lib/dovecot/lib20_virtual_plugin.so(virtual_storage_sync_init+0x114d)
>>> [0x7f47d0dd6a4d] ->
>>> /usr/local/lib/dovecot/libdovecot-storage.so.0(mailbox_sync_init+0x4d)
>>> [0x7f47d5b6b05d] ->
>>> /usr/local/lib/dovecot/libdovecot-storage.so.0(mailbox_sync+0x37)
>>> [0x7f47d5b6b117] -> dovecot/imap [jakob 192.168.0.14
>>> EXAMINE](cmd_select_full+0x171) [0x555d195a91a1] -> dovecot/imap [jakob
>>> 192.168.0.14 EXAMINE](command_exec+0x64) [0x555d195b0ca4] ->
>>> dovecot/imap [jakob 192.168.0.14 EXAMINE](+0x1b0b2) [0x555d195af0b2] ->
>>> dovecot/imap [jakob 192.168.0.14 EXAMINE](+0x1b13c) [0x555d195af13c] ->
>>> dovecot/imap [jakob 192.168.0.14 EXAMINE](client_handle_input+0x1a5)
>>> [0x555d195af565] -> dovecot/imap [jakob 192.168.0.14
>>> EXAMINE](client_input+0x82) [0x555d195afbe2] ->
>>> /usr/local/lib/dovecot/libdovecot.so.0(io_loop_call_io+0x69)
>>> [0x7f47d5889bf9] ->
>>> /usr/local/lib/dovecot/libdovecot.so.0(io_loop_handler_run_internal+0x109)
>>> [0x7f47d588b499] ->
>>> /usr/local/lib/dovecot/libdovecot.so.0(io_loop_handler_run+0x52)
>>> [0x7f47d5889d02]
>>> Jän 04 11:03:32 aldebaran dovecot[24534]:
>>> imap(jakob)<24705><Ug/EcfBhSrDAqAAO>: Fatal: master: service(imap):
>>> child 24705 killed with signal 6 (core dumps disabled)
>>>
>>> I deinstalled all debian-dovecot-packages and installed the user
>>> dovenull manually again. This is all, i did.
>>>
>>> jakob




More information about the dovecot mailing list