[Lldb-commits] [PATCH] D124198: [LLDB][Unwind] Add stack scanning as fallback unwind plan if no symbol file is available.

Jason Molenda via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Thu Apr 21 16:26:03 PDT 2022


jasonmolenda added a comment.

This is obviously building on Pavel's work of https://reviews.llvm.org/D66638 for Win32 systems.  What problem with that existing patchset is this addressing?  Pavel's original patch assumes that we can retrieve a function's expected stack frame size, and the size of the caller's arguments on the stack, plus a bit of searching around that location, as he describes.  It seems like in ABIWindows_x86_64::CreateStackWalkingUnwindPlan you're adding a scheme that tries to look at the area directly around $sp for a return pc?  This seems quite fragile by itself.

The idea of a stack walk based purely on looking at stack contents, outside of the Windows ABI, is interesting, but as Pavel mentions in his descriptions, you have to be careful to not get tricked by function pointers on the stack (for return-pc's) and pointers to stack memory (for spilled fp or sp values).  If we have an ABI that always writes fp+return-pc to stack at the start of the stack frame for non-leaf frames, we could maybe do something as a last resort, I haven't thought about it.

Greg's feedback is all solid.  I'm more curious about what higher level fix is being pursued with this patch.  Pavel is clearly the person who knows the most about this part of the unwinder.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D124198/new/

https://reviews.llvm.org/D124198



More information about the lldb-commits mailing list