mogstored file descriptor leak

Cory Bennett mogile at corybennett.org
Sun Aug 14 22:38:09 PDT 2005


On Sunday 14 August 2005 8:40 pm, Brad Fitzpatrick wrote:
> Great bug report.  I thought it'd be easy to find, but mogstored in cvs
> (1.14) is pretty clear:
>
>             # open a file on that disk location called 'usage'
>             my $rv = open(FILE, ">$disk/usage");
>             unless ($rv) {
>                 $err->("Unable to open '$disk/usage' for writing: $!");
>                 next;
>             }
>             foreach (sort keys %$output) {
>                 print FILE "$_: $output->{$_}\n";
>             }
>             close FILE;

Yeah, It is the same version I am using.  I saw this code right away, and 
seemed obvious.  So I added a bunch of debug statements, printing out the $rv 
and also the fileno(FILE).  Using lsof I could see the file numbers, but the 
one printed by fileno(FILE) never showed up in lsof for mogstored.  My 
conclusion was that the above code is working correctly and that the leaked 
descriptor is coming from somewhere else.  I have been trying to find a 
'clever' way to intercept the open and sysopen calls so I can get a stack 
trace, but I have not had much luck yet. 

-Cory


More information about the mogilefs mailing list