* The MoreBacktrace code supplied by Apple doesn't work on 64 bit Intel
builds, so disable it there * On 10.4.8 (and possibly others), siginfo is NULL in the signal callback on 64 bit Intel builds, so account for that in the signal callback. This commit was SVN r14045.
Этот коммит содержится в:
родитель
3982be852e
Коммит
01d6121c7f
@ -32,6 +32,13 @@ AC_DEFUN([MCA_backtrace_darwin_CONFIG],[
|
||||
[backtrace_darwin_happy="yes"],
|
||||
[backtrace_darwin_happy="no"])
|
||||
|
||||
case "${host}" in
|
||||
i?86-*|x86_64*)
|
||||
if test "$ac_cv_sizeof_long" = "8" ; then
|
||||
backtrace_darwin_happy="no"
|
||||
fi
|
||||
esac
|
||||
|
||||
if test "$backtrace_darwin_happy" = "yes" ; then
|
||||
if test "$OMPI_C_GCC_INLINE_ASSEMBLY" = "0" ; then
|
||||
backtrace_darwin_happy="no"
|
||||
|
@ -101,6 +101,7 @@ static void opal_show_stackframe (int signo, siginfo_t * info, void * p)
|
||||
size -= ret;
|
||||
tmp += ret;
|
||||
|
||||
if (NULL != info) {
|
||||
switch (signo)
|
||||
{
|
||||
case SIGILL:
|
||||
@ -290,7 +291,8 @@ static void opal_show_stackframe (int signo, siginfo_t * info, void * p)
|
||||
tmp += ret;
|
||||
break;
|
||||
}
|
||||
case SIGCHLD: {
|
||||
case SIGCHLD:
|
||||
{
|
||||
ret = snprintf(tmp, size, HOSTFORMAT "Sending PID: %d, Sending UID: %d, Status: %d\n",
|
||||
stacktrace_hostname, getpid(),
|
||||
info->si_pid, info->si_uid, info->si_status);
|
||||
@ -299,7 +301,8 @@ static void opal_show_stackframe (int signo, siginfo_t * info, void * p)
|
||||
break;
|
||||
}
|
||||
#ifdef SIGPOLL
|
||||
case SIGPOLL: {
|
||||
case SIGPOLL:
|
||||
{
|
||||
#ifdef HAVE_SIGINFO_T_SI_FD
|
||||
ret = snprintf(tmp, size, HOSTFORMAT "Band event: %ld, File Descriptor : %d\n",
|
||||
stacktrace_hostname, getpid(), info->si_band, info->si_fd);
|
||||
@ -315,6 +318,13 @@ static void opal_show_stackframe (int signo, siginfo_t * info, void * p)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
} else {
|
||||
ret = snprintf(tmp, size,
|
||||
HOSTFORMAT "siginfo is NULL, additional information unavailable\n",
|
||||
stacktrace_hostname, getpid());
|
||||
size -= ret;
|
||||
tmp += ret;
|
||||
}
|
||||
|
||||
/* write out the signal information generated above */
|
||||
write(fileno(stderr), print_buffer, sizeof(print_buffer)-size);
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user