void MyFrame::pop(int stackLevel, uint64_t time, CallStackBase *base) { int pid = base->getId(); CallStackType *stack = (CallStackType *) base; #if 0 fprintf(stderr, "native pop t %llu p %d s %d fid %d 0x%x %s\n", stack->getGlobalTime(time), pid, stackLevel, function->id, function->addr, function->name); #endif FunctionStack *fstack = dmtrace_stack[pid]; if (fstack == NULL) { fstack = new FunctionStack(); dmtrace_stack[pid] = fstack; } symbol_type *sym = fstack->pop(); if (sym != NULL && sym != function) { fprintf(stderr, "Error: q2dm function mismatch at time %llu pid %d sym %s\n", stack->getGlobalTime(time), pid, sym->name); fstack->showStack(); exit(1); } thread_time[pid] = time; dmtrace->addFunctionExit(function->id, time, pid); }