diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai
index 596ff978f1787e480723f30f2837dfc92f173570..ba7fdc6cb0e611115d583a66bca9eaa5dcc59a65 100755
--- a/cmake_targets/build_oai
+++ b/cmake_targets/build_oai
@@ -422,11 +422,6 @@ function main() {
   
   CMAKE_CMD="$CMAKE_CMD .."
   echo_info "CMAKE_CMD=$CMAKE_CMD"
-  if [ "$eNB" = "1" -o "$gNB" = "1" ] && [ "$UE" = "1" -o "$nrUE" = "1" ]; then
-    echo_error "Cannot build UE/nrUE and eNB/gNB on one build_oai execution"
-    echo_error "use 2 build_oai invocations"
-    exit
-  fi
 
   #########################################################
   # check validity of HW and TP parameters for eNB / gNB
diff --git a/executables/nr-ue.c b/executables/nr-ue.c
index 19b462d7703f82510fe4c83a79260f2d9b967d58..03249d7dccf9291d4836a0e1de625cebf16feb6c 100644
--- a/executables/nr-ue.c
+++ b/executables/nr-ue.c
@@ -697,13 +697,14 @@ void *UE_thread(void *arg) {
         decoded_frame_rx=tmp->proc.decoded_frame_rx;
     }
 
-    while (nbSlotProcessing >= RX_NB_TH && (res=tryPullTpool(&nf, Tpool)) != NULL ) {
-      nbSlotProcessing--;
-      processingData_t *tmp=(processingData_t *)res->msgData;
-
-      if (tmp->proc.decoded_frame_rx != -1)
-        decoded_frame_rx=tmp->proc.decoded_frame_rx;
-
+    while (nbSlotProcessing >= RX_NB_TH ) {
+      if ( (res=tryPullTpool(&nf, Tpool)) != NULL ) {
+	nbSlotProcessing--;
+	processingData_t *tmp=(processingData_t *)res->msgData;
+	
+	if (tmp->proc.decoded_frame_rx != -1)
+	  decoded_frame_rx=tmp->proc.decoded_frame_rx;
+      }
       usleep(200);
     }
 
@@ -711,7 +712,7 @@ void *UE_thread(void *arg) {
           ((decoded_frame_rx+1) % MAX_FRAME_NUMBER) != proc->frame_rx )
       LOG_D(PHY,"Decoded frame index (%d) is not compatible with current context (%d), UE should go back to synch mode\n",
             decoded_frame_rx,  proc->frame_rx);
-
+    nbSlotProcessing++;
     pushTpool(Tpool, processingMsg[thread_idx]);
   } // while !oai_exit