diff options
author | Guy M. Broome <thrirhrafnir@gmail.com> | 2018-03-05 11:39:37 -0500 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2018-04-06 11:13:30 -0300 |
commit | df5d81a881e3db28fcd7ff1bf3886e0ec3e03c54 (patch) | |
tree | 61a267f03781e03e118c9c6ccd81f6623caecbbf | |
parent | 6c2b3b546d809123b87daa95bda49aff9fe648e3 (diff) |
Solaris: Import backtrace-on-abort from Linux, with minor modification for Solaris
-rw-r--r-- | solaris/SolarisCRT.c | 19 | ||||
-rw-r--r-- | solaris/SolarisCRT.h | 5 |
2 files changed, 19 insertions, 5 deletions
diff --git a/solaris/SolarisCRT.c b/solaris/SolarisCRT.c index 28511697..d7f8f52e 100644 --- a/solaris/SolarisCRT.c +++ b/solaris/SolarisCRT.c @@ -1,6 +1,7 @@ /* htop - SolarisCRT.c (C) 2014 Hisham H. Muhammad +(C) 2018 Guy M. Broome Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ @@ -9,13 +10,23 @@ in the source distribution for its full text. #include "CRT.h" #include <stdio.h> #include <stdlib.h> +#ifdef HAVE_EXECINFO_H +#include <execinfo.h> +#endif void CRT_handleSIGSEGV(int sgn) { (void) sgn; CRT_done(); - fprintf(stderr, "\n\nhtop " VERSION " aborting.\n"); - fprintf(stderr, "\nUnfortunately, you seem to be using an unsupported platform!"); - fprintf(stderr, "\nPlease contact your platform package maintainer!\n\n"); + fprintf(stderr, "\n\nhtop " VERSION " aborting. Please report bug at http://hisham.hm/htop\n"); + #ifdef HAVE_EXECINFO_H + 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(); } - diff --git a/solaris/SolarisCRT.h b/solaris/SolarisCRT.h index c26de36b..6ab6dfca 100644 --- a/solaris/SolarisCRT.h +++ b/solaris/SolarisCRT.h @@ -5,11 +5,14 @@ /* htop - SolarisCRT.h (C) 2014 Hisham H. Muhammad +(C) 2018 Guy M. Broome Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ -void CRT_handleSIGSEGV(int sgn); +#ifdef HAVE_EXECINFO_H +#endif +void CRT_handleSIGSEGV(int sgn); #endif |