os: don't ignore failure from dladdr
If dladdr returns 0, don't go and use the returned Dl_info, it may contain garbage. X.Org bug#44315 <https://bugs.freedesktop.org/show_bug.cgi?id=44315> Reported-and-tested-by: Cyril Brulebois <kibi@debian.org> Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com> Reviewed-by: Cyril Brulebois <kibi@debian.org> Signed-off-by: Julien Cristau <jcristau@debian.org>
This commit is contained in:
parent
644efb43e0
commit
6269977c91
|
@ -46,7 +46,11 @@ void xorg_backtrace(void)
|
||||||
ErrorF("\nBacktrace:\n");
|
ErrorF("\nBacktrace:\n");
|
||||||
size = backtrace(array, 64);
|
size = backtrace(array, 64);
|
||||||
for (i = 0; i < size; i++) {
|
for (i = 0; i < size; i++) {
|
||||||
dladdr(array[i], &info);
|
int rc = dladdr(array[i], &info);
|
||||||
|
if (rc == 0) {
|
||||||
|
ErrorF("%d: ?? [%p]\n", i, array[i]);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
mod = (info.dli_fname && *info.dli_fname) ? info.dli_fname : "(vdso)";
|
mod = (info.dli_fname && *info.dli_fname) ? info.dli_fname : "(vdso)";
|
||||||
if (info.dli_saddr)
|
if (info.dli_saddr)
|
||||||
ErrorF("%d: %s (%s+0x%lx) [%p]\n", i, mod,
|
ErrorF("%d: %s (%s+0x%lx) [%p]\n", i, mod,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user