On 05/23/2012 09:49 PM, Peter Hutterer wrote: > On Mon, May 14, 2012 at 02:14:28PM -0700, Chase Douglas wrote: >> Backtraces are often printed in signal context, such as when a segfault >> occurs. >> >> Signed-off-by: Chase Douglas <[email protected]> >> --- >> os/backtrace.c | 49 +++++++++++++++++++++++++++++-------------------- >> 1 file changed, 29 insertions(+), 20 deletions(-) >> >> diff --git a/os/backtrace.c b/os/backtrace.c >> index 81348f4..d41c3f3 100644 >> --- a/os/backtrace.c >> +++ b/os/backtrace.c >> @@ -45,29 +45,37 @@ xorg_backtrace(void) >> int size, i; >> Dl_info info; >> >> - ErrorF("\n"); >> - ErrorF("Backtrace:\n"); >> + ErrorSigSafe("\n"); >> + ErrorSigSafe("Backtrace:\n"); >> size = backtrace(array, 64); >> for (i = 0; i < size; i++) { >> int rc = dladdr(array[i], &info); >> >> if (rc == 0) { >> - ErrorF("%d: ?? [%p]\n", i, array[i]); >> + ErrorSigSafe("%u: ?? [%p]\n", i, array[i]); >> continue; >> } >> mod = (info.dli_fname && *info.dli_fname) ? info.dli_fname : >> "(vdso)"; >> if (info.dli_saddr) >> - ErrorF("%d: %s (%s+0x%lx) [%p]\n", i, mod, >> - info.dli_sname, >> - (long unsigned int) ((char *) array[i] - >> - (char *) info.dli_saddr), array[i]); >> + ErrorSigSafe( >> + "%u: %s (%s+0x%x) [%p]\n", >> + i, >> + mod, >> + info.dli_sname, >> + (long unsigned int)((char *) array[i] - >> + (char *) info.dli_saddr), >> + array[i]); >> else >> - ErrorF("%d: %s (%p+0x%lx) [%p]\n", i, mod, >> - info.dli_fbase, >> - (long unsigned int) ((char *) array[i] - >> - (char *) info.dli_fbase), array[i]); >> + ErrorSigSafe( >> + "%u: %s (%s+0x%x) [%p]\n", > > typo: this should be "%u: %s (%p+0x%lx) [%p]\n" (note the %p, not %s). The > backtrace looks like garbage otherwise. > > Reviewed-by: Peter Hutterer <[email protected]> otherwise
Thanks, I've fixed this up. -- Chase _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
