On Tue, Jun 3, 2014 at 6:18 AM, Milian Wolff <[email protected]> wrote:
>
> To me that does not look like a failure :)
>

Yeah, I'll fix up the test too unless this breaks any of the stuff
Lassi may be aware of.

> Furthermore, while this patch fixes the unw_backtrace usage for me, shouldn't
> the same be done for the unw_step case? There, the last call to unw_step still
> triggers the slow-path which I mentioned in my original thread. How could we
> fix this? Where is the analogous check for last frame based on rbp in the
> code? And, if we'd fix it there, wouldn't then the patch to Gtrace.c be
> obsolete, as then we'd get ret == 0 already, no?

Here's the code that does the same thing in unw_step:

src/x86_64/Gstep.c:

          if (!rbp)
            {
              /* Looks like we may have reached the end of the call-chain.  */
              rbp_loc = DWARF_NULL_LOC;
              rsp_loc = DWARF_NULL_LOC;
              rip_loc = DWARF_NULL_LOC;
            }
...
      if (DWARF_IS_NULL_LOC (c->dwarf.loc[RBP]))
        {
          ret = 0;
          Debug (2, "NULL %%rbp loc, returning %d\n", ret);
          return ret;
        }


But anything can happen once you get into a weird combination of dwarf
based unwinding, frame chain based unwinding, heuristics and real
world complexity :)

 -Arun

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

Reply via email to