On Jul 14, 2011, at 3:12 AM, Vladimir Panteleev wrote:

> On Thu, 14 Jul 2011 09:58:09 +0300, Sönke Ludwig 
> <lud...@informatik.uni-luebeck.de> wrote:
> 
>> On DMD I got some strange out-of-memory errors with the current 2.054 
>> version. I tracked it down to allocations happening during garbage 
>> collection.
>> 
>> Has something fundamental in the GC implementation changed in the latest 
>> release? It used to work, but seems to be completely disallowed now. I think 
>> it is quite a strong requirement to not make any allocations from within 
>> finalizers and makes them just another bit more useless. (In my case I have 
>> some logging going on which needs dynamic allocations for formatting 
>> (Appender)).
> 
> Hi, I was the one who submitted the patch. The situation before the patch was 
> that allocating memory from a finalizer of a collected object inevitably lead 
> to memory corruption (which is, as you may know, devilishly hard to track 
> down). Ideally, someone would rewrite the appropriate parts of the GC to 
> allow safe throwing and allocations from finalizers, but that hasn't happened 
> yet.

I started on the rewrite, but it's a pretty big change so I'm considering 
trying out Leandro's GC instead.  It would require some work as well, but the 
code is cleaner and it already supports precise scanning, so it may be a better 
starting point.

Reply via email to