There was a serious bug with scheduler, related to locking.
diff --git a/scheduler/periodic-task.h b/scheduler/periodic-task.h
index 8536b6f..f36d71a 100644
--- a/scheduler/periodic-task.h
+++ b/scheduler/periodic-task.h
@@ -32,7 +32,7 @@
   // generator is needed only when this is a periodic task
   // two simple generators implementation (SimpleIntervalGenerator and RandomIntervalGenerator) are provided;
   // if user needs more complex pattern in the intervals between calls, extend class IntervalGenerator
-  PeriodicTask(const Callback &callback, const Tag &tag, const SchedulerPtr &scheduler, const IntervalGeneratorPtr &generator);
+  PeriodicTask(const Callback &callback, const Tag &tag, const SchedulerPtr &scheduler, IntervalGeneratorPtr generator);
   virtual ~PeriodicTask(){}
 
   // invoke callback, reset self and ask scheduler to schedule self with the next delay interval