diff --git a/openair2/UTIL/LOG/log.c b/openair2/UTIL/LOG/log.c
index 48e606522c61665a73c084f85e41bb6c929280d4..6373603acfea28055793b558fc3c681368b2cea0 100644
--- a/openair2/UTIL/LOG/log.c
+++ b/openair2/UTIL/LOG/log.c
@@ -516,9 +516,9 @@ int logInit (void)
 }
 
 extern int oai_exit;
-void * log_mem_write(void)
+void *log_mem_write(void *arg)
 {
-  int *fp;
+  int fp;
   char f_name[1024];
   struct timespec slp_tm;
   slp_tm.tv_sec = 0;
@@ -540,7 +540,9 @@ void * log_mem_write(void)
       }
       snprintf(f_name,1024, "%s_%d.log",log_mem_filename,log_mem_file_cnt);
       fp=open(f_name, O_WRONLY | O_CREAT, 0666);
-      write(fp, log_mem_d[log_mem_write_side].buf_p, log_mem_d[log_mem_write_side].buf_index);
+      if(write(fp, log_mem_d[log_mem_write_side].buf_p, log_mem_d[log_mem_write_side].buf_index) < log_mem_d[log_mem_write_side].buf_index) {
+        // TODO assert ?
+      }
       close(fp);
       log_mem_file_cnt++;
       log_mem_d[log_mem_write_side].buf_index=0;
@@ -550,6 +552,7 @@ void * log_mem_write(void)
       nanosleep(&slp_tm,NULL);
     }
   }
+  return 0;
 }
 
 int logInit_log_mem (void)
@@ -567,7 +570,7 @@ int logInit_log_mem (void)
       if ((pthread_mutex_init (&log_mem_lock, NULL) != 0)
           || (pthread_cond_init (&log_mem_notify, NULL) != 0)) {
         log_mem_d[1].enable_flag=0;
-        return;
+        return -1;
       }
       pthread_create(&log_mem_thread, NULL, log_mem_write, (void*)NULL);
     }else{
@@ -1488,41 +1491,42 @@ void logRecord_mt(const char *file, const char *func, int line, int comp,
   va_end(args);
 
   // OAI printf compatibility
-  if ((g_log->onlinelog == 1) && (level != LOG_FILE))
-  if(log_mem_flag==1){
-    if(log_mem_d[log_mem_side].enable_flag==1){
-      temp_index=log_mem_d[log_mem_side].buf_index;
-      if(temp_index+len+1 < LOG_MEM_SIZE){
-        log_mem_d[log_mem_side].buf_index+=len;
-        memcpy(&log_mem_d[log_mem_side].buf_p[temp_index],log_buffer,len);
-      }else{
-        log_mem_d[log_mem_side].enable_flag=0;
-        if(log_mem_d[1-log_mem_side].enable_flag==1){
-          temp_index=log_mem_d[1-log_mem_side].buf_index;
-          if(temp_index+len+1 < LOG_MEM_SIZE){
-            log_mem_d[1-log_mem_side].buf_index+=len;
-            log_mem_side=1-log_mem_side;
-            memcpy(&log_mem_d[log_mem_side].buf_p[temp_index],log_buffer,len);
-            /* write down !*/
-            if (pthread_mutex_lock(&log_mem_lock) != 0) {
-              return;
-            }
-            if(log_mem_write_flag==0){
-              log_mem_write_side=1-log_mem_side;
-              if(pthread_cond_signal(&log_mem_notify) != 0) {
+  if ((g_log->onlinelog == 1) && (level != LOG_FILE)) {
+    if(log_mem_flag==1){
+      if(log_mem_d[log_mem_side].enable_flag==1){
+        temp_index=log_mem_d[log_mem_side].buf_index;
+        if(temp_index+len+1 < LOG_MEM_SIZE){
+          log_mem_d[log_mem_side].buf_index+=len;
+          memcpy(&log_mem_d[log_mem_side].buf_p[temp_index],log_buffer,len);
+        }else{
+          log_mem_d[log_mem_side].enable_flag=0;
+          if(log_mem_d[1-log_mem_side].enable_flag==1){
+            temp_index=log_mem_d[1-log_mem_side].buf_index;
+            if(temp_index+len+1 < LOG_MEM_SIZE){
+              log_mem_d[1-log_mem_side].buf_index+=len;
+              log_mem_side=1-log_mem_side;
+              memcpy(&log_mem_d[log_mem_side].buf_p[temp_index],log_buffer,len);
+              /* write down !*/
+              if (pthread_mutex_lock(&log_mem_lock) != 0) {
+                return;
               }
+              if(log_mem_write_flag==0){
+                log_mem_write_side=1-log_mem_side;
+                if(pthread_cond_signal(&log_mem_notify) != 0) {
+                }
+              }
+              if(pthread_mutex_unlock(&log_mem_lock) != 0) {
+                return;
+              }
+            }else{
+              log_mem_d[1-log_mem_side].enable_flag=0;
             }
-            if(pthread_mutex_unlock(&log_mem_lock) != 0) {
-              return;
-            }
-          }else{
-            log_mem_d[1-log_mem_side].enable_flag=0;
           }
         }
       }
+    }else{
+      fwrite(log_buffer, len, 1, stdout);
     }
-  }else{
-    fwrite(log_buffer, len, 1, stdout);
   }
 
   if (g_log->syslog) {
@@ -1852,8 +1856,7 @@ void log_set_instance_type (log_instance_type_t instance)
 #endif
   
 void output_log_mem(void){
-  int cnt,cnt2;
-  int *fp;
+  int fp;
   char f_name[1024];
 
   if(log_mem_flag==1){
@@ -1866,18 +1869,24 @@ void output_log_mem(void){
     if(log_mem_multi==1){
       snprintf(f_name,1024, "%s_%d.log",log_mem_filename,log_mem_file_cnt);
       fp=open(f_name, O_WRONLY | O_CREAT, 0666);
-      write(fp, log_mem_d[0].buf_p, log_mem_d[0].buf_index);
+      if(write(fp, log_mem_d[0].buf_p, log_mem_d[0].buf_index) < log_mem_d[0].buf_index) {
+        // TODO assert ?
+      }
       close(fp);
       free(log_mem_d[0].buf_p);
       
       snprintf(f_name,1024, "%s_%d.log",log_mem_filename,log_mem_file_cnt);
       fp=open(f_name, O_WRONLY | O_CREAT, 0666);
-      write(fp, log_mem_d[1].buf_p, log_mem_d[1].buf_index);
+      if(write(fp, log_mem_d[1].buf_p, log_mem_d[1].buf_index) < log_mem_d[1].buf_index) {
+        // TODO assert ?
+      }
       close(fp);
       free(log_mem_d[1].buf_p);
     }else{
       fp=open(log_mem_filename, O_WRONLY | O_CREAT, 0666);
-      write(fp, log_mem_d[0].buf_p, log_mem_d[0].buf_index);
+      if(write(fp, log_mem_d[0].buf_p, log_mem_d[0].buf_index) < log_mem_d[0].buf_index) {
+        // TODO assert ?
+      }
       close(fp);
       free(log_mem_d[0].buf_p);
     }