NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
re: toolchain/53918: X crashes on pinebook and stack unwinding broken
The following reply was made to PR toolchain/53918; it has been noted by GNATS.
From: matthew green <mrg%eterna.com.au@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: toolchain-manager%netbsd.org@localhost, gnats-admin%netbsd.org@localhost,
netbsd-bugs%netbsd.org@localhost
Subject: re: toolchain/53918: X crashes on pinebook and stack unwinding broken
Date: Tue, 29 Jan 2019 11:19:08 +1100
i hacked the xorg_backtrace() function into a simple test case that
also hangs on arm64 for me.
.mrg.
#include <dlfcn.h>
#include <execinfo.h>
#include <stdio.h>
#include <signal.h>
#define ErrorFSigSafe printf
void
xorg_backtrace(void)
{
const int BT_SIZE = 64;
void *array[BT_SIZE];
const char *mod;
int size, i;
Dl_info info;
ErrorFSigSafe("\n");
ErrorFSigSafe("Backtrace:\n");
size = backtrace(array, BT_SIZE);
ErrorFSigSafe("bt size = %d\n", size);
for (i = 0; i < size; i++) {
int rc = dladdr(array[i], &info);
if (rc == 0) {
ErrorFSigSafe("%u: ?? [%p]\n", i, array[i]);
continue;
}
mod = (info.dli_fname && *info.dli_fname) ? info.dli_fname : "(vdso)";
if (info.dli_saddr)
ErrorFSigSafe(
"%u: %s (%s+0x%x) [%p]\n",
i,
mod,
info.dli_sname,
(unsigned int)((char *) array[i] -
(char *) info.dli_saddr),
array[i]);
else
ErrorFSigSafe(
"%u: %s (%p+0x%x) [%p]\n",
i,
mod,
info.dli_fbase,
(unsigned int)((char *) array[i] -
(char *) info.dli_fbase),
array[i]);
}
ErrorFSigSafe("\n");
}
void
call_bt(int signo)
{
printf("signo: %d\n", signo);
xorg_backtrace();
}
int
main(void)
{
xorg_backtrace();
signal(SIGSEGV, call_bt);
*(volatile char *)0 = 1;
}
Home |
Main Index |
Thread Index |
Old Index