On Monday, 13 June 2016 at 16:43:57 UTC, cy wrote:
On Monday, 13 June 2016 at 08:58:40 UTC, Vladimir Panteleev wrote:

FWIW: http://wiki.dlang.org/InvalidMemoryOperationError

Yeah... I did forget that the GC was not re-entrant. But the "stop collecting inside the destructor, moron" error is exactly the same as "something allocated in the destructor... moron" error.

"The GC is not re-entrant" applies to all of its parts, not only the actual part doing the GC and reclaiming memory - i.e. calling any GC function (allocation or an explicit free) while a GC function is running is not supported. In practice, this only applies to allocation/free from a destructor invoked by a GC sweep though.

I'd think we could just allocate space for a potential stack trace before starting garbage collection, but I guess not?

The problem is certainly solvable, but, well, a GC cycle is initiated precisely when the runtime runs out of memory.

Reply via email to