diff --git a/src/event-scheduler.cpp b/src/event-scheduler.cpp
index be67aad..33697a5 100644
--- a/src/event-scheduler.cpp
+++ b/src/event-scheduler.cpp
@@ -14,6 +14,11 @@
   task = NULL;
 }
 
+void errorCallback(int err)
+{
+  cout << "Fatal error: " << err << endl;
+}
+
 Task::Task(const Callback &callback, const Tag &tag, const SchedulerPtr &scheduler)
      : m_callback(callback)
      , m_tag(tag)
@@ -130,8 +135,9 @@
   return interval;
 }
 
-Scheduler::Scheduler()
+Scheduler::Scheduler() : m_running(false)
 {
+  event_set_fatal_callback(errorCallback);
   evthread_use_pthreads();
   m_base = event_base_new();
 }
@@ -144,19 +150,40 @@
 void
 Scheduler::eventLoop()
 {
-  event_base_loop(m_base, EVLOOP_NO_EXIT_ON_EMPTY);
+  while(true)
+  {
+    if (event_base_loop(m_base, EVLOOP_NO_EXIT_ON_EMPTY) < 0)
+    {
+      cout << "scheduler loop break error" << endl;
+    }
+    ReadLock(m_mutex);
+    if (!m_running)
+    {
+      cout << "scheduler loop break normal" << endl;
+      break;
+    }
+  }
 }
 
 void
 Scheduler::start()
 {
+  {
+    WriteLock(m_mutex);
+    m_running = true;
+  }
   m_thread = boost::thread(&Scheduler::eventLoop, this);
 }
 
 void
 Scheduler::shutdown()
 {
+  {
+    WriteLock(m_mutex);
+    m_running = false;
+  }
   event_base_loopbreak(m_base);
+  cout << "shutdown, calling loop break" << endl;
   m_thread.join();
 }
 
@@ -168,9 +195,17 @@
   if (addToMap(newTask))
   {
     newTask->reset();
-    evtimer_add(newTask->ev(), newTask->tv());
+    int res = evtimer_add(newTask->ev(), newTask->tv());
+    if (res < 0)
+    {
+      cout << "evtimer_add failed for " << task->tag() << endl;
+    }
     return true;
   }
+  else
+  {
+    cout << "fail to add task: " << task->tag() << endl;
+  }
 
   return false;
 }
@@ -184,7 +219,11 @@
   {
     TaskPtr task = it->second;
     task->reset();
-    evtimer_add(task->ev(), task->tv());
+    int res = evtimer_add(task->ev(), task->tv());
+    if (res < 0)
+    {
+      cout << "evtimer_add failed for " << task->tag() << endl;
+    }
   }
 }
 
