According to GetStackTraceWithPcBpAndContext() implementation:
void GetStackTraceWithPcBpAndContext(StackTrace *stack, uptr max_depth, uptr pc,
uptr bp, void *context, bool fast) {
#if SANITIZER_WINDOWS
stack->Unwind(max_depth, pc, bp, context, 0, 0, fast);
#else
...
if ((t = GetCurrentThread()) && !t->isUnwinding()) {
...
} else if (t == 0 && !fast) {
/* If GetCurrentThread() has failed, try to do slow unwind anyways. */
stack->Unwind(max_depth, pc, bp, context, 0, 0, false);
}
}
#endif // SANITIZER_WINDOWS
}if the current thread is in the unwinding state, the 'stack_top' and 'stack_bottom' parameters of the StackTrace::FastUnwindStack() function both set to 0. That, in turn, results in the sanity condition for 'stack_top' within that function always met and thus no call stack is provided.