On Thu, Apr 14, 2022 at 10:19 PM Stephen Hemminger
<step...@networkplumber.org> wrote:
>
> rte_dump_stack() needs to be usable in situations when a bug is
> encountered and from signal handlers (such as SEGV).
>
> Glibc backtrace_symbols() calls malloc which makes it
> dangerous in a signal handler that is handling errors that maybe
> due to memory corruption. Additionally, rte_log() is unsafe because
> syslog() is not signal safe; printf() is also documented as
> not being safe.
>
> This version formats message and uses writev for each line in a manner
> similar to what glibc version of backtrace_symbols_fd() does. The
> FreeBSD version of backtrace_symbols_fd() is not signal safe.
>
> Sample output:
>
> 0: ./build/app/dpdk-testpmd (rte_dump_stack+0x2b) [560a6e9c002b]
> 1: ./build/app/dpdk-testpmd (main+0xad) [560a6decd5ad]
> 2: /lib/x86_64-linux-gnu/libc.so.6 (__libc_start_main+0xcd) [7fd43d3e27fd]
> 3: ./build/app/dpdk-testpmd (_start+0x2a) [560a6e83628a]
>
> Bugzilla ID: 929
> Acked-by: Morten Brørup <m...@smartsharesystems.com>
> Signed-off-by: Stephen Hemminger <step...@networkplumber.org>
Reviewed-by: David Marchand <david.march...@redhat.com>

Applied, thanks.


-- 
David Marchand

Reply via email to