summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean Guyomarc'h <jean@guyomarch.bzh>2017-12-19 16:33:18 +0100
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2018-02-07 02:56:16 +0900
commitb0c964b2cbe52fabe94e7a9680daea201685887e (patch)
tree7c576a2e8e5e0b414ff7182a7e6ce645bcc5b21a
parent73b5982af1f79de84a7d1fc4d41c2a3ec6c89ff4 (diff)
downloadefl-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.c2
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;