On 10.06.2014 17:15, Sean Kelly wrote:
On Thursday, 29 May 2014 at 23:39:02 UTC, Marco Leise wrote:

Nice try, but destructors called by the GC are currently
effectively @nogc. So don't try that at home.

When did that happen?  Some effort was made at one point to ensure that
allocations worked from dtors.  Not that I'm in favor, but...

I don't think that ever worked, at least for the last couple of years.

Threads run during sweep, and an allocation during the collection might pass the gc-lock because it allows recursive locking in the same thread, but if the allocation hits an empty free-list, it will try to run another collection which will cause the InvalidMemoryOperationError.

If it happens to allocate from a free-list, it will likely cause memory corruption, because sweeping won't know it has been allocated (mark and freebits not updated), and put it back into a free list.

Reply via email to