--- Comment #6 from Leandro Lucarella <> 2010-06-22 08:11:50 
PDT ---
(In reply to comment #5)
> (In reply to comment #3)
> > Most likely, the GC _is_ working correctly. It's a conservative GC, and it
> > treats integers, floats, random binary data the same as actual pointers.
> This is false. The GC only treats void[] as a potential source of pointers,
> which makes sense, really. int[], float[], char[], byte[] are *NOT* scanned 
> for
> pointers. For a binary buffer that doesn't have pointers in it, you should
> probably use ubyte[]. If return void[], I'd say that
> is broken.

I should add that, even when ubyte[] is not scanned for pointers, you are right
about allocating big chunks of memory in the GC could lead to leaks, as the
probabilities of having a false pointer pointing to that chunk of data gets
really high.

There is another bug report (with a patch too, and from David Simcha too) that
helps with this problem: bug 2927. The idea is to add a new property to the GC
to mark a chunk as not having interior pointers. If you mark a chunk of memory
as not having interior pointers, the chances of a false pointer pointing to the
beginning of your memory chunk becomes *very* low.

It's a real shame that David's patches didn't get into druntime, as they are
very helpful avoiding this kind of issues.

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to