On Jul 14, 2011, at 7:21 AM, Robert Jacques wrote:

> On Thu, 14 Jul 2011 08:39:06 -0400, Sean Kelly <s...@invisibleduck.org> wrote:
> 
>> 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.
> 
> IIRC Leandro's GC doesn't work on windows.

If it doesn't then it shouldn't be too hard to fix.  Leandro intended it to 
work on Windows but didn't have a test box.

Reply via email to