run pthread tsd destructors when a timer thread pretends to exit
diff --git a/src/time/timer_create.c b/src/time/timer_create.c
index 1b184f7..c107e15 100644
--- a/src/time/timer_create.c
+++ b/src/time/timer_create.c
@@ -13,11 +13,17 @@
 	struct sigevent *sev;
 };
 
+static void dummy_1(pthread_t self)
+{
+}
+weak_alias(dummy_1, __pthread_tsd_run_dtors);
+
 static void cleanup_fromsig(void *p)
 {
 	pthread_t self = __pthread_self();
 	self->cancel = 0;
 	self->cancelbuf = 0;
+	__pthread_tsd_run_dtors(self);
 	longjmp(p, 1);
 }