Re: Yet another unwinding approach

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Florian,

On Wed, 2023-01-18 at 07:22 +0100, Florian Weimer wrote:
> * Daniel Colascione:
> 
> > See, both pro-FP and anti-FP camps think that it's the kernel that has
> > to do the unwinding unless we copy whole stacks into traces.
> 
> Well, I think we should explore hardware-assisted backtraces (shadow
> stacks), which hopefully are going to get merged in Linux 6.2.

Yes, that is also a good alternative if available. The shadow stack
seems to be ideal because it is just the function return addresses,
which basically is just the backtrace you are looking for.

> If the unwind information is incomplete, this …
> 
> > 7) signal handler unwinds the calling thread however it wants (and can
> > sleep and take page faults if needed)
> 
> … might encounter segmentation faults and terminate the process.  So
> far, incorrect unwind information (whether it's a clobbered frame
> pointer, or missing DWARF information about clobbered registers) is not
> a problem, but it's kind of hard to validate this information from
> within the process itself.  Maybe we'd have to add a magic memcpy first
> to the vDSO, which the kernel recognizes based on the code addresses,
> and suppresses sending the signal for it.

Yeah, I am not too afraid of that happening with an .eh_frame based
unwinder unless someone deliberately produced a bad table (or dlcloses
a library which still has code on the call stack). You still have to be
careful about the stack bounds of course.

But it is something to keep in mind, accidents happen. I assume that
any (seg) fault caused by the unwind signal thread will simply end that
contribution of user space to the backtrace (instead of really
generating a SEGV)

But it is tricky to handle that without kernel support. As a fallback
you could install a SIGSEGV handler that handles the fault and somehow
makes the original SIGPROF based handler (if you use that) sigreturn.

Cheers,

Mark
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux