Originally identified by @Sacha0 . On 1.7 it seems like tasks can now migrate arbitrarily between threads. This means that the thread on which a derived function call returns is often not the one on which it was called.
This breaks the TraceId approach, which stores an offset into the original thread's trace pool.