Solaris: Import backtrace-on-abort from Linux, with minor modification for Solaris

This commit is contained in:
Guy M. Broome 2018-03-05 11:39:37 -05:00 committed by Hisham Muhammad
parent 6c2b3b546d
commit df5d81a881
2 changed files with 19 additions and 5 deletions

View File

@ -1,6 +1,7 @@
/* /*
htop - SolarisCRT.c htop - SolarisCRT.c
(C) 2014 Hisham H. Muhammad (C) 2014 Hisham H. Muhammad
(C) 2018 Guy M. Broome
Released under the GNU GPL, see the COPYING file Released under the GNU GPL, see the COPYING file
in the source distribution for its full text. in the source distribution for its full text.
*/ */
@ -9,13 +10,23 @@ in the source distribution for its full text.
#include "CRT.h" #include "CRT.h"
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#ifdef HAVE_EXECINFO_H
#include <execinfo.h>
#endif
void CRT_handleSIGSEGV(int sgn) { void CRT_handleSIGSEGV(int sgn) {
(void) sgn; (void) sgn;
CRT_done(); CRT_done();
fprintf(stderr, "\n\nhtop " VERSION " aborting.\n"); fprintf(stderr, "\n\nhtop " VERSION " aborting. Please report bug at http://hisham.hm/htop\n");
fprintf(stderr, "\nUnfortunately, you seem to be using an unsupported platform!"); #ifdef HAVE_EXECINFO_H
fprintf(stderr, "\nPlease contact your platform package maintainer!\n\n"); size_t size = backtrace(backtraceArray, sizeof(backtraceArray) / sizeof(void *));
fprintf(stderr, "\n Please include in your report the following backtrace: \n");
backtrace_symbols_fd(backtraceArray, size, 2);
fprintf(stderr, "\nAdditionally, in order to make the above backtrace useful,");
fprintf(stderr, "\nplease also run the following command to generate a disassembly of your binary:");
fprintf(stderr, "\n\n objdump -d `which htop` > ~/htop.objdump");
fprintf(stderr, "\n\nand then attach the file ~/htop.objdump to your bug report.");
fprintf(stderr, "\n\nThank you for helping to improve htop!\n\n");
#endif
abort(); abort();
} }

View File

@ -5,11 +5,14 @@
/* /*
htop - SolarisCRT.h htop - SolarisCRT.h
(C) 2014 Hisham H. Muhammad (C) 2014 Hisham H. Muhammad
(C) 2018 Guy M. Broome
Released under the GNU GPL, see the COPYING file Released under the GNU GPL, see the COPYING file
in the source distribution for its full text. in the source distribution for its full text.
*/ */
#ifdef HAVE_EXECINFO_H
#endif
void CRT_handleSIGSEGV(int sgn); void CRT_handleSIGSEGV(int sgn);
#endif #endif