diff --git a/CMakeLists.txt b/CMakeLists.txt
index 22453e5af68dc33b6340d992aaeb247d4c7d1790..569aae39753003df3ea2a83a2fc132bc2b3a4cfc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -158,11 +158,16 @@ endif()
 # add autotools definitions that were maybe used!
 add_definitions("-DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP")
 
-set(commonOpts "-pipe -fPIC -Wall -fno-strict-aliasing")
+# we need -rdynamic to incorporate all symbols in shared objects, see man page
+set(commonOpts "-pipe -fPIC -Wall -fno-strict-aliasing -rdynamic")
 # GNU C/C++ Compiler might throw many warnings without packed-bitfield-compat, see man page
-# also, we need -rdynamic to incorporate all symbols in shared objects, again, see man page
 if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
-  set(commonOpts "${commonOpts} -Wno-packed-bitfield-compat -rdynamic")
+  set(commonOpts "${commonOpts} -Wno-packed-bitfield-compat")
+endif()
+# clang: suppress complaints about unused command line argument (-rdynamic only
+# used during linking)
+if(CMAKE_C_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+  set(commonOpts "${commonOpts} -Wno-unused-command-line-argument")
 endif()
 
 set(CMAKE_C_FLAGS
diff --git a/ci-scripts/cls_containerize.py b/ci-scripts/cls_containerize.py
index c5e99500b1b4feac74c273e705555ca7d6457dc5..7b2813325fb7edfab42d134d11a63fbbc55f6769 100644
--- a/ci-scripts/cls_containerize.py
+++ b/ci-scripts/cls_containerize.py
@@ -1021,18 +1021,18 @@ class Containerize():
 		for s in allServices:
 			# outputs the hash if the container is running
 			ret = mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml ps --all --quiet -- {s}')
-			running = ret.stdout.splitlines()
-			logging.debug(f'running services: {running}')
+			c = ret.stdout
+			logging.debug(f'running service {s} with container id {c}')
 			if ret.stdout != "" and ret.returncode == 0: # something is running for that service
-				services.append(s)
-		logging.info(f'stopping services {services}')
+				services.append((s, c))
+		logging.info(f'stopping services {[s for s, _ in services]}')
 
 		mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml stop -t3')
 		copyin_res = True
-		for svcName in services:
+		for service_name, container_id in services:
 			# head -n -1 suppresses the final "X exited with status code Y"
-			filename = f'{svcName}-{HTML.testCase_id}.log'
-			mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml logs --no-log-prefix -- {svcName} &> {lSourcePath}/cmake_targets/log/{filename}')
+			filename = f'{service_name}-{HTML.testCase_id}.log'
+			mySSH.run(f'docker logs {container_id} &> {lSourcePath}/cmake_targets/log/{filename}')
 			copyin_res = mySSH.copyin(f'{lSourcePath}/cmake_targets/log/{filename}', f'{filename}') and copyin_res
 
 		mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml down -v')
@@ -1043,7 +1043,7 @@ class Containerize():
 			HTML.CreateHtmlTestRow('N/A', 'KO', CONST.ENB_PROCESS_NOLOGFILE_TO_ANALYZE)
 			self.exitStatus = 1
 		# use function for UE log analysis, when oai-nr-ue container is used
-		elif 'oai-nr-ue' in services or 'lte_ue0' in services:
+		elif any(service_name == 'oai-nr-ue' or service_name == 'lte_ue0' for service_name, _ in services):
 			self.exitStatus == 0
 			logging.debug(f'Analyzing UE logfile {filename}')
 			logStatus = cls_oaicitest.OaiCiTest().AnalyzeLogFile_UE(f'{filename}', HTML, RAN)
@@ -1053,12 +1053,12 @@ class Containerize():
 			else:
 				HTML.CreateHtmlTestRow('UE log Analysis', 'OK', CONST.ALL_PROCESSES_OK)
 		else:
-			for svcName in services:
-				if svcName == 'nv-cubb':
+			for service_name, _ in services:
+				if service_name == 'nv-cubb':
 					msg = 'Undeploy PNF/Nvidia CUBB'
 					HTML.CreateHtmlTestRow(msg, 'OK', CONST.ALL_PROCESSES_OK)
 				else:
-					filename = f'{svcName}-{HTML.testCase_id}.log'
+					filename = f'{service_name}-{HTML.testCase_id}.log'
 					logging.debug(f'\u001B[1m Analyzing logfile {filename}\u001B[0m')
 					logStatus = RAN.AnalyzeLogFile_eNB(filename, HTML, self.ran_checkers)
 					if (logStatus < 0):
diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai
index bb61d356f4b51e7957ad694f183a8796f8cf2a49..c59017b5ace8e8add3e0708dc767990d5e916be3 100755
--- a/cmake_targets/build_oai
+++ b/cmake_targets/build_oai
@@ -418,8 +418,6 @@ function main() {
             CMAKE_CMD="$CMAKE_CMD -DSANITIZE_UNDEFINED=True"
             shift;;
         --sanitize-memory | -fsanitize=memory)
-            echo_warning "Note: memory sanitizer\n* requires clang (tested: v17)\n* is incompatible with address/undefined behavior sanitizer\n* requires cmake_targets/tools/memsan.patch"
-            sleep 2
             CMAKE_CMD="$CMAKE_CMD -DSANITIZE_MEMORY=ON -DSANITIZE_ADDRESS=OFF -DSANITIZE_UNDEFINED=OFF"
             shift;;
        --trace-asn1c-enc-dec)
diff --git a/cmake_targets/tools/memsan.patch b/cmake_targets/tools/memsan.patch
deleted file mode 100644
index a8b8e9f9923968e1d9268f6f0c55740475b4003e..0000000000000000000000000000000000000000
--- a/cmake_targets/tools/memsan.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-commit bf7f0c4f0f1bfce586667b50050640b67a7a747a
-Author: Robert Schmidt <robert.schmidt@openairinterface.org>
-Date:   Wed Jun 7 18:24:50 2023 +0200
-
-    Fix dlopen() linker errors in dfts, ldpc, ldpc_parityCheck, and params_libconfig
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index c29105d503..3b9e7d1246 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -508,7 +508,7 @@ add_library(CONFIG_LIB
- )
- target_link_libraries(CONFIG_LIB PRIVATE dl UTIL)
- add_library(params_libconfig MODULE ${CONFIG_ROOTDIR}/libconfig/config_libconfig.c)
--target_link_libraries(params_libconfig config)
-+target_link_libraries(params_libconfig config CONFIG_LIB minimal_lib)
- # shared library loader
- set (SHLIB_LOADER_SOURCES
-   ${OPENAIR_DIR}/common/utils/load_module_shlib.c
-@@ -1018,16 +1018,19 @@ if (ENABLE_LDPC_CUDA)
-   endif()
- endif()
- 
--add_library(ldpc MODULE ${PHY_LDPC_OPTIM8SEGMULTI_SRC} )
-+add_library(ldpc MODULE ${PHY_LDPC_OPTIM8SEGMULTI_SRC} ${OPENAIR1_DIR}/PHY/CODING/crc_byte.c)
- target_link_libraries(ldpc PRIVATE ldpc_gen_HEADERS)
-+target_link_libraries(ldpc PRIVATE UTIL)
- 
- add_library(ldpc_parityCheck MODULE ${PHY_LDPC_OPTIM8SEGMULTI_SRC} )
- target_compile_definitions(ldpc_parityCheck PUBLIC NR_LDPC_ENABLE_PARITY_CHECK)
- target_link_libraries(ldpc_parityCheck  PRIVATE ldpc_gen_HEADERS)
-+target_link_libraries(ldpc_parityCheck PRIVATE UTIL minimal_lib)
- 
- add_library(coding MODULE ${PHY_TURBOSRC} )
- 
- add_library(dfts MODULE ${OPENAIR1_DIR}/PHY/TOOLS/oai_dfts.c )
-+target_link_libraries(dfts PRIVATE minimal_lib)
- 
- 
- set(PHY_SRC_COMMON
-diff --git a/common/utils/minimal_stub.c b/common/utils/minimal_stub.c
-index be9c1b399d..7ad0df4d56 100644
---- a/common/utils/minimal_stub.c
-+++ b/common/utils/minimal_stub.c
-@@ -1,6 +1,8 @@
-+#include <stdlib.h>
- #ifndef T_TRACER
- int T_stdout;
- #endif
-+int oai_exit = 0;
- 
- void exit_function(const char *file, const char *function, const int line, const char *s, const int assert)
- {
diff --git a/common/config/libconfig/config_libconfig.c b/common/config/libconfig/config_libconfig.c
index c5cdd1972f89395fe4b3ea0ec787619a9b36d646..b0c3c2c6cf86a7113d2d5342923faeed5340b2d2 100644
--- a/common/config/libconfig/config_libconfig.c
+++ b/common/config/libconfig/config_libconfig.c
@@ -322,19 +322,16 @@ int config_libconfig_set(configmodule_interface_t *cfg, paramdef_t *cfgoptions,
 int config_libconfig_get(configmodule_interface_t *cfg, paramdef_t *cfgoptions, int numoptions, char *prefix)
 {
   config_setting_t *setting;
-  char *str;
-  int i,u;
-  long long int llu;
-  double dbl;
-  int rst;
-  int status=0;
-  int notfound;
-  int defval;
-  int fatalerror=0;
-  int numdefvals=0;
+  char *str = NULL;
+  int u = 0;
+  long long int llu = 0;
+  double dbl = 0.0f;
+  int status = 0;
+  int fatalerror = 0;
+  int numdefvals = 0;
   char cfgpath[512];  /* 512 should be enough for the sprintf below */
 
-  for(i=0; i<numoptions; i++) {
+  for(int i=0; i<numoptions; i++) {
     if (prefix != NULL) {
       sprintf(cfgpath,"%s.%s",prefix,cfgoptions[i].optname);
     } else {
@@ -346,8 +343,8 @@ int config_libconfig_get(configmodule_interface_t *cfg, paramdef_t *cfgoptions,
       continue;
     }
 
-    notfound=0;
-    defval=0;
+    int notfound = 0;
+    int defval = 0;
 
     switch(cfgoptions[i].type) {
       case TYPE_STRING:
@@ -436,7 +433,7 @@ int config_libconfig_get(configmodule_interface_t *cfg, paramdef_t *cfgoptions,
         if ( !config_lookup_string(&(libconfig_privdata.cfg),cfgpath, (const char **)&str)) {
           defval = config_setdefault_ipv4addr(cfg, &(cfgoptions[i]), prefix);
         } else {
-          rst = config_assign_ipv4addr(cfg, cfgoptions, str);
+          int rst = config_assign_ipv4addr(cfg, cfgoptions, str);
 
           if (rst < 0) {
             fprintf(stderr,"[LIBCONFIG] %s not valid for %s \n", str, cfgpath);
diff --git a/common/utils/T/DOC/T/howto_new_trace.patch b/common/utils/T/DOC/T/howto_new_trace.patch
index 47bbc661382f1355812b782dfbaf1b9d1a7dd3d6..86dfe5d23cf234ed655d5301d8dd1cf2ad231228 100644
--- a/common/utils/T/DOC/T/howto_new_trace.patch
+++ b/common/utils/T/DOC/T/howto_new_trace.patch
@@ -164,7 +164,7 @@ index 0000000000..00baf34774
 +  }
 +
 +  /* a buffer needed to receive events from the nr-softmodem */
-+  OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
++  OBUF ebuf = { .osize = 0, .omaxsize = 0, .obuf = NULL };
 +
 +  /* read events */
 +  while (1) {
diff --git a/common/utils/T/tracer/enb.c b/common/utils/T/tracer/enb.c
index 9a4751b67eed287cfc22bc8e95408a409fd14641..5bb1cb87e2debc3e82c9d61a8fb5cce5e2fdc5bd 100644
--- a/common/utils/T/tracer/enb.c
+++ b/common/utils/T/tracer/enb.c
@@ -874,7 +874,7 @@ int main(int n, char **v)
   if (pthread_mutex_init(&enb_data.lock, NULL)) abort();
   setup_event_selector(g, database, is_on, is_on_changed, &enb_data);
 
-  OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
+  OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
 
 restart:
   clear_remote_config();
diff --git a/common/utils/T/tracer/event.c b/common/utils/T/tracer/event.c
index 41da5c082374f06b2a00c47a0693ade9be82feae..a5d04166d49d5841522805c09847f22b8dbae822 100644
--- a/common/utils/T/tracer/event.c
+++ b/common/utils/T/tracer/event.c
@@ -49,7 +49,7 @@ again:
 #endif
 
 read_error:
-  return (event){type: -1};
+  return (event){.type = -1};
 }
 
 #ifdef T_SEND_TIME
diff --git a/common/utils/T/tracer/extract.c b/common/utils/T/tracer/extract.c
index fe3177b74a0098f9cde309cc76b11d0c479f1caa..445b166f09b674376542a2b842b40cdfa0c45574 100644
--- a/common/utils/T/tracer/extract.c
+++ b/common/utils/T/tracer/extract.c
@@ -113,7 +113,7 @@ int main(int n, char **v)
 
   found = 0;
 
-  OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
+  OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
 
   while (1) {
     event e;
diff --git a/common/utils/T/tracer/extract_config.c b/common/utils/T/tracer/extract_config.c
index a26c52aeda2a8ec31cf4748a0fc07a825d18a477..b908e60a83edee9c64a9e5a66c5eae6c7549e75e 100644
--- a/common/utils/T/tracer/extract_config.c
+++ b/common/utils/T/tracer/extract_config.c
@@ -36,7 +36,7 @@ int main(int n, char **v)
   in = fopen(input_filename, "r");
   if (in == NULL) { perror(input_filename); abort(); }
 
-  OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
+  OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
 
   while (1) {
     int type;
diff --git a/common/utils/T/tracer/extract_input_subframe.c b/common/utils/T/tracer/extract_input_subframe.c
index 78bc288df15f27677b7c56af481018b92cb205a0..c4116953db80a0fa2faecb7b217537a62857e818 100644
--- a/common/utils/T/tracer/extract_input_subframe.c
+++ b/common/utils/T/tracer/extract_input_subframe.c
@@ -104,7 +104,7 @@ err:
   fd = open(file, O_RDONLY);
   if (fd == -1) { perror(file); exit(1); }
 
-  OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
+  OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
 
   /* get wanted frame/subframe */
   while (1) {
diff --git a/common/utils/T/tracer/extract_output_subframe.c b/common/utils/T/tracer/extract_output_subframe.c
index 5c5abb768e2824b2e3c19560974fc837c198221f..226f6d7a2eb59815aa494347a6fd8902aee9fc55 100644
--- a/common/utils/T/tracer/extract_output_subframe.c
+++ b/common/utils/T/tracer/extract_output_subframe.c
@@ -101,7 +101,7 @@ err:
   int last_subframe = -1;
   int subframe_written = 0;
 
-  OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
+  OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
 
   while (1) {
     event e;
diff --git a/common/utils/T/tracer/gnb.c b/common/utils/T/tracer/gnb.c
index a2953cb00d7a86f9756357db022b55a64f3a2416..22567492f8865421667c596dce58efd475e33167 100644
--- a/common/utils/T/tracer/gnb.c
+++ b/common/utils/T/tracer/gnb.c
@@ -265,7 +265,7 @@ int main(int n, char **v)
 
   gnb_main_gui(&eg, g, h, database, &gnb_data);
 
-  OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
+  OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
 
 restart:
   clear_remote_config();
diff --git a/common/utils/T/tracer/hacks/dump_nack_signal.c b/common/utils/T/tracer/hacks/dump_nack_signal.c
index 02825202fb14544eb3074da8fdb0dbe1c5323cf6..f50e8a761a4807efe16a910feaed60ea37b8cb05 100644
--- a/common/utils/T/tracer/hacks/dump_nack_signal.c
+++ b/common/utils/T/tracer/hacks/dump_nack_signal.c
@@ -85,7 +85,7 @@ int main(int n, char **v) {
       socket_send(socket, is_on, number_of_events * sizeof(int)) == -1)
     abort();
 
-  OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
+  OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
   char dump[10][T_BUFFER_MAX];
   event dump_ev[10];
   FILE *z = fopen("/tmp/dd", "w");
diff --git a/common/utils/T/tracer/hacks/multi-rru-clean.c b/common/utils/T/tracer/hacks/multi-rru-clean.c
index fd94253fb0f49037b77da83afeed6350c3fccf0e..ec7c8f9d1bbae1f811e8acfc19e5925f9a228512 100644
--- a/common/utils/T/tracer/hacks/multi-rru-clean.c
+++ b/common/utils/T/tracer/hacks/multi-rru-clean.c
@@ -145,7 +145,7 @@ int main(int n, char **v)
 
   clear_cache(number_of_tags, cache);
 
-  OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
+  OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
 
   while (1) {
     int type;
diff --git a/common/utils/T/tracer/hacks/time_meas.c b/common/utils/T/tracer/hacks/time_meas.c
index 408189cd80c210d7ce0dcf7cb17a48244336a32f..ae38dcd1772e6e28d39c13c207219455dfe09703 100644
--- a/common/utils/T/tracer/hacks/time_meas.c
+++ b/common/utils/T/tracer/hacks/time_meas.c
@@ -86,7 +86,7 @@ int main(int n, char **v)
       socket_send(socket, is_on, number_of_events * sizeof(int)) == -1)
     abort();
 
-  OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
+  OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
 
   while (1) {
     event e;
diff --git a/common/utils/T/tracer/logger/textlog.c b/common/utils/T/tracer/logger/textlog.c
index 76f920e1e2e96bb0b68971ce9826b78a7e441c3f..8217c2b9818456aae1125d5d36f6e8ee670924bf 100644
--- a/common/utils/T/tracer/logger/textlog.c
+++ b/common/utils/T/tracer/logger/textlog.c
@@ -131,7 +131,7 @@ static struct chunk next_chunk(char **s, database_event_format f)
     cur++;
     *s = cur;
     if (find_argument(name, f, &it, &event_arg) == 0) goto error;
-    return (struct chunk){type:C_ARG_NAME, s:name, it:it, event_arg:event_arg};
+    return (struct chunk){.type = C_ARG_NAME, .s = name, .it = it, .event_arg = event_arg};
   }
 
   /* { } is name of event (anything in between is smashed) */
@@ -143,7 +143,7 @@ static struct chunk next_chunk(char **s, database_event_format f)
     *cur = 0;
     cur++;
     *s = cur;
-    return (struct chunk){type:C_EVENT_NAME};
+    return (struct chunk){.type = C_EVENT_NAME};
   }
 
   /* anything but [ and { is raw string */
@@ -151,10 +151,10 @@ static struct chunk next_chunk(char **s, database_event_format f)
   name = cur;
   while (*cur && *cur != '[' && *cur != '{') cur++;
   *s = cur;
-  return (struct chunk){type:C_STRING, s:name};
+  return (struct chunk){.type = C_STRING, .s = name};
 
 error:
-  return (struct chunk){type:C_ERROR};
+  return (struct chunk){.type = C_ERROR};
 }
 
 logger *new_textlog(event_handler *h, void *database,
diff --git a/common/utils/T/tracer/macpdu2wireshark.c b/common/utils/T/tracer/macpdu2wireshark.c
index cfa90a24db6a6c94779d35f7d075dfa8aeb17fa5..d7c4b23b51639b252fa6af6fc07a916e3c41e620 100644
--- a/common/utils/T/tracer/macpdu2wireshark.c
+++ b/common/utils/T/tracer/macpdu2wireshark.c
@@ -808,7 +808,7 @@ int main(int n, char **v)
   d.to.sin_port = htons(port);
   d.to.sin_addr.s_addr = inet_addr(ip);
   new_thread(receiver, &d);
-  OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
+  OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
 
   /* read messages */
   while (1) {
diff --git a/common/utils/T/tracer/multi.c b/common/utils/T/tracer/multi.c
index 73fadc37d344920642262b98fb0e4b3a32fac7f5..0b2e48ec7a8c1324be569e0ee559c3b8a9f66870 100644
--- a/common/utils/T/tracer/multi.c
+++ b/common/utils/T/tracer/multi.c
@@ -52,7 +52,7 @@ int send_messages_txt(int s, char *T_messages_txt, int T_messages_txt_len)
     /* TODO: be careful, we use internal T stuff, to rewrite? */
     T_LOCAL_size = 0;
     T_HEADER(T_ID(-1));
-    T_PUT_buffer(1, ((T_buffer){addr:(src), length:(send_size)}));
+    T_PUT_buffer(1, ((T_buffer){.addr = src, .length = send_size}));
     if (socket_send(s, &T_LOCAL_size, 4) == -1) return -1;
     if (socket_send(s, buf, T_LOCAL_size) == -1) return -1;
     src += send_size;
@@ -242,7 +242,7 @@ int main(int n, char **v)
   /* create listener socket */
   l = create_listen_socket("0.0.0.0", local_port);
 
-  OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
+  OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
 
   current_nfd = 0;
 
diff --git a/common/utils/T/tracer/record.c b/common/utils/T/tracer/record.c
index e4c059a5ca2f20caba944f322f5ccfa8393f82c0..9e3c4c41a34f0cf23c06b76e83c3393255e5cfd2 100644
--- a/common/utils/T/tracer/record.c
+++ b/common/utils/T/tracer/record.c
@@ -123,7 +123,7 @@ int main(int n, char **v)
   if (signal(SIGINT, force_stop) == SIG_ERR) abort();
   if (signal(SIGTSTP, force_stop) == SIG_ERR) abort();
 
-  OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
+  OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
 
   /* read messages */
   while (run) {
diff --git a/common/utils/T/tracer/replay.c b/common/utils/T/tracer/replay.c
index c199a668d58f7dfde3fc07378aaf112267d7afea..d9a505520a4632ac69390d63b8fa1961d118198a 100644
--- a/common/utils/T/tracer/replay.c
+++ b/common/utils/T/tracer/replay.c
@@ -136,7 +136,7 @@ int main(int n, char **v)
 
   new_thread(get_message_thread, &socket);
 
-  OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
+  OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
 
   while (1) {
     int type;
diff --git a/common/utils/T/tracer/textlog.c b/common/utils/T/tracer/textlog.c
index 6ead65d87a045f34be2cbf711a08ad16ebbf5458..0a4d2e555c895e0ce8cdf70615de047bd49279a6 100644
--- a/common/utils/T/tracer/textlog.c
+++ b/common/utils/T/tracer/textlog.c
@@ -130,7 +130,7 @@ int main(int n, char **v)
   /* send the first message - activate selected traces */
   activate_traces(socket, is_on, number_of_events);
 
-  OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
+  OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
 
   /* read messages */
   while (1) {
diff --git a/common/utils/T/tracer/to_vcd.c b/common/utils/T/tracer/to_vcd.c
index be3c8391158a8d95e71e0bd9075e0ffe7b237720..6458443394d48023c7884fd99bba22c366db69b7 100644
--- a/common/utils/T/tracer/to_vcd.c
+++ b/common/utils/T/tracer/to_vcd.c
@@ -366,7 +366,7 @@ int main(int n, char **v)
   if (signal(SIGINT, force_stop) == SIG_ERR) abort();
   if (signal(SIGTSTP, force_stop) == SIG_ERR) abort();
 
-  OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
+  OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
 
   /* read messages */
   while (run) {
diff --git a/common/utils/T/tracer/ue.c b/common/utils/T/tracer/ue.c
index 31584e02153f916159c61959584827a93a4b4e72..b28f83b0f283ae06af835c10869b03dce39b44a5 100644
--- a/common/utils/T/tracer/ue.c
+++ b/common/utils/T/tracer/ue.c
@@ -758,7 +758,7 @@ int main(int n, char **v)
   if (pthread_mutex_init(&ue_data.lock, NULL)) abort();
   setup_event_selector(g, database, is_on, is_on_changed, &ue_data);
 
-  OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
+  OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
 
 restart:
   clear_remote_config();
diff --git a/common/utils/T/tracer/vcd.c b/common/utils/T/tracer/vcd.c
index c57798c4c451115aad2162a06e03ce21374962af..e62fc046eb7bd9e51ad35e026abad78e286e0a1b 100644
--- a/common/utils/T/tracer/vcd.c
+++ b/common/utils/T/tracer/vcd.c
@@ -187,7 +187,7 @@ int main(int n, char **v)
   /* send the first message - activate selected traces */
   is_on_changed(&vcd_data);
 
-  OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
+  OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
 
   /* read messages */
   while (1) {
diff --git a/common/utils/T/tracer/view/ticktime.c b/common/utils/T/tracer/view/ticktime.c
index 1e1c7352a07a1acafe1f57681e8925a099fcd6ef..7fa13e4d7a37e1a75f7d84a9479ad4182cba1a2c 100644
--- a/common/utils/T/tracer/view/ticktime.c
+++ b/common/utils/T/tracer/view/ticktime.c
@@ -129,8 +129,7 @@ static void *ticktime_thread(void *_this)
     pixel_length = this->pixel_length;
 
     if (this->autoscroll) {
-      tnext = time_add(this->latest_time,
-          (struct timespec){tv_sec:0,tv_nsec:1});
+      tnext = time_add(this->latest_time, (struct timespec){.tv_sec = 0, .tv_nsec = 1});
       tstart = time_sub(tnext, nano_to_time(pixel_length * width));
       this->start_time = tstart;
     } else {
diff --git a/common/utils/T/tracer/view/time.c b/common/utils/T/tracer/view/time.c
index 287e7b1c7be029af0a815febb271938d888857a4..18fc02e4d751159e6611748fed4e4a7c895d2207 100644
--- a/common/utils/T/tracer/view/time.c
+++ b/common/utils/T/tracer/view/time.c
@@ -122,8 +122,7 @@ static void *time_thread(void *_this)
     pixel_length = this->pixel_length;
 
     if (this->autoscroll) {
-      tnext = time_add(this->latest_time,
-          (struct timespec){tv_sec:0,tv_nsec:1});
+      tnext = time_add(this->latest_time, (struct timespec){.tv_sec = 0, .tv_nsec = 1});
       tstart = time_sub(tnext, nano_to_time(pixel_length * width));
       this->start_time = tstart;
     } else {
diff --git a/openair1/PHY/CODING/nrPolar_tools/nr_polar_encoder.c b/openair1/PHY/CODING/nrPolar_tools/nr_polar_encoder.c
index 335510953f15775b9023f69d7ac778b57916d81a..f411e0c6bea060e3d56cf3435b2b91a980486fa3 100644
--- a/openair1/PHY/CODING/nrPolar_tools/nr_polar_encoder.c
+++ b/openair1/PHY/CODING/nrPolar_tools/nr_polar_encoder.c
@@ -391,8 +391,8 @@ void build_polar_tables(t_nrPolar_params *polarParams) {
   // this code packs the one bit per byte of G_N into a packed bits G_N_tab
   for (int i = 0; i < polarParams->N; i++) {
     for (int j = 0; j < polarParams->N; j += 64) {
-      const simde__m256i tmp1 = simde_mm256_cmpgt_epi8(*(simde__m256i *)&polarParams->G_N[i][j], zeros);
-      const simde__m256i tmp2 = simde_mm256_cmpgt_epi8(*(simde__m256i *)&polarParams->G_N[i][j + 32], zeros);
+      const simde__m256i tmp1 = simde_mm256_cmpgt_epi8(simde_mm256_loadu_si256((simde__m256i *)&polarParams->G_N[i][j]), zeros);
+      const simde__m256i tmp2 = simde_mm256_cmpgt_epi8(simde_mm256_loadu_si256((simde__m256i *)&polarParams->G_N[i][j + 32]), zeros);
       // cast directly to uint64_t from int32_t propagates the sign bit (in gcc)
       const uint32_t part1 = simde_mm256_movemask_epi8(tmp1);
       const uint32_t part2 = simde_mm256_movemask_epi8(tmp2);
diff --git a/openair1/PHY/INIT/nr_init.c b/openair1/PHY/INIT/nr_init.c
index 725e3a991972dfa42d6e74ca0db36b462ab98c9d..c688b20e2184a3948516539315353deab3991985 100644
--- a/openair1/PHY/INIT/nr_init.c
+++ b/openair1/PHY/INIT/nr_init.c
@@ -184,8 +184,9 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB)
       AssertFatal(pdsch_dmrs[slot][symb]!=NULL, "NR init: pdsch_dmrs for slot %d symbol %d - malloc failed\n", slot, symb);
 
       for (int q=0; q<NR_NB_NSCID; q++) {
-        pdsch_dmrs[slot][symb][q] = (uint32_t *)malloc16(pdsch_dmrs_init_length*sizeof(uint32_t));
+        pdsch_dmrs[slot][symb][q] = malloc16(pdsch_dmrs_init_length * sizeof(uint32_t));
         AssertFatal(pdsch_dmrs[slot][symb][q]!=NULL, "NR init: pdsch_dmrs for slot %d symbol %d nscid %d - malloc failed\n", slot, symb, q);
+        memset(pdsch_dmrs[slot][symb][q], 0, sizeof(uint32_t) * pdsch_dmrs_init_length);
       }
     }
   }
diff --git a/openair1/PHY/INIT/nr_init_ue.c b/openair1/PHY/INIT/nr_init_ue.c
index 48152db15bf8ea458146347cc54ac4805957a6af..83b2bd75aca97fbc3f1774ab4a181b0c407be435 100644
--- a/openair1/PHY/INIT/nr_init_ue.c
+++ b/openair1/PHY/INIT/nr_init_ue.c
@@ -534,8 +534,7 @@ void free_nr_ue_ul_harq(NR_UL_UE_HARQ_t harq_list[NR_MAX_ULSCH_HARQ_PROCESSES],
   }
 
   for (int i = 0; i < number_of_processes; i++) {
-    free_and_zero(harq_list[i].a);
-    free_and_zero(harq_list[i].b);
+    free_and_zero(harq_list[i].payload_AB);
     for (int r = 0; r < a_segments; r++) {
       free_and_zero(harq_list[i].c[r]);
       free_and_zero(harq_list[i].d[r]);
@@ -598,13 +597,9 @@ void nr_init_ul_harq_processes(NR_UL_UE_HARQ_t harq_list[NR_MAX_ULSCH_HARQ_PROCE
 
     memset(harq_list + i, 0, sizeof(NR_UL_UE_HARQ_t));
 
-    harq_list[i].a = malloc16(ulsch_bytes);
-    DevAssert(harq_list[i].a);
-    bzero(harq_list[i].a, ulsch_bytes);
-
-    harq_list[i].b = malloc16(ulsch_bytes);
-    DevAssert(harq_list[i].b);
-    bzero(harq_list[i].b, ulsch_bytes);
+    harq_list[i].payload_AB = malloc16(ulsch_bytes);
+    DevAssert(harq_list[i].payload_AB);
+    bzero(harq_list[i].payload_AB, ulsch_bytes);
 
     harq_list[i].c = malloc16(a_segments*sizeof(uint8_t *));
     harq_list[i].d = malloc16(a_segments*sizeof(uint16_t *));
diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h b/openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h
index b2c277cc7a2da1189d4927a0ce4b4a5defbcda58..8fea51ad75c565ea0a833e8bc95286c1c4148248 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h
+++ b/openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h
@@ -55,9 +55,7 @@ typedef struct {
   /// Index of current HARQ round for this ULSCH
   uint8_t round;
   /// pointer to pdu from MAC interface (TS 36.212 V15.4.0, Sec 5.1 p. 8)
-  unsigned char *a;
-  /// Pointer to the payload + CRC 
-  uint8_t *b;
+  unsigned char *payload_AB;
   /// Pointers to transport block segments
   uint8_t **c;
   /// LDPC-code outputs
diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c
index fa9d69275166a0d973eafbffa7a2e357610341b3..ea2d6cec79aa0110bc68e8bd7caa738da81bd782 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c
@@ -87,21 +87,19 @@ int nr_ulsch_encoding(PHY_VARS_NR_UE *ue,
     int B;
     if (A > NR_MAX_PDSCH_TBS) {
       // Add 24-bit crc (polynomial A) to payload
-      crc = crc24a(harq_process->a,A)>>8;
-      harq_process->a[A>>3] = ((uint8_t*)&crc)[2];
-      harq_process->a[1+(A>>3)] = ((uint8_t*)&crc)[1];
-      harq_process->a[2 + (A >> 3)] = ((uint8_t *)&crc)[0];
+      crc = crc24a(harq_process->payload_AB, A) >> 8;
+      harq_process->payload_AB[A >> 3] = ((uint8_t *)&crc)[2];
+      harq_process->payload_AB[1 + (A >> 3)] = ((uint8_t *)&crc)[1];
+      harq_process->payload_AB[2 + (A >> 3)] = ((uint8_t *)&crc)[0];
       B = A + 24;
       AssertFatal((A / 8) + 4 <= max_payload_bytes, "A %d is too big (A/8+4 = %d > %d)\n", A, (A / 8) + 4, max_payload_bytes);
-      memcpy(harq_process->b,harq_process->a,(A/8)+4);
     } else {
       // Add 16-bit crc (polynomial A) to payload
-      crc = crc16(harq_process->a,A)>>16;
-      harq_process->a[A>>3] = ((uint8_t*)&crc)[1];
-      harq_process->a[1 + (A >> 3)] = ((uint8_t *)&crc)[0];
+      crc = crc16(harq_process->payload_AB, A) >> 16;
+      harq_process->payload_AB[A >> 3] = ((uint8_t *)&crc)[1];
+      harq_process->payload_AB[1 + (A >> 3)] = ((uint8_t *)&crc)[0];
       B = A + 16;
       AssertFatal((A / 8) + 3 <= max_payload_bytes, "A %d is too big (A/8+3 = %d > %d)\n", A, (A / 8) + 3, max_payload_bytes);
-      memcpy(harq_process->b,harq_process->a,(A/8)+3);  // using 3 bytes to mimic the case of 24 bit crc
     }
 
     ///////////////////////// b---->| block segmentation |---->c /////////////////////////
@@ -110,7 +108,7 @@ int nr_ulsch_encoding(PHY_VARS_NR_UE *ue,
 
     VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_SEGMENTATION, VCD_FUNCTION_IN);
     start_meas(&ue->ulsch_segmentation_stats);
-    impp.Kb = nr_segmentation(harq_process->b,
+    impp.Kb = nr_segmentation(harq_process->payload_AB,
                               harq_process->c,
                               B,
                               &harq_process->C,
diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
index 0e511cd72b34515377be260fcef4f1f7bbe0d67a..2ac06bfe89bac979c8e54d9aceaa4d932f056463 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
@@ -191,10 +191,7 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
                             mod_order,
                             Nl);
 
-  trace_NRpdu(DIRECTION_UPLINK,
-              harq_process_ul_ue->a,
-              tb_size,
-              WS_C_RNTI, rnti, frame, slot, 0, 0);
+  trace_NRpdu(DIRECTION_UPLINK, harq_process_ul_ue->payload_AB, tb_size, WS_C_RNTI, rnti, frame, slot, 0, 0);
 
   if (nr_ulsch_encoding(UE, ulsch_ue, frame_parms, harq_pid, tb_size, G) == -1)
     return;
diff --git a/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c b/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
index 369c388ad3facf45a40e2888c4988dd0f92864bb..8560e3de825ebdf39c03e76c4ff8210e9dc2e508 100644
--- a/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
+++ b/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
@@ -468,7 +468,7 @@ static void nr_ue_scheduled_response_ul(PHY_VARS_NR_UE *phy, fapi_nr_ul_config_r
                 ul_config->slot,
                 pdu->pusch_config_pdu.tx_request_body.pdu_length,
                 current_harq_pid);
-          memcpy(harq_process_ul_ue->a,
+          memcpy(harq_process_ul_ue->payload_AB,
                  pdu->pusch_config_pdu.tx_request_body.pdu,
                  pdu->pusch_config_pdu.tx_request_body.pdu_length);
         }
diff --git a/openair1/SIMULATION/NR_PHY/ulschsim.c b/openair1/SIMULATION/NR_PHY/ulschsim.c
index 966971ee73e8b03b48ea519c42a8417158721e9b..b41896da5ed21f18d31fe5be7c317b6c3d368e90 100644
--- a/openair1/SIMULATION/NR_PHY/ulschsim.c
+++ b/openair1/SIMULATION/NR_PHY/ulschsim.c
@@ -507,7 +507,7 @@ int main(int argc, char **argv)
   ulsch_ue->pusch_pdu.target_code_rate = code_rate;
   ulsch_ue->pusch_pdu.qam_mod_order = mod_order;
   ulsch_ue->pusch_pdu.ldpcBaseGraph = get_BG(TBS, code_rate);
-  unsigned char *test_input = harq_process_ul_ue->a;
+  unsigned char *test_input = harq_process_ul_ue->payload_AB;
 
   ///////////
   ////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/openair1/SIMULATION/NR_PHY/ulsim.c b/openair1/SIMULATION/NR_PHY/ulsim.c
index 091b1ad4abcc227499370f2f17d9046048e50cfd..90f23c695cdd19000b595d5c38a3270704e5ee0d 100644
--- a/openair1/SIMULATION/NR_PHY/ulsim.c
+++ b/openair1/SIMULATION/NR_PHY/ulsim.c
@@ -1141,7 +1141,7 @@ int main(int argc, char *argv[])
         }
 
         for (int i = 0; i < (TBS / 8); i++)
-          UE->ul_harq_processes[harq_pid].a[i] = i & 0xff;
+          UE->ul_harq_processes[harq_pid].payload_AB[i] = i & 0xff;
 
         if (input_fd == NULL) {
           // set FAPI parameters for UE, put them in the scheduled response and call
@@ -1457,8 +1457,8 @@ int main(int argc, char *argv[])
 
       for (i = 0; i < TBS; i++) {
         uint8_t estimated_output_bit = (ulsch_gNB->harq_process->b[i / 8] & (1 << (i & 7))) >> (i & 7);
-        uint8_t test_input_bit = (UE->ul_harq_processes[harq_pid].b[i / 8] & (1 << (i & 7))) >> (i & 7);
-      
+        uint8_t test_input_bit = (UE->ul_harq_processes[harq_pid].payload_AB[i / 8] & (1 << (i & 7))) >> (i & 7);
+
         if (estimated_output_bit != test_input_bit) {
           /*if(errors_decoding == 0)
               printf("\x1B[34m""[frame %d][trial %d]\t1st bit in error in decoding     = %d\n" "\x1B[0m", frame, trial, i);*/
diff --git a/openair2/RRC/NR/MESSAGES/asn1_msg.c b/openair2/RRC/NR/MESSAGES/asn1_msg.c
index 82798b4b757a768d1511cd9b3caeee569989ff59..07c48c88d72369d8b7d26d24abc422f91431c7cc 100644
--- a/openair2/RRC/NR/MESSAGES/asn1_msg.c
+++ b/openair2/RRC/NR/MESSAGES/asn1_msg.c
@@ -893,19 +893,7 @@ uint8_t do_RRCSetupComplete(uint8_t *buffer,
   NR_RRCSetupComplete_IEs_t *ies = RrcSetupComplete->criticalExtensions.choice.rrcSetupComplete;
   ies->selectedPLMN_Identity = sel_plmn_id;
   ies->registeredAMF = NULL;
-
-  ies->ng_5G_S_TMSI_Value = CALLOC(1, sizeof(struct NR_RRCSetupComplete_IEs__ng_5G_S_TMSI_Value));
-  ies->ng_5G_S_TMSI_Value->present = NR_RRCSetupComplete_IEs__ng_5G_S_TMSI_Value_PR_ng_5G_S_TMSI;
-  NR_NG_5G_S_TMSI_t *stmsi = &ies->ng_5G_S_TMSI_Value->choice.ng_5G_S_TMSI;
-  stmsi->size = 6;
-  stmsi->buf = calloc(stmsi->size, sizeof(*stmsi->buf));
-  AssertFatal(stmsi->buf != NULL, "out of memory\n");
-  stmsi->buf[0] = 0x12;
-  stmsi->buf[1] = 0x34;
-  stmsi->buf[2] = 0x56;
-  stmsi->buf[3] = 0x78;
-  stmsi->buf[4] = 0x9A;
-  stmsi->buf[5] = 0xBC;
+  ies->ng_5G_S_TMSI_Value = NULL;
 
   memset(&ies->dedicatedNAS_Message,0,sizeof(OCTET_STRING_t));
   OCTET_STRING_fromBuf(&ies->dedicatedNAS_Message, dedicatedInfoNAS, dedicatedInfoNASLength);
diff --git a/radio/rfsimulator/simulator.c b/radio/rfsimulator/simulator.c
index 62d08da212ad9cfb3b2b103dcb13a8a8ecb4c3c7..d190851699b4060173f9d613dd586e7ba2f285df 100644
--- a/radio/rfsimulator/simulator.c
+++ b/radio/rfsimulator/simulator.c
@@ -179,7 +179,7 @@ typedef struct {
 static int allocCirBuf(rfsimulator_state_t *bridge, int sock)
 {
   buffer_t *ptr=&bridge->buf[sock];
-  ptr->circularBuf = malloc(sampleToByte(CirSize, 1));
+  ptr->circularBuf = calloc(1, sampleToByte(CirSize, 1));
   if (ptr->circularBuf == NULL) {
     LOG_E(HW, "malloc(%lu) failed\n", sampleToByte(CirSize, 1));
     return -1;