From dabdf7933b68fcc8ead0e7e569e9a7fa95480db1 Mon Sep 17 00:00:00 2001
From: "Wilson W.K. Thong" <wilsonthong@astri.org>
Date: Wed, 21 Dec 2016 15:01:23 +0800
Subject: [PATCH] add more logs to debug memory leak problem

---
 openair2/LAYER2/PDCP_v10.1.0/pdcp.c           | 24 ++++++++---------
 .../PDCP_v10.1.0/pdcp_control_primitive.c     |  2 +-
 openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c      |  6 ++---
 openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c        |  2 +-
 openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_in_sdu.c |  4 +--
 openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_init.c   |  6 ++---
 .../LAYER2/RLC/AM_v9.3.0/rlc_am_reassembly.c  |  6 ++---
 .../LAYER2/RLC/AM_v9.3.0/rlc_am_receiver.c    |  6 ++---
 .../LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.c  |  8 +++---
 .../LAYER2/RLC/AM_v9.3.0/rlc_am_segment.c     |  6 ++---
 .../RLC/AM_v9.3.0/rlc_am_status_report.c      |  4 +--
 openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_test.c   | 10 +++----
 openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm.c        | 10 +++----
 openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_init.c   |  8 +++---
 .../RLC/UM_v9.3.0/rlc_um_control_primitives.c |  4 +--
 openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_dar.c    | 10 +++----
 .../LAYER2/RLC/UM_v9.3.0/rlc_um_reassembly.c  |  2 +-
 .../LAYER2/RLC/UM_v9.3.0/rlc_um_segment.c     | 16 +++++------
 openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_test.c   | 20 +++++++-------
 .../RLC/UM_v9.3.0/rlc_um_very_simple_test.c   |  6 ++---
 openair2/LAYER2/RLC/rlc.c                     | 26 +++++++++---------
 openair2/LAYER2/RLC/rlc_mac.c                 |  4 +--
 openair2/LAYER2/RLC/rlc_rrc.c                 |  2 +-
 openair2/UTIL/LISTS/list.c                    |  2 +-
 openair2/UTIL/LISTS/list2.c                   |  2 +-
 openair2/UTIL/MEM/mem_block.c                 | 27 ++++++++++++++++---
 openair2/UTIL/MEM/mem_block.h                 |  4 +--
 openair2/UTIL/MEM/mem_mngt.c                  | 12 ++++-----
 openair2/UTIL/TIMER/umts_timer.c              |  8 +++---
 targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c    |  4 +--
 30 files changed, 136 insertions(+), 115 deletions(-)

diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
index 2ff2d90de9..8e3cc20d87 100644
--- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
+++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
@@ -160,7 +160,7 @@ boolean_t pdcp_data_req(
 
   if (modeP == PDCP_TRANSMISSION_MODE_TRANSPARENT) {
     LOG_D(PDCP, " [TM] Asking for a new mem_block of size %d\n",sdu_buffer_sizeP);
-    pdcp_pdu_p = get_free_mem_block(sdu_buffer_sizeP);
+    pdcp_pdu_p = get_free_mem_block(sdu_buffer_sizeP, __func__);
 
     if (pdcp_pdu_p != NULL) {
       memcpy(&pdcp_pdu_p->data[0], sdu_buffer_pP, sdu_buffer_sizeP);
@@ -201,7 +201,7 @@ boolean_t pdcp_data_req(
     /*
      * Allocate a new block for the new PDU (i.e. PDU header and SDU payload)
      */
-    pdcp_pdu_p = get_free_mem_block(pdcp_pdu_size);
+    pdcp_pdu_p = get_free_mem_block(pdcp_pdu_size, __func__);
 
     if (pdcp_pdu_p != NULL) {
       /*
@@ -260,7 +260,7 @@ boolean_t pdcp_data_req(
               PROTOCOL_PDCP_CTXT_ARGS(ctxt_pP,pdcp_p),
               current_sn);
 
-        free_mem_block(pdcp_pdu_p);
+        free_mem_block(pdcp_pdu_p, __func__);
 
         if (ctxt_pP->enb_flag == ENB_FLAG_NO) {
           stop_meas(&eNB_pdcp_stats[ctxt_pP->module_id].data_req);
@@ -510,7 +510,7 @@ pdcp_data_ind(
             PROTOCOL_CTXT_FMT"Could not get PDCP instance key 0x%"PRIx64"\n",
             PROTOCOL_CTXT_ARGS(ctxt_pP),
             key);
-      free_mem_block(sdu_buffer_pP);
+      free_mem_block(sdu_buffer_pP, __func__);
       VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDCP_DATA_IND,VCD_FUNCTION_OUT);
       return FALSE;
     }
@@ -567,7 +567,7 @@ pdcp_data_ind(
             PROTOCOL_PDCP_CTXT_FMT"Incoming (from RLC) SDU is short of size (size:%d)! Ignoring...\n",
             PROTOCOL_PDCP_CTXT_ARGS(ctxt_pP, pdcp_p),
             sdu_buffer_sizeP);
-      free_mem_block(sdu_buffer_pP);
+      free_mem_block(sdu_buffer_pP, __func__);
 
       if (ctxt_pP->enb_flag) {
         stop_meas(&eNB_pdcp_stats[ctxt_pP->module_id].data_ind);
@@ -598,7 +598,7 @@ pdcp_data_ind(
        */
 #if 0
       LOG_D(PDCP, "Ignoring PDU...\n");
-      free_mem_block(sdu_buffer);
+      free_mem_block(sdu_buffer, __func__);
       return FALSE;
 #else
       //LOG_W(PDCP, "Delivering out-of-order SDU to upper layer...\n");
@@ -645,9 +645,9 @@ pdcp_data_ind(
 		   rb_id,
 		   sdu_buffer_sizeP - pdcp_header_len - pdcp_tailer_len,
 		   (uint8_t*)&sdu_buffer_pP->data[pdcp_header_len]);
-      free_mem_block(sdu_buffer_pP);
+      free_mem_block(sdu_buffer_pP, __func__);
 
-      // free_mem_block(new_sdu);
+      // free_mem_block(new_sdu, __func__);
       if (ctxt_pP->enb_flag) {
         stop_meas(&eNB_pdcp_stats[ctxt_pP->module_id].data_ind);
       } else {
@@ -722,7 +722,7 @@ pdcp_data_ind(
           ctime,
           (const char*)(&sdu_buffer_pP->data[payload_offset]),
                    sdu_buffer_sizeP - payload_offset ) == 0 ) {
-      free_mem_block(sdu_buffer_pP);
+      free_mem_block(sdu_buffer_pP, __func__);
 
       if (ctxt_pP->enb_flag) {
         stop_meas(&eNB_pdcp_stats[ctxt_pP->module_id].data_ind);
@@ -739,7 +739,7 @@ pdcp_data_ind(
 
   if (otg_enabled==1) {
     LOG_D(OTG,"Discarding received packed\n");
-    free_mem_block(sdu_buffer_pP);
+    free_mem_block(sdu_buffer_pP, __func__);
 
     if (ctxt_pP->enb_flag) {
       stop_meas(&eNB_pdcp_stats[ctxt_pP->module_id].data_ind);
@@ -794,7 +794,7 @@ pdcp_data_ind(
 #endif
 
   if (FALSE == packet_forwarded) {
-    new_sdu_p = get_free_mem_block(sdu_buffer_sizeP - payload_offset + sizeof (pdcp_data_ind_header_t));
+    new_sdu_p = get_free_mem_block(sdu_buffer_sizeP - payload_offset + sizeof (pdcp_data_ind_header_t), __func__);
 
     if (new_sdu_p) {
       if (pdcp_p->rlc_mode == RLC_MODE_AM ) {
@@ -856,7 +856,7 @@ pdcp_data_ind(
 
 #endif
 
-  free_mem_block(sdu_buffer_pP);
+  free_mem_block(sdu_buffer_pP, __func__);
 
   if (ctxt_pP->enb_flag) {
     stop_meas(&eNB_pdcp_stats[ctxt_pP->module_id].data_ind);
diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp_control_primitive.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp_control_primitive.c
index d584cb1e64..795cb2e80a 100644
--- a/openair2/LAYER2/PDCP_v10.1.0/pdcp_control_primitive.c
+++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp_control_primitive.c
@@ -44,7 +44,7 @@ configure_pdcp_req (struct pdcp_entity *pdcpP, void *rlcP, uint8_t rlc_sap_typeP
   //-----------------------------------------------------------------------------
   mem_block      *mb;
 
-  mb = get_free_mem_block (sizeof (struct cpdcp_primitive));
+  mb = get_free_mem_block (sizeof (struct cpdcp_primitive), __func__);
   ((struct cpdcp_primitive *) mb->data)->type = CPDCP_CONFIG_REQ;
   ((struct cpdcp_primitive *) mb->data)->primitive.config_req.rlc_sap = rlcP;
   ((struct cpdcp_primitive *) mb->data)->primitive.config_req.rlc_type_sap = rlc_sap_typeP;
diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
index ac64e7352a..8eb6131230 100644
--- a/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
+++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
@@ -128,7 +128,7 @@ int pdcp_fifo_flush_sdus(const protocol_ctxt_t* const  ctxt_pP)
         ((pdcp_data_ind_header_t *)(sdu_p->data))->data_size);
 
       list_remove_head (&pdcp_sdu_list);
-      free_mem_block (sdu_p);
+      free_mem_block (sdu_p, __func__);
       cont = 1;
       pdcp_nb_sdu_sent += 1;
       sdu_p = list_get_head (&pdcp_sdu_list);
@@ -244,7 +244,7 @@ int pdcp_fifo_flush_sdus(const protocol_ctxt_t* const  ctxt_pP)
                     ((pdcp_data_ind_header_t *)(sdu_p->data))->rb_id);
 
               list_remove_head (&pdcp_sdu_list);
-              free_mem_block (sdu_p);
+              free_mem_block (sdu_p, __func__);
               cont = 1;
               pdcp_nb_sdu_sent += 1;
               sdu_p = list_get_head (&pdcp_sdu_list);
@@ -272,7 +272,7 @@ int pdcp_fifo_flush_sdus(const protocol_ctxt_t* const  ctxt_pP)
         if (!pdcp_output_sdu_bytes_to_write) {     // OK finish with this SDU
           //PRINT_RB_SEND_OUTPUT_SDU ("[PDCP] RADIO->IP SEND SDU\n");
           list_remove_head (&pdcp_sdu_list);
-          free_mem_block (sdu_p);
+          free_mem_block (sdu_p, __func__);
           cont = 1;
           pdcp_nb_sdu_sent += 1;
           sdu_p = list_get_head (&pdcp_sdu_list);
diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
index ded7dc0783..1dea4ced9f 100644
--- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
+++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
@@ -1280,7 +1280,7 @@ rlc_am_data_req (
           l_rlc_p->input_sdus[l_rlc_p->next_sdu_index].mem_block, l_rlc_p->input_sdus[l_rlc_p->next_sdu_index].flags.segmented);
     l_rlc_p->stat_tx_pdcp_sdu_discarded   += 1;
     l_rlc_p->stat_tx_pdcp_bytes_discarded += ((struct rlc_am_data_req *) (sdu_pP->data))->data_size;
-    free_mem_block (sdu_pP);
+    free_mem_block (sdu_pP, __func__);
 #if STOP_ON_IP_TRAFFIC_OVERLOAD
     AssertFatal(0, PROTOCOL_RLC_AM_CTXT_FMT" RLC_AM_DATA_REQ size %d Bytes, SDU DROPPED, INPUT BUFFER OVERFLOW NB SDU %d current_sdu_index=%d next_sdu_index=%d \n",
                 PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,l_rlc_p),
diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_in_sdu.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_in_sdu.c
index a767e94dc7..0f0b0e75e1 100644
--- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_in_sdu.c
+++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_in_sdu.c
@@ -42,7 +42,7 @@ void rlc_am_free_in_sdu(
 {
   if (index_in_bufferP <= RLC_AM_SDU_CONTROL_BUFFER_SIZE) {
     if (rlcP->input_sdus[index_in_bufferP].mem_block != NULL) {
-      free_mem_block(rlcP->input_sdus[index_in_bufferP].mem_block);
+      free_mem_block(rlcP->input_sdus[index_in_bufferP].mem_block, __func__);
       rlcP->input_sdus[index_in_bufferP].mem_block = NULL;
       rlcP->nb_sdu_no_segmented -= 1;
       rlcP->input_sdus[index_in_bufferP].sdu_remaining_size = 0;
@@ -81,7 +81,7 @@ rlc_am_free_in_sdu_data(
 {
   if (index_in_bufferP <= RLC_AM_SDU_CONTROL_BUFFER_SIZE) {
     if (rlcP->input_sdus[index_in_bufferP].mem_block != NULL) {
-      free_mem_block(rlcP->input_sdus[index_in_bufferP].mem_block);
+      free_mem_block(rlcP->input_sdus[index_in_bufferP].mem_block, __func__);
       rlcP->input_sdus[index_in_bufferP].mem_block = NULL;
       rlcP->input_sdus[index_in_bufferP].sdu_remaining_size = 0;
       rlcP->nb_sdu_no_segmented -= 1;
diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_init.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_init.c
index a7cf302d06..74a1cd5390 100644
--- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_init.c
+++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_init.c
@@ -152,7 +152,7 @@ rlc_am_cleanup(
 
 
   if (rlc_pP->output_sdu_in_construction != NULL) {
-    free_mem_block(rlc_pP->output_sdu_in_construction);
+    free_mem_block(rlc_pP->output_sdu_in_construction, __func__);
     rlc_pP->output_sdu_in_construction = NULL;
   }
 
@@ -161,7 +161,7 @@ rlc_am_cleanup(
   if (rlc_pP->input_sdus != NULL) {
     for (i=0; i < RLC_AM_SDU_CONTROL_BUFFER_SIZE; i++) {
       if (rlc_pP->input_sdus[i].mem_block != NULL) {
-        free_mem_block(rlc_pP->input_sdus[i].mem_block);
+        free_mem_block(rlc_pP->input_sdus[i].mem_block, __func__);
         rlc_pP->input_sdus[i].mem_block = NULL;
       }
     }
@@ -175,7 +175,7 @@ rlc_am_cleanup(
   if (rlc_pP->pdu_retrans_buffer != NULL) {
     for (i=0; i < RLC_AM_PDU_RETRANSMISSION_BUFFER_SIZE; i++) {
       if (rlc_pP->pdu_retrans_buffer[i].mem_block != NULL) {
-        free_mem_block(rlc_pP->pdu_retrans_buffer[i].mem_block);
+        free_mem_block(rlc_pP->pdu_retrans_buffer[i].mem_block, __func__);
         rlc_pP->pdu_retrans_buffer[i].mem_block = NULL;
       }
     }
diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_reassembly.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_reassembly.c
index d13b89f1dc..873e51fbfe 100644
--- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_reassembly.c
+++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_reassembly.c
@@ -55,7 +55,7 @@ rlc_am_reassembly (
         lengthP);
 
   if (rlc_pP->output_sdu_in_construction == NULL) {
-    rlc_pP->output_sdu_in_construction = get_free_mem_block (RLC_SDU_MAX_SIZE);
+    rlc_pP->output_sdu_in_construction = get_free_mem_block (RLC_SDU_MAX_SIZE, __func__);
     rlc_pP->output_sdu_size_to_write = 0;
     assert(rlc_pP->output_sdu_in_construction != NULL);
   }
@@ -197,7 +197,7 @@ rlc_am_send_sdu (
       LOG_E(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND_SDU] ERROR SIZE <= 0 ... DO NOTHING, SET SDU SIZE TO 0\n",
             PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
       //msg("[RLC_AM][MOD %d] Freeing mem_block ...\n", rlc_pP->module_id);
-      //free_mem_block (rlc_pP->output_sdu_in_construction);
+      //free_mem_block (rlc_pP->output_sdu_in_construction, __func__);
       AssertFatal(3==4,
                   PROTOCOL_RLC_AM_CTXT_FMT" SEND SDU REQUESTED %d bytes",
                   PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
@@ -397,5 +397,5 @@ rlc_am_reassemble_pdu(
     }
   }
 
-  free_mem_block(tb_pP);
+  free_mem_block(tb_pP, __func__);
 }
diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_receiver.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_receiver.c
index d0b023833a..d783684893 100644
--- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_receiver.c
+++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_receiver.c
@@ -346,7 +346,7 @@ rlc_am_receive_process_data_pdu (
       if (rlc_am_rx_list_insert_pdu(ctxt_pP, rlc_pP,tb_pP) < 0) {
         rlc_pP->stat_rx_data_pdu_dropped     += 1;
         rlc_pP->stat_rx_data_bytes_dropped   += tb_size_in_bytesP;
-        free_mem_block (tb_pP);
+        free_mem_block (tb_pP, __func__);
         LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[PROCESS RX PDU]  PDU DISCARDED, STATUS REQUESTED:\n",
               PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
         rlc_pP->status_requested = 1;
@@ -437,12 +437,12 @@ rlc_am_receive_process_data_pdu (
     } else {
       rlc_pP->stat_rx_data_pdu_out_of_window     += 1;
       rlc_pP->stat_rx_data_bytes_out_of_window   += tb_size_in_bytesP;
-      free_mem_block (tb_pP);
+      free_mem_block (tb_pP, __func__);
       LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[PROCESS RX PDU]  PDU OUT OF RX WINDOW, DISCARDED, STATUS REQUESTED:\n",
             PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
       rlc_pP->status_requested = 1;
     }
   } else {
-    free_mem_block (tb_pP);
+    free_mem_block (tb_pP, __func__);
   }
 }
diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.c
index 445014c62c..f7f900fa65 100644
--- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.c
+++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.c
@@ -143,7 +143,7 @@ void rlc_am_ack_pdu (
 
   if ((rlc_pP->pdu_retrans_buffer[snP].flags.ack == 0) && (mb_p != NULL)) {
     //if (mb_pP != NULL) {
-    free_mem_block(mb_p);
+    free_mem_block(mb_p, __func__);
     rlc_pP->pdu_retrans_buffer[snP].mem_block = NULL;
     LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[ACK-PDU] ACK PDU SN %05d previous retx_count %d \n",
           PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
@@ -235,7 +235,7 @@ void rlc_am_ack_pdu (
           snP);
 
     if (mb_p != NULL) {
-      free_mem_block(mb_p);
+      free_mem_block(mb_p, __func__);
       rlc_pP->pdu_retrans_buffer[snP].mem_block = NULL;
     }
 
@@ -275,7 +275,7 @@ mem_block_t* rlc_am_retransmit_get_copy (
     rlc_am_tx_data_pdu_management_t *pdu_mngt = &rlc_pP->pdu_retrans_buffer[snP % RLC_AM_PDU_RETRANSMISSION_BUFFER_SIZE];
 
     int size             = pdu_mngt->header_and_payload_size + sizeof(struct mac_tb_req);
-    mem_block_t* mb_copy = get_free_mem_block(size);
+    mem_block_t* mb_copy = get_free_mem_block(size, __func__);
     memcpy(mb_copy->data, mb_original_p->data, size);
 
     rlc_am_pdu_sn_10_t *pdu_p                         = (rlc_am_pdu_sn_10_t*) (&mb_copy->data[sizeof(struct mac_tb_req)]);
@@ -343,7 +343,7 @@ mem_block_t* rlc_am_retransmit_get_subsegment(
   mem_block_t*           mb_original_p     = rlc_pP->pdu_retrans_buffer[snP].mem_block;
 
   if (mb_original_p != NULL) {
-    mem_block_t*           mb_sub_segment_p  = get_free_mem_block(*sizeP + sizeof(struct mac_tb_req));
+    mem_block_t*           mb_sub_segment_p  = get_free_mem_block(*sizeP + sizeof(struct mac_tb_req), __func__);
     rlc_am_pdu_sn_10_t*    pdu_original_p    = (rlc_am_pdu_sn_10_t*) (&mb_original_p->data[sizeof(struct mac_tb_req)]);
     rlc_am_pdu_sn_10_t*    pdu_sub_segment_p = (rlc_am_pdu_sn_10_t*) (&mb_sub_segment_p->data[sizeof(struct mac_tb_req)]);
     rlc_am_pdu_info_t      pdu_info;
diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segment.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segment.c
index f2a12112c4..893588d65e 100644
--- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segment.c
+++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segment.c
@@ -197,7 +197,7 @@ void rlc_am_segment_10 (
               data_pdu_size);
       }
 
-      if (!(pdu_mem_p = get_free_mem_block (data_pdu_size + sizeof(struct mac_tb_req)))) {
+      if (!(pdu_mem_p = get_free_mem_block (data_pdu_size + sizeof(struct mac_tb_req), __func__))) {
         LOG_C(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEGMENT] ERROR COULD NOT GET NEW PDU, EXIT\n",
               PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
         RLC_AM_MUTEX_UNLOCK(&rlc_pP->lock_input_sdus);
@@ -366,7 +366,7 @@ void rlc_am_segment_10 (
         // free SDU
         rlc_pP->sdu_buffer_occupancy -= sdu_mngt_p->sdu_remaining_size;
         rlc_am_free_in_sdu_data(ctxt_pP, rlc_pP, rlc_pP->current_sdu_index);
-        //free_mem_block (rlc_pP->input_sdus[rlc_pP->current_sdu_index]);
+        //free_mem_block (rlc_pP->input_sdus[rlc_pP->current_sdu_index], __func__);
         //rlc_pP->input_sdus[rlc_pP->current_sdu_index] = NULL;
         //rlc_pP->nb_sdu -= 1;
         rlc_pP->current_sdu_index = (rlc_pP->current_sdu_index + 1) % RLC_AM_SDU_CONTROL_BUFFER_SIZE;
@@ -445,7 +445,7 @@ void rlc_am_segment_10 (
           sdu_mngt_p->sdu_remaining_size = 0;
 
           rlc_am_free_in_sdu_data(ctxt_pP, rlc_pP, rlc_pP->current_sdu_index);
-          //free_mem_block (rlc_pP->input_sdus[rlc_pP->current_sdu_index]);
+          //free_mem_block (rlc_pP->input_sdus[rlc_pP->current_sdu_index], __func__);
           //rlc_pP->input_sdus[rlc_pP->current_sdu_index] = NULL;
           //rlc_pP->nb_sdu -= 1;
           rlc_pP->current_sdu_index = (rlc_pP->current_sdu_index + 1) % RLC_AM_SDU_CONTROL_BUFFER_SIZE;
diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_status_report.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_status_report.c
index efbd29350c..d687bf8606 100644
--- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_status_report.c
+++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_status_report.c
@@ -370,7 +370,7 @@ rlc_am_receive_process_control_pdu(
 
   *first_byte_ppP = (uint8_t*)((uint64_t)*first_byte_ppP + initial_pdu_size - *tb_size_in_bytes_pP);
 
-  free_mem_block(tb_pP);
+  free_mem_block(tb_pP, __func__);
   rlc_am_tx_buffer_display(ctxt_pP, rlc_pP, NULL);
 }
 //-----------------------------------------------------------------------------
@@ -730,7 +730,7 @@ end_push_nack:
         __LINE__,
         pdu_size);
 #endif
-  tb_p = get_free_mem_block(sizeof(struct mac_tb_req) + pdu_size);
+  tb_p = get_free_mem_block(sizeof(struct mac_tb_req) + pdu_size, __func__);
   memset(tb_p->data, 0, sizeof(struct mac_tb_req) + pdu_size);
   //estimation only ((struct mac_tb_req*)(tb_p->data))->tb_size  = pdu_size;
   ((struct mac_tb_req*)(tb_p->data))->data_ptr         = (uint8_t*)&(tb_p->data[sizeof(struct mac_tb_req)]);
diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_test.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_test.c
index e03741707e..8e201a949b 100644
--- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_test.c
+++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_test.c
@@ -516,7 +516,7 @@ void rlc_am_v9_3_0_test_send_sdu(rlc_am_entity_t *am_txP, int sdu_indexP)
 //-----------------------------------------------------------------------------
 {
   mem_block_t *sdu;
-  sdu = get_free_mem_block (strlen(g_sdus[sdu_indexP]) + 1 + sizeof (struct rlc_am_data_req_alloc));
+  sdu = get_free_mem_block (strlen(g_sdus[sdu_indexP]) + 1 + sizeof (struct rlc_am_data_req_alloc), __func__);
 
   if (sdu != NULL) {
     // PROCESS OF COMPRESSION HERE:
@@ -561,7 +561,7 @@ void rlc_am_v9_3_0_test_mac_rlc_loop (struct mac_data_ind *data_indP,  struct ma
       *tx_packetsP = *tx_packetsP + 1;
 
       if (*drop_countP == 0) {
-        tb_dst  = get_free_mem_block(sizeof (mac_rlc_max_rx_header_size_t) + tb_size);
+        tb_dst  = get_free_mem_block(sizeof (mac_rlc_max_rx_header_size_t) + tb_size, __func__);
 
         if (tb_dst != NULL) {
           ((struct mac_tb_ind *) (tb_dst->data))->first_bit        = 0;
@@ -585,7 +585,7 @@ void rlc_am_v9_3_0_test_mac_rlc_loop (struct mac_data_ind *data_indP,  struct ma
         *dropped_tx_packetsP = *dropped_tx_packetsP + 1;
       }
 
-      free_mem_block(tb_src);
+      free_mem_block(tb_src, __func__);
 
       if (data_indP->no_tb > 0) {
         printf("[RLC-LOOP] Exchange %d TBs\n",data_indP->no_tb);
@@ -673,13 +673,13 @@ void rlc_am_v9_3_0_test_data_ind (module_id_t module_idP, rb_id_t rb_idP, sdu_si
 
       assert(g_send_sdu_ids[g_send_id_read_index[rb_idP]][rb_idP^1] == i);
       g_send_id_read_index[rb_idP] += 1;
-      free_mem_block(sduP);
+      free_mem_block(sduP, __func__);
       return;
     }
   }
 
   printf("[FRAME %05d][RLC][MOD %d][RB %d] RX UNKNOWN SDU %04d bytes\n",g_frame,module_idP, rb_idP,  sizeP);
-  free_mem_block(sduP);
+  free_mem_block(sduP, __func__);
   assert(1==2);
 }
 //-----------------------------------------------------------------------------
diff --git a/openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm.c b/openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm.c
index d854e435e1..6e495bceff 100644
--- a/openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm.c
+++ b/openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm.c
@@ -51,7 +51,7 @@ rlc_tm_send_sdu (
   length_in_bytes = (length_in_bitsP + 7) >> 3;
 
   if (rlc_pP->output_sdu_in_construction == NULL) {
-    rlc_pP->output_sdu_in_construction = get_free_mem_block (length_in_bytes);
+    rlc_pP->output_sdu_in_construction = get_free_mem_block (length_in_bytes, __func__);
   }
 
   if ((rlc_pP->output_sdu_in_construction)) {
@@ -97,7 +97,7 @@ rlc_tm_no_segment (
 
     sdu_mngt_p = ((struct rlc_tm_tx_sdu_management *) (rlc_pP->input_sdus[rlc_pP->current_sdu_index]->data));
 
-    if (!(pdu_p = get_free_mem_block (((rlc_pP->rlc_pdu_size + 7) >> 3) + sizeof (struct rlc_tm_tx_data_pdu_struct) + GUARD_CRC_LIH_SIZE))) {
+    if (!(pdu_p = get_free_mem_block (((rlc_pP->rlc_pdu_size + 7) >> 3) + sizeof (struct rlc_tm_tx_data_pdu_struct) + GUARD_CRC_LIH_SIZE, __func__))) {
       LOG_D(RLC, PROTOCOL_RLC_TM_CTXT_FMT"[SEGMENT] ERROR COULD NOT GET NEW PDU, EXIT\n",
             PROTOCOL_RLC_TM_CTXT_ARGS(ctxt_pP, rlc_pP));
       return;
@@ -116,7 +116,7 @@ rlc_tm_no_segment (
     list_add_tail_eurecom (pdu_p, &rlc_pP->pdus_to_mac_layer);
 
     rlc_pP->buffer_occupancy -= (sdu_mngt_p->sdu_size >> 3);
-    free_mem_block (rlc_pP->input_sdus[rlc_pP->current_sdu_index]);
+    free_mem_block (rlc_pP->input_sdus[rlc_pP->current_sdu_index], __func__);
     rlc_pP->input_sdus[rlc_pP->current_sdu_index] = NULL;
     rlc_pP->current_sdu_index = (rlc_pP->current_sdu_index + 1) % rlc_pP->size_input_sdus_buffer;
     rlc_pP->nb_sdu -= 1;
@@ -142,7 +142,7 @@ rlc_tm_rx (
     ((struct rlc_tm_rx_pdu_management *) (tb_p->data))->first_byte = first_byte_p;
 
     rlc_tm_send_sdu (ctxt_pP, rlc_p, (((struct mac_tb_ind *) (tb_p->data))->error_indication), first_byte_p, data_indP.tb_size);
-    free_mem_block (tb_p);
+    free_mem_block (tb_p, __func__);
   }
 }
 
@@ -235,6 +235,6 @@ rlc_tm_data_req (
     rlc_p->input_sdus[rlc_p->next_sdu_index] = sdu_pP;
     rlc_p->next_sdu_index = (rlc_p->next_sdu_index + 1) % rlc_p->size_input_sdus_buffer;
   } else {
-    free_mem_block (sdu_pP);
+    free_mem_block (sdu_pP, __func__);
   }
 }
diff --git a/openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_init.c b/openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_init.c
index 4d75f3ee30..8ddea705cd 100644
--- a/openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_init.c
+++ b/openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_init.c
@@ -82,7 +82,7 @@ void rlc_tm_init (
   rlcP->size_input_sdus_buffer = 16;
 
   if ((rlcP->input_sdus_alloc == NULL) && (rlcP->size_input_sdus_buffer > 0)) {
-    rlcP->input_sdus_alloc = get_free_mem_block (rlcP->size_input_sdus_buffer * sizeof (void *));
+    rlcP->input_sdus_alloc = get_free_mem_block (rlcP->size_input_sdus_buffer * sizeof (void *), __func__);
     rlcP->input_sdus = (mem_block_t **) (rlcP->input_sdus_alloc->data);
     memset (rlcP->input_sdus, 0, rlcP->size_input_sdus_buffer * sizeof (void *));
   }
@@ -114,17 +114,17 @@ rlc_tm_cleanup (
   if (rlcP->input_sdus_alloc) {
     for (index = 0; index < rlcP->size_input_sdus_buffer; index++) {
       if (rlcP->input_sdus[index]) {
-        free_mem_block (rlcP->input_sdus[index]);
+        free_mem_block (rlcP->input_sdus[index], __func__);
       }
     }
 
-    free_mem_block (rlcP->input_sdus_alloc);
+    free_mem_block (rlcP->input_sdus_alloc, __func__);
     rlcP->input_sdus_alloc = NULL;
   }
 
   // RX SIDE
   if ((rlcP->output_sdu_in_construction)) {
-    free_mem_block (rlcP->output_sdu_in_construction);
+    free_mem_block (rlcP->output_sdu_in_construction, __func__);
   }
 
   memset(rlcP, 0, sizeof(rlc_tm_entity_t));
diff --git a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_control_primitives.c b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_control_primitives.c
index 057be0000d..d0e9e28ef0 100644
--- a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_control_primitives.c
+++ b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_control_primitives.c
@@ -334,13 +334,13 @@ rlc_um_cleanup (
   list_free (&rlc_pP->pdus_from_mac_layer);
 
   if ((rlc_pP->output_sdu_in_construction)) {
-    free_mem_block (rlc_pP->output_sdu_in_construction);
+    free_mem_block (rlc_pP->output_sdu_in_construction, __func__);
   }
 
   if (rlc_pP->dar_buffer) {
     for (index = 0; index < 1024; index++) {
       if (rlc_pP->dar_buffer[index]) {
-        free_mem_block (rlc_pP->dar_buffer[index]);
+        free_mem_block (rlc_pP->dar_buffer[index], __func__);
       }
     }
 
diff --git a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_dar.c b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_dar.c
index fb83446e63..5c9f1fa0fe 100644
--- a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_dar.c
+++ b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_dar.c
@@ -544,7 +544,7 @@ rlc_um_try_reassembly(
             __FILE__,
             __LINE__);
 #endif
-      free_mem_block(rlc_pP->dar_buffer[sn]);
+      free_mem_block(rlc_pP->dar_buffer[sn], __func__);
       rlc_pP->dar_buffer[sn] = NULL;
     } else {
       rlc_pP->last_reassemblied_missing_sn = sn;
@@ -957,7 +957,7 @@ rlc_um_receive_process_dar (
   } else if (rlc_pP->rx_sn_length == 5) {
     sn = pdu_pP->b1 & 0x1F;
   } else {
-    free_mem_block(pdu_mem_pP);
+    free_mem_block(pdu_mem_pP, __func__);
   }
 
   RLC_UM_MUTEX_LOCK(&rlc_pP->lock_dar_buffer, ctxt_pP, rlc_pP);
@@ -982,7 +982,7 @@ rlc_um_receive_process_dar (
 #endif
     rlc_pP->stat_rx_data_pdu_out_of_window   += 1;
     rlc_pP->stat_rx_data_bytes_out_of_window += tb_sizeP;
-    free_mem_block(pdu_mem_pP);
+    free_mem_block(pdu_mem_pP, __func__);
     pdu_mem_pP = NULL;
     RLC_UM_MUTEX_UNLOCK(&rlc_pP->lock_dar_buffer);
     VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_UM_RECEIVE_PROCESS_DAR, VCD_FUNCTION_OUT);
@@ -1001,7 +1001,7 @@ rlc_um_receive_process_dar (
       //discard the PDU
       rlc_pP->stat_rx_data_pdus_duplicate  += 1;
       rlc_pP->stat_rx_data_bytes_duplicate += tb_sizeP;
-      free_mem_block(pdu_mem_pP);
+      free_mem_block(pdu_mem_pP, __func__);
       pdu_mem_pP = NULL;
       RLC_UM_MUTEX_UNLOCK(&rlc_pP->lock_dar_buffer);
       VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_UM_RECEIVE_PROCESS_DAR, VCD_FUNCTION_OUT);
@@ -1017,7 +1017,7 @@ rlc_um_receive_process_dar (
           sn);
 #endif
     mem_block_t *pdu = rlc_um_remove_pdu_from_dar_buffer(ctxt_pP, rlc_pP, sn);
-    free_mem_block(pdu);
+    free_mem_block(pdu, __func__);
   }
 
   rlc_um_store_pdu_in_dar_buffer(ctxt_pP, rlc_pP, pdu_mem_pP, sn);
diff --git a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_reassembly.c b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_reassembly.c
index f8c6fdeabe..0805d708ca 100644
--- a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_reassembly.c
+++ b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_reassembly.c
@@ -69,7 +69,7 @@ rlc_um_reassembly (const protocol_ctxt_t* const ctxt_pP, rlc_um_entity_t *rlc_pP
 
   if (rlc_pP->output_sdu_in_construction == NULL) {
     //    msg("[RLC_UM_LITE] Getting mem_block ...\n");
-    rlc_pP->output_sdu_in_construction = get_free_mem_block (sdu_max_size);
+    rlc_pP->output_sdu_in_construction = get_free_mem_block (sdu_max_size, __func__);
     rlc_pP->output_sdu_size_to_write = 0;
   }
 
diff --git a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_segment.c b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_segment.c
index 5ce681723e..bae9bd8d80 100644
--- a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_segment.c
+++ b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_segment.c
@@ -115,7 +115,7 @@ rlc_um_segment_10 (const protocol_ctxt_t* const ctxt_pP, rlc_um_entity_t *rlc_pP
 #endif
       }
 
-      if (!(pdu_mem_p = get_free_mem_block (data_pdu_size + sizeof(struct mac_tb_req)))) {
+      if (!(pdu_mem_p = get_free_mem_block (data_pdu_size + sizeof(struct mac_tb_req), __func__))) {
 #if TRACE_RLC_UM_SEGMENT
         LOG_E(RLC, PROTOCOL_RLC_UM_CTXT_FMT" ERROR COULD NOT GET NEW PDU, EXIT\n",
               PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,rlc_pP));
@@ -291,7 +291,7 @@ rlc_um_segment_10 (const protocol_ctxt_t* const ctxt_pP, rlc_um_entity_t *rlc_pP
         // free SDU
         rlc_pP->buffer_occupancy -= sdu_mngt_p->sdu_remaining_size;
         sdu_in_buffer = list_remove_head(&rlc_pP->input_sdus);
-        free_mem_block (sdu_in_buffer);
+        free_mem_block (sdu_in_buffer, __func__);
         sdu_in_buffer = list_get_head(&rlc_pP->input_sdus);
         sdu_mngt_p    = NULL;
 
@@ -356,7 +356,7 @@ rlc_um_segment_10 (const protocol_ctxt_t* const ctxt_pP, rlc_um_entity_t *rlc_pP
         // free SDU
         rlc_pP->buffer_occupancy -= sdu_mngt_p->sdu_remaining_size;
         sdu_in_buffer = list_remove_head(&rlc_pP->input_sdus);
-        free_mem_block (sdu_in_buffer);
+        free_mem_block (sdu_in_buffer, __func__);
         sdu_in_buffer = list_get_head(&rlc_pP->input_sdus);
         sdu_mngt_p    = NULL;
 
@@ -380,7 +380,7 @@ rlc_um_segment_10 (const protocol_ctxt_t* const ctxt_pP, rlc_um_entity_t *rlc_pP
         // free SDU
         rlc_pP->buffer_occupancy -= sdu_mngt_p->sdu_remaining_size;
         sdu_in_buffer = list_remove_head(&rlc_pP->input_sdus);
-        free_mem_block (sdu_in_buffer);
+        free_mem_block (sdu_in_buffer, __func__);
         sdu_in_buffer = list_get_head(&rlc_pP->input_sdus);
         sdu_mngt_p    = NULL;
 
@@ -503,7 +503,7 @@ rlc_um_segment_5 (const protocol_ctxt_t* const ctxt_pP, rlc_um_entity_t *rlc_pP)
 #endif
       }
 
-      if (!(pdu_mem_p = get_free_mem_block (data_pdu_size + sizeof(struct mac_tb_req)))) {
+      if (!(pdu_mem_p = get_free_mem_block (data_pdu_size + sizeof(struct mac_tb_req), __func__))) {
 #if TRACE_RLC_UM_SEGMENT
         LOG_E(RLC, PROTOCOL_RLC_UM_CTXT_FMT" ERROR COULD NOT GET NEW PDU, EXIT\n",
               PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,rlc_pP));
@@ -679,7 +679,7 @@ rlc_um_segment_5 (const protocol_ctxt_t* const ctxt_pP, rlc_um_entity_t *rlc_pP)
         // free SDU
         rlc_pP->buffer_occupancy -= sdu_mngt_p->sdu_remaining_size;
         sdu_in_buffer = list_remove_head(&rlc_pP->input_sdus);
-        free_mem_block (sdu_in_buffer);
+        free_mem_block (sdu_in_buffer, __func__);
         sdu_in_buffer = list_get_head(&rlc_pP->input_sdus);
         sdu_mngt_p    = NULL;
 
@@ -743,7 +743,7 @@ rlc_um_segment_5 (const protocol_ctxt_t* const ctxt_pP, rlc_um_entity_t *rlc_pP)
         // free SDU
         rlc_pP->buffer_occupancy -= sdu_mngt_p->sdu_remaining_size;
         sdu_in_buffer = list_remove_head(&rlc_pP->input_sdus);
-        free_mem_block (sdu_in_buffer);
+        free_mem_block (sdu_in_buffer, __func__);
         sdu_in_buffer = list_get_head(&rlc_pP->input_sdus);
         sdu_mngt_p    = NULL;
 
@@ -765,7 +765,7 @@ rlc_um_segment_5 (const protocol_ctxt_t* const ctxt_pP, rlc_um_entity_t *rlc_pP)
         // free SDU
         rlc_pP->buffer_occupancy -= sdu_mngt_p->sdu_remaining_size;
         sdu_in_buffer = list_remove_head(&rlc_pP->input_sdus);
-        free_mem_block (sdu_in_buffer);
+        free_mem_block (sdu_in_buffer, __func__);
         sdu_in_buffer = list_get_head(&rlc_pP->input_sdus);
         sdu_mngt_p    = NULL;
       }
diff --git a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_test.c b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_test.c
index 92f18e72d7..fced6efbf9 100644
--- a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_test.c
+++ b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_test.c
@@ -301,7 +301,7 @@ void rlc_um_v9_3_0_test_send_sdu(rlc_um_entity_t *um_txP, int sdu_indexP)
 //-----------------------------------------------------------------------------
 {
   mem_block_t *sdu;
-  sdu = get_free_mem_block (strlen(g_sdus[sdu_indexP]) + 1 + sizeof (struct rlc_um_data_req_alloc));
+  sdu = get_free_mem_block (strlen(g_sdus[sdu_indexP]) + 1 + sizeof (struct rlc_um_data_req_alloc), __func__);
 
   if (sdu != NULL) {
     // PROCESS OF COMPRESSION HERE:
@@ -405,12 +405,12 @@ void rlc_um_v9_3_0_test_mac_rlc_loop (struct mac_data_ind* data_indP,  struct ma
       *tx_packetsP = *tx_packetsP + 1;
 
       if (*drop_countP == 0) {
-        tb_dst  = get_free_mem_block(sizeof (mac_rlc_max_rx_header_size_t) + tb_size);
+        tb_dst  = get_free_mem_block(sizeof (mac_rlc_max_rx_header_size_t) + tb_size, __func__);
         memset(tb_dst->data, 0, sizeof (mac_rlc_max_rx_header_size_t) + tb_size);
 
         if (tb_dst != NULL) {
           //printf("[RLC-LOOP] Testing tb_dst (1)\n");
-          check_free_mem_block(tb_dst);
+          check_free_mem_block(tb_dst, __func__);
           tb_dst->next = NULL;
           ((struct mac_tb_ind *) (tb_dst->data))->first_bit        = 0;
           ((struct mac_tb_ind *) (tb_dst->data))->data_ptr         = &tb_dst->data[sizeof (mac_rlc_max_rx_header_size_t)];
@@ -424,7 +424,7 @@ void rlc_um_v9_3_0_test_mac_rlc_loop (struct mac_data_ind* data_indP,  struct ma
           list_add_tail_eurecom(tb_dst, &data_indP->data);
           data_indP->no_tb  += 1;
           //printf("[RLC-LOOP] Testing tb_dst (2)\n");
-          check_free_mem_block(tb_dst);
+          check_free_mem_block(tb_dst, __func__);
         } else {
           printf("Out of memory error\n");
           exit(-1);
@@ -437,9 +437,9 @@ void rlc_um_v9_3_0_test_mac_rlc_loop (struct mac_data_ind* data_indP,  struct ma
 
 
       //printf("[RLC-LOOP] Testing tb_src\n");
-      check_free_mem_block(tb_src);
+      check_free_mem_block(tb_src, __func__);
 
-      free_mem_block(tb_src);
+      free_mem_block(tb_src, __func__);
 
       if (data_indP->no_tb > 0) {
         printf("[RLC-LOOP] Exchange %d TBs\n",data_indP->no_tb);
@@ -578,13 +578,13 @@ void rlc_um_v9_3_0_test_data_ind (module_id_t module_idP, rb_id_t rb_idP, sdu_si
 
         assert(g_send_sdu_ids[g_send_id_read_index[rb_idP]][rb_idP^1] == i);
         g_send_id_read_index[rb_idP] += 1;
-        free_mem_block(sduP);
+        free_mem_block(sduP, __func__);
         return;
       }
     }
 
     printf("[FRAME %05d][RLC][MOD %d][RB %d] RX UNKNOWN SDU %04d bytes\n",g_frame,module_idP, rb_idP,  sizeP);
-    free_mem_block(sduP);
+    free_mem_block(sduP, __func__);
     assert(1==2);
   } else {
     for (i = 0; i < 37; i++) {
@@ -592,13 +592,13 @@ void rlc_um_v9_3_0_test_data_ind (module_id_t module_idP, rb_id_t rb_idP, sdu_si
         printf("[FRAME %05d][RLC][MOD %02d][RB %02d] RX SDU %d %04d bytes\n",g_frame,module_idP, rb_idP, i, sizeP);
         assert(TEST_MAX_SEND_SDU > g_send_id_read_index[rb_idP]);
         g_send_id_read_index[rb_idP] += 1;
-        free_mem_block(sduP);
+        free_mem_block(sduP, __func__);
         return;
       }
     }
 
     printf("[FRAME %05d][RLC][MOD %d][RB %d] RX UNKNOWN SDU %04d bytes\n",g_frame,module_idP, rb_idP,  sizeP);
-    free_mem_block(sduP);
+    free_mem_block(sduP, __func__);
     return;
   }
 }
diff --git a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_very_simple_test.c b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_very_simple_test.c
index ef6ca75be9..9934fd3a58 100644
--- a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_very_simple_test.c
+++ b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_very_simple_test.c
@@ -44,7 +44,7 @@ rlc_um_test_send_sdu     (rlc_um_entity_t* rlcP,  uint32_t frame, unsigned int s
 
   switch (sdu_typeP) {
   case RLC_UM_TEST_SDU_TYPE_TCPIP:
-    sdu_mem = get_free_mem_block (strlen(tcip_sdu)+ 1 + sizeof (struct rlc_um_data_req_alloc));
+    sdu_mem = get_free_mem_block (strlen(tcip_sdu)+ 1 + sizeof (struct rlc_um_data_req_alloc), __func__);
 
     if (sdu_mem != NULL) {
       memset (sdu_mem->data, 0, sizeof (struct rlc_um_data_req_alloc));
@@ -59,7 +59,7 @@ rlc_um_test_send_sdu     (rlc_um_entity_t* rlcP,  uint32_t frame, unsigned int s
     break;
 
   case RLC_UM_TEST_SDU_TYPE_VOIP:
-    sdu_mem = get_free_mem_block (strlen(voip_sdu)+ 1 + sizeof (struct rlc_um_data_req_alloc));
+    sdu_mem = get_free_mem_block (strlen(voip_sdu)+ 1 + sizeof (struct rlc_um_data_req_alloc), __func__);
 
     if (sdu_mem != NULL) {
       memset (sdu_mem->data, 0, sizeof (struct rlc_um_data_req_alloc));
@@ -74,7 +74,7 @@ rlc_um_test_send_sdu     (rlc_um_entity_t* rlcP,  uint32_t frame, unsigned int s
     break;
 
   case RLC_UM_TEST_SDU_TYPE_SMALL:
-    sdu_mem = get_free_mem_block (strlen(very_small_sdu)+ 1 + sizeof (struct rlc_um_data_req_alloc));
+    sdu_mem = get_free_mem_block (strlen(very_small_sdu)+ 1 + sizeof (struct rlc_um_data_req_alloc), __func__);
 
     if (sdu_mem != NULL) {
       memset (sdu_mem->data, 0, sizeof (struct rlc_um_data_req_alloc));
diff --git a/openair2/LAYER2/RLC/rlc.c b/openair2/LAYER2/RLC/rlc.c
index 3fe5c6cb41..1073d3ded3 100644
--- a/openair2/LAYER2/RLC/rlc.c
+++ b/openair2/LAYER2/RLC/rlc.c
@@ -413,7 +413,7 @@ rlc_op_status_t rlc_data_req     (const protocol_ctxt_t* const ctxt_pP,
 
     switch (rlc_mode) {
     case RLC_MODE_NONE:
-      free_mem_block(sdu_pP);
+      free_mem_block(sdu_pP, __func__);
       LOG_E(RLC, PROTOCOL_CTXT_FMT" Received RLC_MODE_NONE as rlc_type for rb_id %u\n",
             PROTOCOL_CTXT_ARGS(ctxt_pP),
             rb_idP);
@@ -424,7 +424,7 @@ rlc_op_status_t rlc_data_req     (const protocol_ctxt_t* const ctxt_pP,
 #ifdef DEBUG_RLC_DATA_REQ
       msg("RLC_MODE_AM\n");
 #endif
-      new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_am_data_req_alloc));
+      new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_am_data_req_alloc), __func__);
 
       if (new_sdu_p != NULL) {
         // PROCESS OF COMPRESSION HERE:
@@ -435,7 +435,7 @@ rlc_op_status_t rlc_data_req     (const protocol_ctxt_t* const ctxt_pP,
         ((struct rlc_am_data_req *) (new_sdu_p->data))->conf = confirmP;
         ((struct rlc_am_data_req *) (new_sdu_p->data))->mui  = muiP;
         ((struct rlc_am_data_req *) (new_sdu_p->data))->data_offset = sizeof (struct rlc_am_data_req_alloc);
-        free_mem_block(sdu_pP);
+        free_mem_block(sdu_pP, __func__);
         rlc_am_data_req(ctxt_pP, &rlc_union_p->rlc.am, new_sdu_p);
         VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT);
         return RLC_OP_STATUS_OK;
@@ -447,7 +447,7 @@ rlc_op_status_t rlc_data_req     (const protocol_ctxt_t* const ctxt_pP,
       break;
 
     case RLC_MODE_UM:
-      new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_um_data_req_alloc));
+      new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_um_data_req_alloc), __func__);
 
       if (new_sdu_p != NULL) {
         // PROCESS OF COMPRESSION HERE:
@@ -456,11 +456,11 @@ rlc_op_status_t rlc_data_req     (const protocol_ctxt_t* const ctxt_pP,
 
         ((struct rlc_um_data_req *) (new_sdu_p->data))->data_size = sdu_sizeP;
         ((struct rlc_um_data_req *) (new_sdu_p->data))->data_offset = sizeof (struct rlc_um_data_req_alloc);
-        free_mem_block(sdu_pP);
+        free_mem_block(sdu_pP, __func__);
 
         rlc_um_data_req(ctxt_pP, &rlc_union_p->rlc.um, new_sdu_p);
 
-        //free_mem_block(new_sdu);
+        //free_mem_block(new_sdu, __func__);
         VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT);
         return RLC_OP_STATUS_OK;
       } else {
@@ -471,7 +471,7 @@ rlc_op_status_t rlc_data_req     (const protocol_ctxt_t* const ctxt_pP,
       break;
 
     case RLC_MODE_TM:
-      new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_tm_data_req_alloc));
+      new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_tm_data_req_alloc), __func__);
 
       if (new_sdu_p != NULL) {
         // PROCESS OF COMPRESSION HERE:
@@ -480,7 +480,7 @@ rlc_op_status_t rlc_data_req     (const protocol_ctxt_t* const ctxt_pP,
 
         ((struct rlc_tm_data_req *) (new_sdu_p->data))->data_size = sdu_sizeP;
         ((struct rlc_tm_data_req *) (new_sdu_p->data))->data_offset = sizeof (struct rlc_tm_data_req_alloc);
-        free_mem_block(sdu_pP);
+        free_mem_block(sdu_pP, __func__);
         rlc_tm_data_req(ctxt_pP, &rlc_union_p->rlc.tm, new_sdu_p);
         VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT);
         return RLC_OP_STATUS_OK;
@@ -493,7 +493,7 @@ rlc_op_status_t rlc_data_req     (const protocol_ctxt_t* const ctxt_pP,
       break;
 
     default:
-      free_mem_block(sdu_pP);
+      free_mem_block(sdu_pP, __func__);
       VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT);
       return RLC_OP_STATUS_INTERNAL_ERROR;
 
@@ -505,7 +505,7 @@ rlc_op_status_t rlc_data_req     (const protocol_ctxt_t* const ctxt_pP,
     if (sdu_pP != NULL) {
       if (sdu_sizeP > 0) {
         LOG_I(RLC,"received a packet with size %d for MBMS \n", sdu_sizeP);
-        new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_um_data_req_alloc));
+        new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_um_data_req_alloc), __func__);
 
         if (new_sdu_p != NULL) {
           // PROCESS OF COMPRESSION HERE:
@@ -513,10 +513,10 @@ rlc_op_status_t rlc_data_req     (const protocol_ctxt_t* const ctxt_pP,
           memcpy (&new_sdu_p->data[sizeof (struct rlc_um_data_req_alloc)], &sdu_pP->data[0], sdu_sizeP);
           ((struct rlc_um_data_req *) (new_sdu_p->data))->data_size = sdu_sizeP;
           ((struct rlc_um_data_req *) (new_sdu_p->data))->data_offset = sizeof (struct rlc_um_data_req_alloc);
-          free_mem_block(sdu_pP);
+          free_mem_block(sdu_pP, __func__);
           rlc_um_data_req(ctxt_pP, &rlc_union_p->rlc.um, new_sdu_p);
 
-          //free_mem_block(new_sdu);
+          //free_mem_block(new_sdu, __func__);
           VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT);
           return RLC_OP_STATUS_OK;
         } else {
@@ -537,7 +537,7 @@ rlc_op_status_t rlc_data_req     (const protocol_ctxt_t* const ctxt_pP,
   }
   else  /* MBMS_flag != 0 */
   {
-    free_mem_block(sdu_pP);
+    free_mem_block(sdu_pP, __func__);
     LOG_E(RLC, "MBMS_flag != 0 while Rel10 is not defined...\n");
     //handle_event(ERROR,"FILE %s FONCTION rlc_data_req() LINE %s : parameter module_id out of bounds :%d\n", __FILE__, __LINE__, module_idP);
     VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT);
diff --git a/openair2/LAYER2/RLC/rlc_mac.c b/openair2/LAYER2/RLC/rlc_mac.c
index d59b187dc7..d43a90ed6a 100644
--- a/openair2/LAYER2/RLC/rlc_mac.c
+++ b/openair2/LAYER2/RLC/rlc_mac.c
@@ -57,7 +57,7 @@ struct mac_data_ind mac_rlc_deserialize_tb (
   list_init(&data_ind.data, NULL);
 
   while (num_tbP > 0) {
-    tb_p = get_free_mem_block(sizeof (mac_rlc_max_rx_header_size_t) + tb_sizeP);
+    tb_p = get_free_mem_block(sizeof (mac_rlc_max_rx_header_size_t) + tb_sizeP, __func__);
 
     if (tb_p != NULL) {
       ((struct mac_tb_ind *) (tb_p->data))->first_bit = 0;
@@ -110,7 +110,7 @@ tbs_size_t mac_rlc_serialize_tb (char* buffer_pP, list_t transport_blocksP)
 #endif
       memcpy(&buffer_pP[tbs_size], &((struct mac_tb_req *) (tb_p->data))->data_ptr[0], tb_size);
       tbs_size = tbs_size + tb_size;
-      free_mem_block(tb_p);
+      free_mem_block(tb_p, __func__);
     }
   }
 
diff --git a/openair2/LAYER2/RLC/rlc_rrc.c b/openair2/LAYER2/RLC/rlc_rrc.c
index 9ef8bd8700..0b0073d807 100644
--- a/openair2/LAYER2/RLC/rlc_rrc.c
+++ b/openair2/LAYER2/RLC/rlc_rrc.c
@@ -786,7 +786,7 @@ rlc_op_status_t rrc_rlc_data_req     (
   //-----------------------------------------------------------------------------
   mem_block_t*   sdu;
 
-  sdu = get_free_mem_block(sdu_sizeP);
+  sdu = get_free_mem_block(sdu_sizeP, __func__);
 
   if (sdu != NULL) {
     memcpy (sdu->data, sduP, sdu_sizeP);
diff --git a/openair2/UTIL/LISTS/list.c b/openair2/UTIL/LISTS/list.c
index 33b880d297..7040aeeef7 100644
--- a/openair2/UTIL/LISTS/list.c
+++ b/openair2/UTIL/LISTS/list.c
@@ -59,7 +59,7 @@ list_free (list_t * listP)
   mem_block_t      *le;
 
   while ((le = list_remove_head (listP))) {
-    free_mem_block (le);
+    free_mem_block (le, __func__);
   }
 }
 //-----------------------------------------------------------------------------
diff --git a/openair2/UTIL/LISTS/list2.c b/openair2/UTIL/LISTS/list2.c
index 4a8de24b51..abd9d2aacc 100644
--- a/openair2/UTIL/LISTS/list2.c
+++ b/openair2/UTIL/LISTS/list2.c
@@ -75,7 +75,7 @@ list2_free (list2_t * listP)
   mem_block_t      *le;
 
   while ((le = list2_remove_head (listP))) {
-    free_mem_block (le);
+    free_mem_block (le, __func__);
   }
 }
 
diff --git a/openair2/UTIL/MEM/mem_block.c b/openair2/UTIL/MEM/mem_block.c
index 8a5f5fd223..150f19b71c 100644
--- a/openair2/UTIL/MEM/mem_block.c
+++ b/openair2/UTIL/MEM/mem_block.c
@@ -55,7 +55,7 @@ static pthread_mutex_t mtex = PTHREAD_MUTEX_INITIALIZER;
 //#define DEBUG_MEM_MNGT_ALLOC
 //-----------------------------------------------------------------------------
 #if defined(USER_MODE) && defined(DEBUG_MEM_MNGT_ALLOC)
-uint32_t             counters[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+uint32_t             counters[14] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
 #endif
 //-----------------------------------------------------------------------------
 /*
@@ -173,7 +173,7 @@ pool_buffer_clean (void *arg)
 }
 //-----------------------------------------------------------------------------
 void
-free_mem_block (mem_block_t * leP)
+free_mem_block (mem_block_t * leP, const char* caller)
 {
   //-----------------------------------------------------------------------------
 
@@ -197,6 +197,11 @@ free_mem_block (mem_block_t * leP)
     list_add_tail_eurecom (leP, &mem_block_var.mem_lists[leP->pool_id]);
 #ifdef DEBUG_MEM_MNGT_ALLOC
     counters[leP->pool_id] -= 1;
+    msg ("[%s][MEM_MNGT][INFO] after pool[%2d] freed: counters = {%2d %2d %2d %2d %2d %2d %2d %2d %2d %2d %2d %2d}\n",
+        caller, leP->pool_id,
+        counters[0],counters[1],counters[2],counters[3],counters[4],
+        counters[5],counters[6],counters[7],counters[8],counters[9],
+        counters[10],counters[11]);
 #endif
     leP = NULL;                 // this prevent from freeing the block twice
   } else {
@@ -210,7 +215,7 @@ free_mem_block (mem_block_t * leP)
 
 //-----------------------------------------------------------------------------
 mem_block_t      *
-get_free_mem_block (uint32_t sizeP)
+get_free_mem_block (uint32_t sizeP, const char* caller)
 {
   //-----------------------------------------------------------------------------
   mem_block_t      *le = NULL;
@@ -242,11 +247,19 @@ get_free_mem_block (uint32_t sizeP)
     if ((le = list_remove_head (&mem_block_var.mem_lists[pool_selected]))) {
 #ifdef DEBUG_MEM_MNGT_ALLOC
       counters[pool_selected] += 1;
+      msg ("[%s][MEM_MNGT][INFO] after pool[%2d] allocated: counters = {%2d %2d %2d %2d %2d %2d %2d %2d %2d %2d %2d %2d}\n",
+          caller,
+          pool_selected,
+          counters[0],counters[1],counters[2],counters[3],counters[4],
+          counters[5],counters[6],counters[7],counters[8],counters[9],
+          counters[10],counters[11]);
 #endif
 #ifdef DEBUG_MEM_MNGT_ALLOC_SIZE
       msg ("[MEM_MNGT][INFO] ALLOC MEM_BLOCK SIZE %d bytes pool %d (%p)\n", sizeP, pool_selected,le);
 #endif
 
+      AssertFatal(le->pool_id == pool_selected, "Unexpected pool ID!");
+
 #ifdef MEMBLOCK_BIG_LOCK
   if (pthread_mutex_unlock(&mtex)) abort();
 #endif
@@ -263,6 +276,7 @@ get_free_mem_block (uint32_t sizeP)
 #endif
   } while (pool_selected++ < 12);
 
+  LOG_E(PHY, "[MEM_MNGT][ERROR][FATAL] failed allocating MEM_BLOCK size %d byes (pool_selected=%d size=%d)\n", sizeP, pool_selected, size);
   display_mem_load();
   mac_xface->macphy_exit("[MEM_MNGT][ERROR][FATAL] get_free_mem_block failed");
 
@@ -287,6 +301,13 @@ get_free_copy_mem_block (void)
   if ((le = list_remove_head (&mem_block_var.mem_lists[MEM_MNGT_POOL_ID_COPY]))) {
 #ifdef DEBUG_MEM_MNGT_ALLOC_SIZE
     msg ("[MEM_MNGT][INFO] ALLOC COPY MEM BLOCK (%p)\n",le);
+#endif
+#ifdef DEBUG_MEM_MNGT_ALLOC
+      counters[MEM_MNGT_POOL_ID_COPY] += 1;
+      msg ("[MEM_MNGT][INFO] pool counters = {%2d %2d %2d %2d %2d %2d %2d %2d %2d %2d %2d %2d}\n",
+          counters[0],counters[1],counters[2],counters[3],counters[4],
+          counters[5],counters[6],counters[7],counters[8],counters[9],
+          counters[10],counters[11]);
 #endif
     return le;
   } else {
diff --git a/openair2/UTIL/MEM/mem_block.h b/openair2/UTIL/MEM/mem_block.h
index 8164dcf51c..c3a2f5dff2 100644
--- a/openair2/UTIL/MEM/mem_block.h
+++ b/openair2/UTIL/MEM/mem_block.h
@@ -55,8 +55,8 @@ typedef struct mem_block_t {
 
 public_mem_block(void        *pool_buffer_init (void);)
 public_mem_block(void        *pool_buffer_clean (void *arg);)
-public_mem_block(void         free_mem_block (mem_block_t * leP);)
-public_mem_block(mem_block_t* get_free_mem_block (uint32_t sizeP);)
+public_mem_block(void         free_mem_block (mem_block_t * leP, const char* caller);)
+public_mem_block(mem_block_t* get_free_mem_block (uint32_t sizeP, const char* caller);)
 public_mem_block(mem_block_t *get_free_copy_mem_block (void);)
 public_mem_block(mem_block_t *get_free_copy_mem_block_up (void);)
 public_mem_block(mem_block_t *copy_mem_block (mem_block_t * leP, mem_block_t * destP);)
diff --git a/openair2/UTIL/MEM/mem_mngt.c b/openair2/UTIL/MEM/mem_mngt.c
index 64503d8cb7..9f4f57cdd2 100644
--- a/openair2/UTIL/MEM/mem_mngt.c
+++ b/openair2/UTIL/MEM/mem_mngt.c
@@ -161,7 +161,7 @@ pool_buffer_clean (void *arg)
 }
 //-----------------------------------------------------------------------------
 void
-free_mem_block (mem_block_t * leP)
+free_mem_block (mem_block_t * leP, __func__)
 {
   //-----------------------------------------------------------------------------
 
@@ -171,10 +171,10 @@ free_mem_block (mem_block_t * leP)
   }
 
 #ifdef DEBUG_MEM_MNGT_FREE
-  msg ("[MEM_MNGT][FREE] free_mem_block() %p pool: %d\n", leP, leP->pool_id);
+  msg ("[MEM_MNGT][FREE] free_mem_block() %p pool: %d\n", leP, leP->pool_id, __func__);
 #endif
 #ifdef DEBUG_MEM_MNGT_ALLOC
-  check_free_mem_block (leP);
+  check_free_mem_block (leP, __func__);
 #endif
 
   if (leP->pool_id <= MEM_MNGT_POOL_ID_COPY) {
@@ -184,14 +184,14 @@ free_mem_block (mem_block_t * leP)
 #endif
     leP = NULL;                 // this prevent from freeing the block twice
   } else {
-    msg ("[MEM_MNGT][FREE] ERROR free_mem_block() unknown pool_id : %d\n", leP->pool_id);
+    msg ("[MEM_MNGT][FREE] ERROR free_mem_block() unknown pool_id : %d\n", leP->pool_id, __func__);
   }
 }
 
 
 //-----------------------------------------------------------------------------
 mem_block_t      *
-get_free_mem_block (uint16_t sizeP)
+get_free_mem_block (uint16_t sizeP, __func__)
 {
   //-----------------------------------------------------------------------------
   mem_block_t      *le = NULL;
@@ -414,7 +414,7 @@ check_mem_area (void *arg)
 
 //-----------------------------------------------------------------------------
 void
-check_free_mem_block (mem_block_t * leP)
+check_free_mem_block (mem_block_t * leP, __func__)
 {
   //-----------------------------------------------------------------------------
   int             block_index;
diff --git a/openair2/UTIL/TIMER/umts_timer.c b/openair2/UTIL/TIMER/umts_timer.c
index ff21ce8e84..9978419fb8 100644
--- a/openair2/UTIL/TIMER/umts_timer.c
+++ b/openair2/UTIL/TIMER/umts_timer.c
@@ -54,7 +54,7 @@ umts_timer_check_time_out (list2_t * atimer_listP, uint32_t current_frame_tick_m
 
       mem_unit = list2_remove_head (atimer_listP);
       (*(timer->proc)) (timer->protocol, timer->timer_id);
-      free_mem_block (mem_unit);
+      free_mem_block (mem_unit, __func__);
 
       mem_unit = atimer_listP->head;
     } else {
@@ -74,7 +74,7 @@ umts_timer_delete_timer (list2_t * atimer_listP, void *timer_idP)
   while ((mem_unit)) {
     if (((struct timer_unit *) (mem_unit->data))->timer_id == timer_idP) {
       list2_remove_element (mem_unit, atimer_listP);
-      free_mem_block (mem_unit);
+      free_mem_block (mem_unit, __func__);
       return;
     }
 
@@ -93,7 +93,7 @@ umts_add_timer_list_up (list2_t * atimer_listP, void (*procP) (void *, void *),
   int32_t             remaining_time;
   uint8_t              inserted = 0;
 
-  mb = get_free_mem_block (sizeof (struct timer_unit));
+  mb = get_free_mem_block (sizeof (struct timer_unit), __func__);
   ((struct timer_unit *) (mb->data))->proc = procP;
   ((struct timer_unit *) (mb->data))->protocol = protocolP;
   ((struct timer_unit *) (mb->data))->timer_id = timer_idP;
@@ -166,7 +166,7 @@ umts_stop_all_timers_except (list2_t * atimer_listP, void (*procP) (void *, void
       mem_unit_to_delete = mem_unit;
       mem_unit = mem_unit->next;
       list2_remove_element (mem_unit_to_delete, atimer_listP);
-      free_mem_block (mem_unit_to_delete);
+      free_mem_block (mem_unit_to_delete, __func__);
     } else {
       mem_unit = mem_unit->next;
     }
diff --git a/targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c b/targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c
index dc395281dc..d64315fc25 100644
--- a/targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c
+++ b/targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c
@@ -132,7 +132,7 @@ void pdcp_rlc_test_mac_rlc_loop (struct mac_data_ind *data_indP,  struct mac_dat
       *tx_packetsP = *tx_packetsP + 1;
 
       if (*drop_countP == 0) {
-        tb_dst  = get_free_mem_block(sizeof (mac_rlc_max_rx_header_size_t) + tb_size);
+        tb_dst  = get_free_mem_block(sizeof (mac_rlc_max_rx_header_size_t) + tb_size, __func__);
 
         if (tb_dst != NULL) {
           ((struct mac_tb_ind *) (tb_dst->data))->first_bit        = 0;
@@ -156,7 +156,7 @@ void pdcp_rlc_test_mac_rlc_loop (struct mac_data_ind *data_indP,  struct mac_dat
         *dropped_tx_packetsP = *dropped_tx_packetsP + 1;
       }
 
-      free_mem_block(tb_src);
+      free_mem_block(tb_src, __func__);
 
       if (data_indP->no_tb > 0) {
         printf("[RLC-LOOP] Exchange %d TBs\n",data_indP->no_tb);
-- 
GitLab