summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDiederik de Groot <ddegroot@talon.nl>2017-04-21 16:36:19 +0200
committerDiederik de Groot <ddegroot@talon.nl>2017-04-21 16:36:19 +0200
commitcb7a06379d872ca28918517c7f9d1ad14f02b389 (patch)
tree7c22bc66ca64ac7df3d60e7f1e6a325f47a8360b
parentcba695961a995a692495f9990d8a047f0bf052c8 (diff)
Enh: Add support for backtrace using execinfo
-rw-r--r--Makefile.am2
-rw-r--r--dragonflybsd/DragonFlyBSDCRT.c16
-rw-r--r--dragonflybsd/DragonFlyBSDCRT.h3
3 files changed, 19 insertions, 2 deletions
diff --git a/Makefile.am b/Makefile.am
index cdd4fb95..e033c35d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -54,7 +54,7 @@ freebsd/FreeBSDProcess.h freebsd/FreeBSDCRT.h freebsd/Battery.h
endif
if HTOP_DRAGONFLYBSD
-htop_LDFLAGS += -lkvm -lkinfo
+htop_LDFLAGS += -lkvm -lkinfo -lexecinfo
myhtopplatsources = dragonflybsd/Platform.c dragonflybsd/DragonFlyBSDProcessList.c \
dragonflybsd/DragonFlyBSDProcess.c dragonflybsd/DragonFlyBSDCRT.c dragonflybsd/Battery.c
diff --git a/dragonflybsd/DragonFlyBSDCRT.c b/dragonflybsd/DragonFlyBSDCRT.c
index 52e86d9e..ba311856 100644
--- a/dragonflybsd/DragonFlyBSDCRT.c
+++ b/dragonflybsd/DragonFlyBSDCRT.c
@@ -10,12 +10,26 @@ 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, "\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");
+ #else
fprintf(stderr, "\nPlease contact your DragonFlyBSD package maintainer!\n\n");
+ #endif
abort();
}
diff --git a/dragonflybsd/DragonFlyBSDCRT.h b/dragonflybsd/DragonFlyBSDCRT.h
index 1b650046..b934ac32 100644
--- a/dragonflybsd/DragonFlyBSDCRT.h
+++ b/dragonflybsd/DragonFlyBSDCRT.h
@@ -10,6 +10,9 @@ Released under the GNU GPL, see the COPYING file
in the source distribution for its full text.
*/
+#ifdef HAVE_EXECINFO_H
+#endif
+
void CRT_handleSIGSEGV(int sgn);

© 2014-2024 Faster IT GmbH | imprint | privacy policy