diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
index 0a476c5ef52a4cd60dde61301fcb7599f2e41c78..f799f9341bf89fff85468372b7b276b06f6215fb 100644
--- a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
+++ b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
@@ -560,6 +560,9 @@ void *te_thread(void *param) {
 
   PHY_VARS_eNB *eNB              = ((te_params *)param)->eNB;
   eNB_proc_t *proc               = &eNB->proc;
+  
+  wait_sync("te_thread");
+  
   while (!oai_exit) {
 
     if (wait_on_condition(&proc->mutex_te[0],&proc->cond_te[0],&proc->instance_cnt_te[0],"te thread")<0) break;
@@ -597,6 +600,9 @@ void *te_thread1(void *param) {
 
   PHY_VARS_eNB *eNB              = ((te_params *)param)->eNB;
   eNB_proc_t *proc               = &eNB->proc;
+  
+  wait_sync("te_thread1");
+  
   while (!oai_exit) {
 
 
@@ -635,6 +641,9 @@ void *te_thread2(void *param) {
 
   PHY_VARS_eNB *eNB              = ((te_params *)param)->eNB;
   eNB_proc_t *proc               = &eNB->proc;
+  
+  wait_sync("te_thread2");
+  
   while (!oai_exit) {
 
 
diff --git a/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c b/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
index 55e44fa8bf3873ecf0b7af4b0c44186835ccb3a8..19c7f6aa54a330f4c399d66a16790d63af3a4924 100644
--- a/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
+++ b/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
@@ -420,6 +420,7 @@ void *td_thread(void *param) {
   thread_top_init("td_thread",1,200000,250000,500000);
   pthread_setname_np( pthread_self(),"td processing");
   LOG_I(PHY,"thread td created id=%ld\n", syscall(__NR_gettid));
+  wait_sync("td_thread");
 
   while (!oai_exit) {
 
diff --git a/openair1/SCHED/ru_procedures.c b/openair1/SCHED/ru_procedures.c
index 386cdc41539239ba64f122b70fc9c0267fd38bd6..2e460e7571c2c8cf640de8b4518ba71cfd543692 100644
--- a/openair1/SCHED/ru_procedures.c
+++ b/openair1/SCHED/ru_procedures.c
@@ -148,7 +148,7 @@ static void *feptx_thread(void *param) {
   LOG_I(PHY,"thread feptx created id=%ld\n", syscall(__NR_gettid));
   //CPU_SET(6, &cpuset);
   //pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
-
+  wait_sync("feptx_thread");
 
   
 
@@ -445,6 +445,7 @@ static void *fep_thread(void *param) {
   CPU_ZERO(&cpuset);
   //CPU_SET(2, &cpuset);
   //pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
+  wait_sync("fep_thread");
 
   while (!oai_exit) {
 
diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c
index d8171ddcc48235de8daca6c4c267f78789b014a2..64731c9d8deb42a7e58575d44b0e353f694aa58c 100644
--- a/targets/RT/USER/lte-enb.c
+++ b/targets/RT/USER/lte-enb.c
@@ -207,6 +207,8 @@ static void* tx_thread(void* param) {
   sprintf(thread_name,"TXnp4_%d\n",&eNB->proc.proc_rxtx[0] == proc ? 0 : 1);
   thread_top_init(thread_name,1,470000,500000,500000);
   
+  wait_sync("tx_thread");
+  
   while (!oai_exit) {
 
     if (wait_on_condition(&proc->mutex_rxtx,&proc->cond_rxtx,&proc->instance_cnt_rxtx,thread_name)<0) break;
@@ -264,6 +266,8 @@ static void* eNB_thread_rxtx( void* param ) {
 
   //CPU_SET(3, &cpuset);
   //pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
+  
+  wait_sync("eNB_thread_rxtx");
 
   while (!oai_exit) {
     VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_eNB_PROC_RXTX0+(proc->subframe_rx&1), 0 );
@@ -625,6 +629,7 @@ static void* eNB_thread_prach( void* param ) {
 
   thread_top_init("eNB_thread_prach",1,500000,1000000,20000000);
 
+  wait_sync("eNB_thread_prach");
 
   while (!oai_exit) {
     
@@ -743,6 +748,7 @@ void init_eNB_proc(int inst) {
     proc_rxtx[1].instance_cnt_rxtx = -1;
     proc->instance_cnt_prach       = -1;
     proc->instance_cnt_asynch_rxtx = -1;
+    proc->instance_cnt_synch       = -1;
     proc->CC_id                    = CC_id;    
 
     proc->first_rx=1;
diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c
index 7e24049ad6834bf072ef345a4a6afd24a7d212c0..e196584e25b0b30b6f794ebbef894d4310988b0a 100644
--- a/targets/RT/USER/lte-ru.c
+++ b/targets/RT/USER/lte-ru.c
@@ -987,6 +987,7 @@ static void* ru_thread_prach( void* param ) {
   ru_thread_prach_status = 0;
 
   thread_top_init("ru_thread_prach",1,500000,1000000,20000000);
+  wait_sync("ru_thread_prach");
 
   while (!oai_exit) {
     
@@ -1026,6 +1027,7 @@ static void* ru_thread_prach_br( void* param ) {
   ru_thread_prach_status = 0;
 
   thread_top_init("ru_thread_prach_br",1,500000,1000000,20000000);
+  wait_sync(ru_thread_prach_br);
 
   while (!oai_exit) {
     
@@ -1413,6 +1415,7 @@ static void* ru_thread_tx( void* param ) {
 
   //CPU_SET(5, &cpuset);
   //pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
+  wait_sync("ru_thread_tx");
 
   wait_on_condition(&proc->mutex_FH1,&proc->cond_FH1,&proc->instance_cnt_FH1,"ru_thread_tx");