The GC is currently not reentrant, thus we can't allocate during finalization.
If an exception is thrown in a finalizer, it will allocate a TraceInfo object, even if the exception was preallocated.
Comment #1 by code — 2015-04-01T03:40:53Z
Same goes for onOutOfMemoryError which is even marked as @nogc, even though the trace is allocated using the GC.