[Python-Dev] Problems with the Python Memory Manager

Travis Oliphant oliphant at ee.byu.edu
Thu Nov 24 10:54:13 CET 2005


Martin v. Löwis wrote:
> Travis Oliphant wrote:
>>> So, I now believe that his code (plus the array scalar extension 
>> type) was actually exposing a real bug in the memory manager itself. 
>> In theory, the Python memory manager should have been able to re-use 
>> the memory for the array-scalar instances because they are always the 
>> same size. In practice, the memory was apparently not being re-used 
>> but instead new blocks were being allocated to handle the load.
>>> That is really very hard to believe. Most people on this list would
> probably agree that obmalloc certain *will* reuse deallocated memory
> if the next request is for the very same size (number of bytes) that
> the previously-release object had.

Yes, I see that it does. This became more clear as all the simple tests 
I tried failed to reproduce the problem (and I spent some time looking 
at the code and reading its comments). I just can't figure out another 
explanation for why the problem went away when I went to using the 
system malloc other than some kind of corner-case in the Python memory 
allocator.
>>> His code is quite complicated and it is difficult to replicate the 
>> problem. 
>>> That the code is complex would not so much be a problem: we often
> analyse complex code here. It is a problem that the code is not
> available, and it would be a problem if the problem was not
> reproducable even if you had the code (i.e. if the problem would
> sometimes occur, but not the next day when you ran it again).
>The problem was definitely reproducible. On his machine, and on the two 
machines I tried to run it on. It without fail rapidly consumed all 
available memory.
> So if you can, please post the code somewhere, and add a bugreport
> on sf.net/projects/python.
>I'll try to do this at some point. 
I'll have to get permission from him for the actual Python code. The 
extension modules he used are all publically available (PyMC). I 
changed the memory allocator in scipy --- which eliminated the problem 
--- so you'd have to check out an older version of the code from SVN to 
see the problem.
Thanks for the tips.
-Travis


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /