Memory leak ??

Kim Petersen kp at kyborg.dk
Thu Jul 10 19:15:55 EDT 2003


A.M. Kuchling wrote:
> On Thu, 10 Jul 2003 14:34:05 +0200, 
> 	Kim Petersen <kp at kyborg.dk> wrote:
> 
>>Using python-2.2.2-26 on RH9 (shrike) x86 -fully patched
>>
>>The following program slowly eats up more and more memory when run on
>>large datasets... can anyone tell what the trouble is?
> 
> 
> Your code uses eval(), which is pretty heavyweight because it has to
> tokenize, parse, and then evaluate the string.

I know - but speed is not an issue in this (at least not for the moment).

> There have been a few memory
> leaks in eval(), and perhaps you're running into one of them.  Try using
> int() or float() to convert strings to numbers instead of eval.  As a bonus,
> your program will be faster and much more secure (could an attacker tweak 
> your logfiles so you end up eval()ing os.unlink('/etc/passwd')?).

Not likely - this file is error-output from a database population 
program - and the thing being eval'led is actually the python tuple that 
made the error occur - what my program essentially should do - is take 
that output - analyze it - fix the errors - and then put it into the 
database.

But thanks, for the tip - i'll try and wrap up a parser for this instead 
then. (personally i had my suspecion on the generator - but thats prolly 
because i'm still thinking 1.5.2 ;-))
> 
> In general, using eval() is almost always a mistake; few programs need to 
> take arbitrary expressions as input.

I agree completely - i've personally used eval something like 3 times 
totally in the time i've programmed python (5 years or so) - and in all 
cases it has been places where the input were secure.

> 
> --amk





More information about the Python-list mailing list