#include "bctrace.h"
+#ifdef BOOBY
+#include <execinfo.h>
+#define BT_BUF_SIZE 100
+// booby trap (backtrace)
+void booby() {
+ printf("BOOBY!\n");
+ void *buffer[BT_BUF_SIZE];
+ int nptrs = backtrace(buffer, BT_BUF_SIZE);
+ char **trace = backtrace_symbols(buffer, nptrs);
+ if( !trace ) return;
+ for( int i=0; i<nptrs; ) printf("%s\n", trace[i++]);
+ free(trace);
+}
+#endif
+
BC_Trace *BC_Trace::global_trace = 0;
int trace_memory = 0;
int trace_locks = 1;
TheLock TheLocker::the_lock;
TheList TheList::the_list;
-TheChk TheChk::the_chk;
int lock_item::table_id = 0;
{
TheLocker the_locker;
int i = the_list.size();
- while( --i >= 0 && the_list[i]->tid != tid );
+ while( --i >= 0 && !(the_list[i]->tid == tid && the_list[i]->owner == owner) );
if( i >= 0 ) {
printf("dbg_add, dup %016lx %s %s\n",
(unsigned long)tid, nm, the_list[i]->name);