diff --git a/src/lynq/lib/liblynq-call/lynq_call.cpp b/src/lynq/lib/liblynq-call/lynq_call.cpp
index 6656dc6..4996a3b 100755
--- a/src/lynq/lib/liblynq-call/lynq_call.cpp
+++ b/src/lynq/lib/liblynq-call/lynq_call.cpp
@@ -71,8 +71,8 @@
 lynq_call_list_e_t lynq_call_lists[LYNQ_CALL_MAX]={};
 static pthread_mutex_t call_state_change_mutex = PTHREAD_MUTEX_INITIALIZER;
 static pthread_cond_t call_state_change_cond = PTHREAD_COND_INITIALIZER;
-static pthread_mutex_t s_urc_call_state_change_mutex = PTHREAD_MUTEX_INITIALIZER;
-static pthread_cond_t s_urc_call_state_change_cond = PTHREAD_COND_INITIALIZER;
+static pthread_mutex_t *s_urc_call_state_change_mutex = NULL;
+static pthread_cond_t *s_urc_call_state_change_cond = NULL;
 static pthread_mutex_t s_incoming_call_mutex = PTHREAD_MUTEX_INITIALIZER;
 static pthread_cond_t s_incoming_call_cond = PTHREAD_COND_INITIALIZER;
 pthread_t lynq_call_urc_tid = -1;
@@ -86,7 +86,7 @@
 int client_size = 0;
 /*lei add*/
 
-int s_call_urc_event_complete = 1;
+int s_call_urc_event_complete = 0;
 
 enum{
     CALL_OFF=0,
@@ -129,7 +129,7 @@
 int global_call_count =0;
 int global_call_auto_answer = 0;
 bool urc_call_recive_status = 1;
-bool call_list_loop = 1;
+bool call_list_loop = 0;
 int isDial = 0;
 int lynqIncomingCallId = 0;
 
@@ -483,8 +483,8 @@
     while(call_list_loop)
     {
         update=0;
-        pthread_mutex_lock(&s_urc_call_state_change_mutex);
-        pthread_cond_wait(&s_urc_call_state_change_cond, &s_urc_call_state_change_mutex);
+        pthread_mutex_lock(s_urc_call_state_change_mutex);
+        pthread_cond_wait(s_urc_call_state_change_cond, s_urc_call_state_change_mutex);
         LYDBGLOG("triggerGetCallList event!!!");
         memset(call_list,0,sizeof(call_list));
         ret = lynq_get_current_call_list(call_list);
@@ -643,7 +643,7 @@
         {
             LYINFLOG("now is not dialing");
         }
-        pthread_mutex_unlock(&s_urc_call_state_change_mutex);
+        pthread_mutex_unlock(s_urc_call_state_change_mutex);
     }
     return NULL;
 }
@@ -652,10 +652,10 @@
 {
     if(s_call_urc_event_complete==1)
     {
-        pthread_mutex_lock(&s_urc_call_state_change_mutex);
-        pthread_cond_signal(&s_urc_call_state_change_cond);
+        pthread_mutex_lock(s_urc_call_state_change_mutex);
+        pthread_cond_signal(s_urc_call_state_change_cond);
         s_call_urc_event_complete = 0;
-        pthread_mutex_unlock(&s_urc_call_state_change_mutex);
+        pthread_mutex_unlock(s_urc_call_state_change_mutex);
     }
     return;
 }
@@ -989,6 +989,15 @@
         return -1;
     }
     g_lynq_call_init_flag = 1;
+    s_call_urc_event_complete = 1;
+    call_list_loop = 1;
+    LYINFLOG("liulei call_list_loop %d\n", call_list_loop);
+    s_urc_call_state_change_mutex = new pthread_mutex_t;
+    pthread_mutex_init(s_urc_call_state_change_mutex, NULL);
+    s_urc_call_state_change_cond = new pthread_cond_t;
+    LYINFLOG("liulei s_urc_call_state_change_mutex\n");
+    pthread_cond_init(s_urc_call_state_change_cond, NULL);
+    LYINFLOG("liulei s_urc_call_state_change_cond\n");
     int result = 0;
     Global_uToken_call = uToken;
     urc_call_recive_status = 1;
@@ -1026,7 +1035,7 @@
         return -1;
     }
     else
-    {   
+    {
         g_lynq_call_init_flag = 0;
         lynq_call_hungup_all();       
         if(lynq_call_client_sockfd>0)
@@ -1048,6 +1057,13 @@
         LYDBGLOG("pthread join ret = %d",ret);
         ret = pthread_join(lynq_call_list_loop_tid,NULL);
         LYDBGLOG("pthread join ret = %d",ret);
+        pthread_mutex_destroy(s_urc_call_state_change_mutex);
+        pthread_cond_destroy(s_urc_call_state_change_cond);
+        delete s_urc_call_state_change_mutex;
+        //s_urc_call_state_change_mutex = NULL;
+        delete s_urc_call_state_change_cond;
+        //s_urc_call_state_change_cond = NULL;
+
         return 0;
     }
 }
