--- a/thread.c
+++ b/thread.c
@@ -11,7 +11,6 @@
 #include <cxxabi.h>
 #include <dlfcn.h>
 #include <errno.h>
-#include <execinfo.h>
 #include <linux/unistd.h>
 #include <malloc.h>
 #include <stdarg.h>
@@ -23,7 +23,7 @@
 #include <unistd.h>
 #include "tools.h"
 
-#define ABORT { dsyslog("ABORT!"); cBackTrace::BackTrace(); abort(); }
+#define ABORT { dsyslog("ABORT!"); }
 
 //#define DEBUG_LOCKING  // uncomment this line to activate debug output for locking
 #define DEBUG_LOCKSEQ  // uncomment this line to activate debug output for invalid locking sequence
@@ -516,43 +515,6 @@
      }
   free(DemangledFunction);
   return d;
-}
-
-void cBackTrace::BackTrace(cStringList &StringList, int Level, bool Mangled)
-{
-  void *b[BT_BUF_SIZE];
-  int n = backtrace(b, BT_BUF_SIZE);
-  if (char **s = backtrace_symbols(b, n)) {
-     for (int i = max(Level, 0) + 1; i < n; i++) // 1 is the call to this function itself
-         StringList.Append(strdup(Mangled ? s[i] : *Demangle(s[i])));
-     free(s);
-     }
-}
-
-void cBackTrace::BackTrace(FILE *f, int Level, bool Mangled)
-{
-  cStringList sl;
-  BackTrace(sl, Level + 1, Mangled); // 1 is the call to this function itself
-  for (int i = 0; i < sl.Size(); i++) {
-      if (f)
-         fprintf(f, "%s\n", sl[i]);
-      else
-         dsyslog("%s", sl[i]);
-      }
-}
-
-cString cBackTrace::GetCaller(int Level, bool Mangled)
-{
-  cString Caller;
-  Level = max(Level, 0) + 1; // 1 is the call to this function itself
-  void *b[BT_BUF_SIZE];
-  int n = backtrace(b, BT_BUF_SIZE);
-  if (char **s = backtrace_symbols(b, n)) {
-     if (Level < n)
-        Caller = Mangled ? s[Level] : *Demangle(s[Level]);
-     free(s);
-     }
-  return Caller;
 }
 
 // --- cStateLockLog ---------------------------------------------------------
@@ -596,7 +596,6 @@
       }
   dsyslog("%5d invalid lock sequence: %s", ThreadId, Name);
   dsyslog("full backtrace:");
-  cBackTrace::BackTrace(NULL, 2);
   dsyslog("--- end invalid lock sequence report");
   dsyslog("--- THERE WILL BE NO FURTHER REPORTS UNTIL VDR IS RESTARTED!");
   fprintf(stderr, "invalid lock sequence at %s\n", *DayDateTime(time(NULL)));
--- a/thread.h
+++ b/thread.h
@@ -315,12 +315,10 @@
          ///< Note that this function works on the given string by inserting '\0'
          ///< characters to separate the individual parts. Therefore the string
          ///< will be modified upon return.
-  static void BackTrace(cStringList &StringList, int Level = 0, bool Mangled = false);
          ///< Produces a backtrace and stores it in the given StringList.
          ///< If Level is given, only calls up to the given value are listed.
          ///< If Mangled is true, the raw backtrace will be returned and you can use
          ///< Demangle() to make the function names readable.
-  static void BackTrace(FILE *f = NULL, int Level = 0, bool Mangled = false);
          ///< Produces a backtrace beginning at the given Level, and
          ///< writes it to the given file. If no file is given, the backtrace is
          ///< written to the logfile. If Mangled is true, the raw backtrace will
