--- a/thread.c +++ b/thread.c @@ -11,7 +11,6 @@ #include #include #include -#include #include #include #include @@ -23,7 +23,7 @@ #include #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