Index: uspace/lib/c/generic/fibril_synch.c
===================================================================
--- uspace/lib/c/generic/fibril_synch.c	(revision 8dc9b72a927498fd8dbd6bb27c6cd28f5b3eb14b)
+++ uspace/lib/c/generic/fibril_synch.c	(revision 5a5b087fbcfc49e4bb66e16d7aa9a368508195bd)
@@ -477,6 +477,6 @@
 	/* Acknowledge timer fibril has finished cleanup. */
 	timer->state = fts_clean;
+	fibril_condvar_broadcast(&timer->cv);
 	fibril_mutex_unlock(timer->lockp);
-	free(timer);
 
 	return 0;
@@ -525,5 +525,11 @@
 	timer->state = fts_cleanup;
 	fibril_condvar_broadcast(&timer->cv);
+
+	/* Wait for timer fibril to terminate */
+	while (timer->state != fts_clean)
+		fibril_condvar_wait(&timer->cv, timer->lockp);
 	fibril_mutex_unlock(timer->lockp);
+
+	free(timer);
 }
 
