walk async stack traces correctly
Summary: This correctly walks the async stack traces. Previously, we were not following the async stack root from the last async stack frame. High level stack walking strategy is as follows: 1) Start walking the normal stack up to the first normal stack frame holding the first async stack root 2) Walk the async stack frame chain from the provided async stack root 3) When we reach the end of the current async stack frame chain, check if the last async stack frame references an async stack root R1. If there is one, use R1 to find the start of the next normal stack frame when walking the normal stack frame. 4) If that async stack root R1 has a next async stack root R2, the normal stack frame walk should end at the normal stack frame holding the next async stack root R2. Otherwise the normal stack frame walk should continue all the way until it hits nullptr. 5) The next async stack walk should begin at the top async frame referenced by the next async stack root R2. 6) Repeat until we've reached the end of both the normal and async stack frame chains. Reviewed By: andriigrynenko Differential Revision: D28102128 fbshipit-source-id: c412a2a253720867c257d5cbaa9a6b22e96154f2
Showing
Please register or sign in to comment