[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#337792: marked as done (Memory leak in Debbugs::MIME::parse)



Your message dated Fri, 15 Jun 2007 12:39:12 -0700
with message-id <20070615193912.GH4120@volo.donarmstrong.com>
and subject line Bug#337792: Doesn't appear to be a leak; just large bugs in memory
has caused the attached Bug report to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere.  Please contact me immediately.)

Debian bug tracking system administrator
(administrator, Debian Bugs database)

--- Begin Message ---
Package: debbugs
Version: 2.4.1
Severity: normal

There's a memory leak in Debbugs::MIME::parse() as you can see by
running the attached script for a while.

 6536 tbm       24   0  9344 6696 4056 R 46.8  1.7   0:26.79 test-mem-leak.p
 6536 tbm       24   0 50116  46m 4056 R 42.6 12.3  10:20.87 test-mem-leak.p


Tested with CVS as the end of ~2003 and with current CVS.



-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.12-1-686
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)

-- 
Martin Michlmayr
http://www.cyrius.com/
#!/usr/bin/perl -w

use strict;
use Debbugs::Log;
use Debbugs::MIME;

my $spool = "/org/bugs.debian.org/spool";

sub read_log($) {
    my $log_filename = shift;
    open LOG, "< $log_filename" or die "Can't open $log_filename: $!";
    my @records = Debbugs::Log::read_log_records(*LOG);
    close LOG;

    for my $record (@records) {
        if ($record->{type} eq "incoming-recv") {
            my $decoded = Debbugs::MIME::parse($record->{text});
        }
    }
}


sub process_dir($) {
    my $db = shift;

    opendir DB, $db or die "Can't opendir $db: $!";
    while (defined(my $dir = readdir DB)) {
        next if $dir =~ /^\.\.?$/ or not -d "$db/$dir";
        opendir HASH, "$db/$dir" or die "Can't opendir $db/$dir: $!";
        print "Processing dir $dir ...\n";
        while (defined(my $file = readdir HASH)) {
            next unless $file =~ /\.log$/;
            my $bug = $file;
            $bug =~ s/\.log$//;
            my $log = "$db/$dir/$file";
            next if -z $log;
            read_log($log);
        }
        closedir HASH;
    }
    closedir DB;
}

for my $db ("archive", "db-h") {
    process_dir("$spool/$db");
}


# vim: ts=4:expandtab:shiftwidth=4:

--- End Message ---
--- Begin Message ---
On Fri, 15 Jun 2007, Martin Michlmayr wrote:
> * Don Armstrong <don@donarmstrong.com> [2007-06-15 12:09]:
> > This doesn't actually appear to be a leak; just the effect of large
> > bugs being loaded into memory and then the memory being available for
> > reuse in perl, but not being freed.
> 
> I'm no longer working on the script through which I found this bug (or
> "bug"), so I suppose you can close the report.

Okie.


Don Armstrong

-- 
The sheer ponderousness of the panel's opinion ... refutes its thesis
far more convincingly than anything I might say. The panel's labored
effort to smother the Second Amendment by sheer body weight has all
the grace of a sumo wrestler trying to kill a rattlesnake by sitting
on it--and is just as likely to succeed.
 -- Alex Kozinski in Silveira V Lockyer

http://www.donarmstrong.com              http://rzlab.ucr.edu

--- End Message ---

Reply to: