Bug#640574: libcyrus-imap-perl22: Cyrus::SIEVE::managesieve leaks file handles

Jörg Ludwig joerg.ludwig at iserv.eu
Mon Sep 5 19:42:56 UTC 2011


Subject: libcyrus-imap-perl22: Cyrus::SIEVE::managesieve leaks file handles
Package: libcyrus-imap-perl22
Version: 2.2.13-19+squeeze1
Severity: normal

*** Please type your report below this line ***
I noticed that the sieve_put_file_withdest function from
Cyrus::SIEVE::managesieve leaves one file handle open on each call. 
Hence I can call it only 1021 times before it fails. I attached a small 
perl script to show the error.


#!/usr/bin/perl
use strict;
use warnings;
use Cyrus::SIEVE::managesieve;

my $fn = "/tmp/sieve_fh_bug";
my $script = "sieve";
my $act = "test1";
my $pw = "12345";

system "touch", $fn and die $!;
for (1..999999)
{
   print "$_\n";
   my $h = sieve_get_handle("localhost",
       sub {$act}, sub {"cyrus"}, sub {$pw}, sub {""})
     or die "cannot connect to sieve server as user $act\n";
   sieve_put_file_withdest($h, $fn, $script) and die sieve_get_error($h);
   sieve_logout($h) and die sieve_get_error($h);
}


strace outputs:
open("/tmp/sieve_fh_bug", O_RDONLY)     = 1022
...
open("/tmp/sieve_fh_bug", O_RDONLY)     = 1023
...
open("/tmp/sieve_fh_bug", O_RDONLY)     = -1 EMFILE (Too many open files)


As a workaround you can set the file handle limit to high values.
I reported this bug to pkg-cyrus-imapd-debian-devel in mid 2008 and just 
found out that it is still in Debian squeeze.


-- System Information:
Debian Release: 6.0.2
   APT prefers stable-updates
   APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.26-2-xen-amd64 (SMP w/2 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=en_US.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages libcyrus-imap-perl22 depends on:
ii  libc6                  2.11.2-10         Embedded GNU C Library: 
Shared lib
ii  libdb4.7               4.7.25-9          Berkeley v4.7 Database 
Libraries [
ii  libsasl2-2             2.1.23.dfsg1-7    Cyrus SASL - authentication 
abstra
ii  libssl0.9.8            0.9.8o-4squeeze1  SSL shared libraries
ii  perl                   5.10.1-17squeeze2 Larry Wall's Practical 
Extraction
ii  perl-base [perlapi-5.1 5.10.1-17squeeze2 minimal Perl system

libcyrus-imap-perl22 recommends no packages.

libcyrus-imap-perl22 suggests no packages.

-- no debconf information


-- 
Mit freundlichen Grüßen

Jörg Ludwig

IServ GmbH
Rebenring 33
38106 Braunschweig

Telefon:   0531-2243666-0
Fax:       0531-2243666-9
Mobil:     0179-9101055
E-Mail:    joerg.ludwig at iserv.eu
Internet:  iserv.eu

USt.-IdNr.:       DE265149425
Registergericht:  Amtsgericht Braunschweig
Registernummer:   HRB 201822
Geschäftsführer:  Jörg Ludwig






More information about the Pkg-Cyrus-imapd-Debian-devel mailing list