diff --git a/components/common/cpp/src/timer.cpp b/components/common/cpp/src/timer.cpp
index 0efe520928c5916a23d4c7b4ad7af533dbaa4a2f..2ef4432415615057691bc68de063b5fdfcd2feab 100644
--- a/components/common/cpp/src/timer.cpp
+++ b/components/common/cpp/src/timer.cpp
@@ -220,10 +220,10 @@ static void trigger_jobs() {
 
 		// If last job in list then do in this thread
 		if (active_jobs == jobs[kTimerMain].size()+1) {
+			lk.unlock();
 			bool doremove = !pj->job.trigger(ts);
 			pj->active = false;
 			active_jobs--;
-			lk.unlock();
 			if (doremove) removeJob(pj->id);
 			lk.lock();
 			break;