diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2015-11-09 01:15:34 +0100 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2015-11-09 01:15:34 +0100 |
commit | 4959c6d454769f4e5d89a3432348d637ac4009f9 (patch) | |
tree | 89bdb347895b816bcaca3a7c1761514332ce3a46 /src/backtrace.c | |
parent | 98c97bd63f199fa1209429b5dd01692f41058d81 (diff) | |
download | bluez-4959c6d454769f4e5d89a3432348d637ac4009f9.tar.gz |
core: Initialize the backtracer early on at start
Diffstat (limited to 'src/backtrace.c')
-rw-r--r-- | src/backtrace.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/backtrace.c b/src/backtrace.c index 938025b45..052649620 100644 --- a/src/backtrace.c +++ b/src/backtrace.c @@ -28,15 +28,30 @@ #include <unistd.h> #include <inttypes.h> +#ifdef HAVE_BACKTRACE_SUPPORT +#include <execinfo.h> +#include <elfutils/libdwfl.h> +#endif + #include "src/log.h" #include "src/backtrace.h" +void btd_backtrace_init(void) +{ #ifdef HAVE_BACKTRACE_SUPPORT -#include <execinfo.h> -#include <elfutils/libdwfl.h> + void *frames[1]; + + /* + * initialize the backtracer, since the ctor calls dlopen(), which + * calls malloc(), which isn't signal-safe. + */ + backtrace(frames, 1); +#endif +} void btd_backtrace(uint16_t index) { +#ifdef HAVE_BACKTRACE_SUPPORT char *debuginfo_path = NULL; const Dwfl_Callbacks callbacks = { .find_debuginfo = dwfl_standard_find_debuginfo, |