diff -uNr uftrace-0.9.3/libmcount/wrap.c uftrace-0.9.3.mod/libmcount/wrap.c
--- uftrace-0.9.3/libmcount/wrap.c	2019-07-13 17:25:47.000000000 +0300
+++ uftrace-0.9.3.mod/libmcount/wrap.c	2019-09-03 20:46:52.430226391 +0300
@@ -216,7 +216,6 @@
 /*
  * hooking functions
  */
-static int (*real_backtrace)(void **buffer, int sz);
 static void (*real_cxa_throw)(void *exc, void *type, void *dest);
 static void (*real_cxa_rethrow)(void);
 static void * (*real_cxa_begin_catch)(void *exc);
@@ -241,7 +240,6 @@
 
 void mcount_hook_functions(void)
 {
-	real_backtrace		= dlsym(RTLD_NEXT, "backtrace");
 	real_cxa_throw		= dlsym(RTLD_NEXT, "__cxa_throw");
 	real_cxa_rethrow	= dlsym(RTLD_NEXT, "__cxa_rethrow");
 	real_cxa_begin_catch	= dlsym(RTLD_NEXT, "__cxa_begin_catch");
@@ -258,22 +256,7 @@
 
 __visible_default int backtrace(void **buffer, int sz)
 {
-	int ret;
-	struct mcount_thread_data *mtdp;
-
-	if (unlikely(real_backtrace == NULL))
-		mcount_hook_functions();
-
-	mtdp = get_thread_data();
-	if (!check_thread_data(mtdp))
-		mcount_rstack_restore(mtdp);
-
-	ret = real_backtrace(buffer, sz);
-
-	if (!check_thread_data(mtdp))
-		mcount_rstack_reset(mtdp);
-
-	return ret;
+	return 0;
 }
 
 __visible_default void __cxa_throw(void *exception, void *type, void *dest)
@@ -324,7 +307,8 @@
 	real_cxa_rethrow();
 }
 
-__visible_default void _Unwind_Resume(void *exception)
+void __real__Unwind_Resume(void *exception);
+__visible_default void __wrap__Unwind_Resume(void *exception)
 {
 	struct mcount_thread_data *mtdp;
 
@@ -345,7 +329,7 @@
 		mcount_rstack_restore(mtdp);
 	}
 
-	real_unwind_resume(exception);
+	__real__Unwind_Resume(exception);
 }
 
 __visible_default void * __cxa_begin_catch(void *exception)
