+ if (r->stack[r->stackend - 1].func && func &&
+ strcmp(r->stack[r->stackend - 1].func,
+ func) != 0) {
+ struct backtrace bt;
+
+ err_printf("URCU lock/unlock caller mismatch: lock by <%s> unlock by <%s>\n",
+ r->stack[r->stackend - 1].func, func);
+ save_backtrace(&bt);
+ print_bt(&bt);
+ free_backtrace(&bt);
+ }
+ r->stackend--;
+ free(r->stack[r->stackend].func);
+ r->stack[r->stackend].func = NULL;
+ free(func);