On Thu, 2009-04-09 at 23:41 +0300, Martins Lazdans wrote:
Ok, I unblocked that IP and started Dovecot with
ulimit -c unlimited && /usr/local/sbin/dovecot
and will see if that IP will return.But I totally forgot I am using Google`s perf-tools (http://code.google.com/p/google-perftools/) tcmalloc library. Maybe that library is faulty and/or incompatible with Dovecot?
Oh. That's the most likely reason. Dovecot is using this non-standard malloc_usable_size() function. Maybe your tcmalloc doesn't implement it and instead glibc's version gets called which then causes it to return wrong size. And the reason why this happens rarely is because Dovecot rarely calls realloc() function.
export LD_PRELOAD=/usr/local/lib/libtcmalloc.so
Dovecot clears environment when calling child processes, so I think this only makes it use the tcmalloc in dovecot master process.
Anyway if you want to keep using tcmalloc, you could comment out HAVE_MALLOC_USABLE_SIZE from config.h and reinstall.