diff --git a/ci-scripts/docker/Dockerfile.unittest.ubuntu22 b/ci-scripts/docker/Dockerfile.unittest.ubuntu22
index 6098a1d1f6b59b46ac69fa415d2bb127ba035a5c..21805560d4bd369a90273d6443bbb31d0c7d34db 100644
--- a/ci-scripts/docker/Dockerfile.unittest.ubuntu22
+++ b/ci-scripts/docker/Dockerfile.unittest.ubuntu22
@@ -37,4 +37,4 @@ WORKDIR /oai-ran
 COPY . .
 
 WORKDIR /oai-ran/build
-RUN cmake -GNinja -DENABLE_TESTS=ON -DCMAKE_BUILD_TYPE=Debug .. && ninja tests
+RUN cmake -GNinja -DENABLE_TESTS=ON -DCMAKE_BUILD_TYPE=Debug -DSANITIZE_ADDRESS=True .. && ninja tests
diff --git a/common/utils/threadPool/test/test_thread-pool.c b/common/utils/threadPool/test/test_thread-pool.c
index 0d6defd5cbae3edb4622cf2c73329df82a67bb3f..1af3dc10204fcc222b9942f2b9b5310d8062fcca 100644
--- a/common/utils/threadPool/test/test_thread-pool.c
+++ b/common/utils/threadPool/test/test_thread-pool.c
@@ -46,7 +46,7 @@ void displayList(notifiedFIFO_t *nf)
 struct testData {
   int id;
   int sleepTime;
-  char txt[30];
+  char txt[50];
 };
 
 void processing(void *arg)
@@ -64,21 +64,27 @@ int main()
   logInit();
   notifiedFIFO_t myFifo;
   initNotifiedFIFO(&myFifo);
+  int num_elements_on_queue = 0;
   pushNotifiedFIFO(&myFifo, newNotifiedFIFO_elt(sizeof(struct testData), 1234, NULL, NULL));
+  num_elements_on_queue++;
 
   for (int i = 10; i > 1; i--) {
     pushNotifiedFIFO(&myFifo, newNotifiedFIFO_elt(sizeof(struct testData), 1000 + i, NULL, NULL));
+    num_elements_on_queue++;
   }
 
   displayList(&myFifo);
   notifiedFIFO_elt_t *tmp = pullNotifiedFIFO(&myFifo);
   printf("pulled: %lu\n", tmp->key);
   displayList(&myFifo);
+  delNotifiedFIFO_elt(tmp);
   tmp = pullNotifiedFIFO(&myFifo);
+  num_elements_on_queue--;
   printf("pulled: %lu\n", tmp->key);
   displayList(&myFifo);
   pushNotifiedFIFO(&myFifo, newNotifiedFIFO_elt(sizeof(struct testData), 12345678, NULL, NULL));
   displayList(&myFifo);
+  delNotifiedFIFO_elt(tmp);
 
   do {
     tmp = pollNotifiedFIFO(&myFifo);
@@ -86,9 +92,12 @@ int main()
     if (tmp) {
       printf("pulled: %lu\n", tmp->key);
       displayList(&myFifo);
+      delNotifiedFIFO_elt(tmp);
+      num_elements_on_queue--;
     } else
       printf("Empty list \n");
-  } while (tmp);
+  } while (num_elements_on_queue > 0);
+  AssertFatal(pollNotifiedFIFO(&myFifo) == NULL, "Unexpected extra element on queue\n");
 
   tpool_t pool;
   char params[] = "1,2,3,4,5";
@@ -129,5 +138,6 @@ int main()
          dur / 1000,
          cumulProcessTime / 1000,
          (dur - cumulProcessTime) / (1000 * nb_jobs));
+  abortTpool(&pool);
   return 0;
 }
diff --git a/common/utils/threadPool/thread-pool.h b/common/utils/threadPool/thread-pool.h
index 1a78e201347e41de88ff8384f4cbef5817d71f57..b0e1b9e4e88e68e2c46b0c9cfc3bebbf4591193b 100644
--- a/common/utils/threadPool/thread-pool.h
+++ b/common/utils/threadPool/thread-pool.h
@@ -336,7 +336,9 @@ static inline int abortTpool(tpool_t *t) {
   thread = t->allthreads;
   while (thread != NULL) {
     pthread_cancel(thread->threadID);
-    thread = thread->next;
+    struct one_thread *next = thread->next;
+    free(thread);
+    thread = next;
   }
 
   return nbRemoved;
diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_entity.c b/openair2/LAYER2/nr_rlc/nr_rlc_entity.c
index 0e07e14fc98cf09259d94fb6b2da092fc8707c31..a4207716f55fc19d275ed7cbe2f3f90f3179d90e 100644
--- a/openair2/LAYER2/nr_rlc/nr_rlc_entity.c
+++ b/openair2/LAYER2/nr_rlc/nr_rlc_entity.c
@@ -110,11 +110,8 @@ nr_rlc_entity_t *new_nr_rlc_entity_am(
   ret->max_retx_threshold = max_retx_threshold;
   ret->sn_field_length    = sn_field_length;
 
-  if (!(sn_field_length == 12 || sn_field_length == 18)) {
-    LOG_E(RLC, "%s:%d:%s: wrong SN field_lenght (%d), must be 12 or 18\n",
-          __FILE__, __LINE__, __FUNCTION__, sn_field_length);
-    exit(1);
-  }
+  AssertFatal(sn_field_length == 12 || sn_field_length == 18, "Wrong SN field_length (%d), must be 12 or 18\n", sn_field_length);
+
   ret->sn_modulus = 1 << ret->sn_field_length;
   ret->window_size = ret->sn_modulus / 2;
 
@@ -172,11 +169,8 @@ nr_rlc_entity_t *new_nr_rlc_entity_um(
   ret->t_reassembly    = t_reassembly;
   ret->sn_field_length = sn_field_length;
 
-  if (!(sn_field_length == 6 || sn_field_length == 12)) {
-    LOG_E(RLC, "%s:%d:%s: wrong SN field_lenght (%d), must be 6 or 12\n",
-          __FILE__, __LINE__, __FUNCTION__, sn_field_length);
-    exit(1);
-  }
+  AssertFatal(sn_field_length == 6 || sn_field_length == 12, "Wrong SN field_length (%d), must be 6 or 12\n", sn_field_length);
+
   ret->sn_modulus = 1 << ret->sn_field_length;
   ret->window_size = ret->sn_modulus / 2;