Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Fix unitialized variable
[simgrid.git] / src / mc / mc_process.cpp
index 31e79cf..334f8c9 100644 (file)
@@ -81,7 +81,8 @@ void MC_process_init(mc_process_t process, pid_t pid, int sockfd)
   MC_process_open_memory_file(process);
 
   // Read std_heap (is a struct mdesc*):
-  dw_variable_t std_heap_var = MC_process_find_variable_by_name(process, "std_heap");
+  dw_variable_t std_heap_var = MC_process_find_variable_by_name(process,
+    "__mmalloc_default_mdp");
   if (!std_heap_var)
     xbt_die("No heap information in the target process");
   if(!std_heap_var->address)
@@ -154,36 +155,34 @@ void MC_process_clear(mc_process_t process)
 
 void MC_process_refresh_heap(mc_process_t process)
 {
-  assert(!MC_process_is_self(process));
+  xbt_assert(mc_mode == MC_MODE_SERVER);
+  xbt_assert(!MC_process_is_self(process));
   // Read/dereference/refresh the std_heap pointer:
   if (!process->heap) {
-    xbt_mheap_t oldheap  = mmalloc_set_current_heap(mc_heap);
     process->heap = (struct mdesc*) malloc(sizeof(struct mdesc));
-    mmalloc_set_current_heap(oldheap);
   }
   MC_process_read(process, MC_ADDRESS_SPACE_READ_FLAGS_NONE,
     process->heap, process->heap_address, sizeof(struct mdesc),
     MC_PROCESS_INDEX_DISABLED
     );
+  process->cache_flags |= MC_PROCESS_CACHE_FLAG_HEAP;
 }
 
 void MC_process_refresh_malloc_info(mc_process_t process)
 {
-  assert(!MC_process_is_self(process));
+  xbt_assert(mc_mode == MC_MODE_SERVER);
+  xbt_assert(!MC_process_is_self(process));
   if (!(process->cache_flags & MC_PROCESS_CACHE_FLAG_HEAP))
     MC_process_refresh_heap(process);
   // Refresh process->heapinfo:
   size_t malloc_info_bytesize =
     (process->heap->heaplimit + 1) * sizeof(malloc_info);
-
-  xbt_mheap_t heap  = mmalloc_set_current_heap(mc_heap);
   process->heap_info = (malloc_info*) realloc(process->heap_info, malloc_info_bytesize);
-  mmalloc_set_current_heap(heap);
-
   MC_process_read(process, MC_ADDRESS_SPACE_READ_FLAGS_NONE,
     process->heap_info,
     process->heap->heapinfo, malloc_info_bytesize,
     MC_PROCESS_INDEX_DISABLED);
+  process->cache_flags |= MC_PROCESS_CACHE_FLAG_MALLOC_INFO;
 }
 
 #define SO_RE "\\.so[\\.0-9]*$"