A lot of exceptions in the GC and some in the runtime depend on a non allocating throw mechanism, because of reentrant and init order problems.
We need to change TraceHandler to @nogc and fix the implementations.
For backwards compatibility TraceHandlers that allocate should be allowed, but a dedicated boolean flag should suppress traces in situations where it would cause a problem.
http://dlang.org/phobos/core_runtime.html#.Runtime.traceHandler