Hello all, I'm running into an issue when using libunwind, where it seems
to be unable to unwind through a function that contains no stack variables.
 This is coming from JIT'd code (specifically, LLVM's MCJIT), and I haven't
set up a _U_dyn_register hook yet, so libunwind is falling back on the
call-frame, which is fine since so far I'm disabling frame-pointer
elimination.  The problem is that I've apparently generated my first
function that contains no stack variables, which means that rsp=rbp and
libunwind judges it to be an invalid rbp value and stops the unwind.

Here's a very simple patch that changes the heuristic to allow zero-length
frames:
https://github.com/dropbox/pyston/blob/1b2e676417b0f5f17526ece0ed840aa88c744145/libunwind_patches/0001-Change-the-RBP-validation-heuristic-to-allow-size-0-.patch

It fixes this particular problem for me, but I don't know if an rbp=rsp
situation is more commonly an unwind failure.  I'm planning on adding a
_U_dyn_register hook which I assume is the better fix, but I was curious if
this behavior is intentional.

kmod
_______________________________________________
Libunwind-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/libunwind-devel

Reply via email to