Description
I'm running clang 3.9 against a Kudu source tree using libcpp, so it's possible this is partly due to differences in how libstdc++ implements std::vector. Or maybe it's real.
At first glance, it looks like the problem is that Trace::MetricsToJSON(JsonWriter*) doesn't hold lock_ while accessing child_traces_. It would need to some refactoring to avoid taking lock_ recursively, though, since it's a recursive function.