Two Call Path When There Is Only One Function Call When Using Streamline


I am currently profiling performance using streamline, whose version is 7.8.0.

We have a function: `Dummy_BuildAnimTrackPairs_Switch` and this function is only called in function `BuildAnimTrackPairs` in worker thread.

But it is strange that there are two call paths of `Dummy_BuildAnimTrackPairs_Switch` with different sample number in `Call Paths` tab like this:

What does this mean please? Is one of them the function-call overhead?

  • Hi NoahZuo

    This most likely just means that the kernel's unwinder did not correctly unwind the call stack; the unwinder is very simple and expects a fixed stack frame layout when unwinding. There is a small chance the sample landed in the function prologue/epilogue, or as a side affect of how the compiler might have performed inlining, or if the compiler had introduced a tail call, or some other similar optimisation, then the frame layout on the stack / contents of LR may not have been as the unwinder expected causing it to miss the parent function.

    I'd suggest that if you know that `Dummy_BuildAnimTrackPairs_Switch` is only ever called from `BuildAnimTrackPairs`, then you treat those two entries as the same call path.