static void free_data_element(struct data_list_t *lib)
{
+ free(lib->data);
free(lib);
}
void free_data_list(struct data_list_t **data)
{
+ struct data_list_t *next;
while (*data != NULL) {
- struct data_list_t *next = (*data)->next;
+ next = (*data)->next;
free_data(*data);
*data = next;
}
res = malloc(size);
to = res;
if (to != NULL) {
- memset(to, '*', size);
pack_int32(to, cnt);
for (p = list; p != NULL; p = p->next)
to = pack_data_to_array(p, to, pack);
app = app->next;
}
+ free(packed_lib_list);
+ free(packed_app_list);
+
// print_buf((char *)*msg, size, "ANSWER");
return 1;
}
*err = ERR_NO;
return 0;
}
+
+void msg_swap_free_all_data(struct user_space_inst_t *us_inst)
+{
+ LOGI("new_lib_inst_list %p\n", new_lib_inst_list);
+ if (new_lib_inst_list != NULL) {
+ LOGI("free new_lib_inst_list start\n");
+ free_data_list(&new_lib_inst_list);
+ new_lib_inst_list = NULL;
+ LOGI("free new_lib_inst_list finish\n");
+ }
+
+ LOGI("us_inst->lib_inst_list %p\n", us_inst->lib_inst_list);
+ if (us_inst->lib_inst_list != NULL) {
+ LOGI("free us_inst->lib_inst_list start\n");
+ free_data_list(&us_inst->lib_inst_list);
+ us_inst->lib_inst_list = NULL;
+ LOGI("free us_isnt->lib_inst_list finish\n");
+ }
+
+ LOGI("us_inst->app_inst_list %p\n", us_inst->app_inst_list);
+ if (us_inst->app_inst_list != NULL) {
+ LOGI("free us_inst->app_inst_list start\n");
+ free_data_list(&us_inst->app_inst_list);
+ LOGI("free us_inst->app_isnt_list finish\n");
+ }
+}
static int process_msg_start(struct msg_buf_t *msg_control)
{
enum ErrorCode err_code = ERR_CANNOT_START_PROFILING;
- struct msg_t *msg_reply;
+ struct msg_t *msg_reply = NULL;
uint32_t serialized_time[2];
if (check_running_status(&prof_session) == 1) {
get_serialized_time(serialized_time);
sendACKToHost(NMSG_START, err_code, (void *)&serialized_time,
sizeof(serialized_time));
-
+ if (msg_reply != NULL)
+ free(msg_reply);
return -(err_code != ERR_NO);
}
close_system_file_descriptors();
+ //DO NOT USE THIS FUNCTION FOR RELEASE IT IS TOO SLOW
+#ifdef MALLOC_DEBUG_ON
+ msg_swap_free_all_data(&prof_session.user_space_inst);
+#endif
+
LOGI("main finished\n");
+ print_malloc_list(NULL, 0);
return 0;
}