Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There were two main error cases remaining when I test on linux:
I've seen cases where we can only get 1-2 native frames, even though there is a
valid python stack being returned. This seems to be in libmkl_avx512.so on anaconda
3.7.2 - and I failed to unwind with libunwind/gdb and the gimli based unwinder.
GDB in this case returned a message complaining about a 'corrupt stack trace'.
Rather than error out, just insert the native frames w/ the python stack.
The other error seems to be where we have exactly 1 more python PyEval_Frame* function
in the native stack than we have frames for in the python stack. This seems to happen
when the python function is finished, and the frame structure has been updated in
python but the native function hasn't exitted yet. Just allow this for now.
Also add an example program to stress test native unwinding.