diff options
author | Jean Guyomarc'h <jean@guyomarch.bzh> | 2017-12-19 16:33:18 +0100 |
---|---|---|
committer | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2018-02-07 02:56:16 +0900 |
commit | b0c964b2cbe52fabe94e7a9680daea201685887e (patch) | |
tree | 7c576a2e8e5e0b414ff7182a7e6ce645bcc5b21a | |
parent | 73b5982af1f79de84a7d1fc4d41c2a3ec6c89ff4 (diff) | |
download | efl-b0c964b2cbe52fabe94e7a9680daea201685887e.tar.gz |
eina: fix random segfaults when displaying BT
Under some circumstances, eina crashes when attempting to display the
backtrace, because dladdr() may yield a dli_fname that is NULL. This is
especially annoying in realease, when the backtrace is shown by default
when CRI/ERR are thrown.
@fix
-rw-r--r-- | src/lib/eina/eina_debug_bt.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/lib/eina/eina_debug_bt.c b/src/lib/eina/eina_debug_bt.c index c9bf23c541..21b067c395 100644 --- a/src/lib/eina/eina_debug_bt.c +++ b/src/lib/eina/eina_debug_bt.c @@ -67,7 +67,7 @@ _eina_debug_dump_fhandle_bt(FILE *f, void **bt, int btlen) offset = base = 0; // we have little choice but to hope/assume dladdr() doesn't alloc // anything here - if ((dladdr(bt[i], &info)) && (info.dli_fname[0])) + if ((dladdr(bt[i], &info)) && (info.dli_fname) && (info.dli_fname[0])) { offset = (unsigned long long)(uintptr_t)bt[i]; base = (unsigned long long)(uintptr_t)info.dli_fbase; |