X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/706dd4584b4002e0d948b81d103dd5c4b70db077..85662e22397c029bf1c4271a45aa3eca71e37a15:/src/mc/Process.cpp diff --git a/src/mc/Process.cpp b/src/mc/Process.cpp index 9197cb95e4..fd35b52b85 100644 --- a/src/mc/Process.cpp +++ b/src/mc/Process.cpp @@ -55,35 +55,50 @@ namespace mc { #define SO_RE "\\.so[\\.0-9]*$" #define VERSION_RE "-[\\.0-9-]*$" -// In lexicographic order (but this is currently not used in the code): -static const char *const filtered_libraries[] = { - "ld", - "libbz2", - "libboost_chrono", - "libboost_context", - "libboost_system", - "libboost_thread", - "libc", - "libc++", - "libcdt", - "libcgraph", - "libdl", - "libdw", - "libelf", - "libgcc_s", - "liblua5.1", - "liblua5.3", - "liblzma", - "libm", - "libpthread", - "librt", - "libstdc++", - "libunwind", - "libunwind-x86_64", - "libunwind-x86", - "libunwind-ptrace", - "libz" -}; +// List of library which memory segments are not considered: +static const char* const filtered_libraries[] = { +#ifdef __linux__ + "ld", +#elif defined __FreeBSD__ + "ld-elf", + "ld-elf32", + "libkvm", /* kernel data access library */ + "libprocstat", /* process and file information retrieval */ + "libthr", /* thread library */ + "libutil", +#endif + "libasan", /* gcc sanitizers */ + "libargp", /* workarounds for glibc-less systems */ + "libtsan", + "libubsan", + "libbz2", + "libboost_chrono", + "libboost_context", + "libboost_context-mt", + "libboost_system", + "libboost_thread", + "libc", + "libc++", + "libcdt", + "libcgraph", + "libcxxrt", + "libdl", + "libdw", + "libelf", + "libevent", + "libgcc_s", + "liblua5.1", + "liblua5.3", + "liblzma", + "libm", + "libpthread", + "librt", + "libstdc++", + "libunwind", + "libunwind-x86_64", + "libunwind-x86", + "libunwind-ptrace", + "libz"}; static bool is_simgrid_lib(const char* libname) { @@ -218,8 +233,8 @@ void Process::init() remote(std_heap_var->address), simgrid::mc::ProcessIndexDisabled); - this->smx_process_infos.clear(); - this->smx_old_process_infos.clear(); + this->smx_actors_infos.clear(); + this->smx_dead_actors_infos.clear(); this->unw_addr_space = simgrid::mc::UnwindContext::createUnwindAddressSpace(); this->unw_underlying_addr_space = simgrid::unw::create_addr_space(); this->unw_underlying_context = simgrid::unw::create_context( @@ -415,13 +430,10 @@ simgrid::mc::Variable* Process::find_variable(const char* name) const void Process::read_variable(const char* name, void* target, size_t size) const { simgrid::mc::Variable* var = this->find_variable(name); - if (!var->address) - xbt_die("No simple location for this variable"); - if (!var->type->full_type) - xbt_die("Partial type for %s, cannot check size", name); - if ((size_t) var->type->full_type->byte_size != size) - xbt_die("Unexpected size for %s (expected %zi, was %zi)", - name, size, (size_t) var->type->full_type->byte_size); + xbt_assert(var->address, "No simple location for this variable"); + xbt_assert(var->type->full_type, "Partial type for %s, cannot check size", name); + xbt_assert((size_t)var->type->full_type->byte_size == size, "Unexpected size for %s (expected %zi, was %zi)", name, + size, (size_t)var->type->full_type->byte_size); this->read_bytes(target, size, remote(var->address)); } @@ -487,16 +499,15 @@ const void *Process::read_bytes(void* buffer, std::size_t size, } if (pread_whole(this->memory_file, buffer, size, address.address()) < 0) - xbt_die("Read from process %lli failed", (long long) this->pid_); + xbt_die("Read at %p from process %lli failed", (void*)address.address(), (long long)this->pid_); return buffer; } /** Write data to a process memory * - * @param process the process - * @param local local memory address (source) - * @param remote target process memory address (target) - * @param len data size + * @param buffer local memory address (source) + * @param len data size + * @param address target process memory address (target) */ void Process::write_bytes(const void* buffer, size_t len, RemotePtr address) { @@ -632,21 +643,21 @@ void Process::ignore_local_variable(const char *var_name, const char *frame_name info->remove_local_variable(var_name, frame_name); } -std::vector& Process::simix_processes() +std::vector& Process::actors() { this->refresh_simix(); - return smx_process_infos; + return smx_actors_infos; } -std::vector& Process::old_simix_processes() +std::vector& Process::dead_actors() { this->refresh_simix(); - return smx_old_process_infos; + return smx_dead_actors_infos; } void Process::dumpStack() { - unw_addr_space_t as = unw_create_addr_space(&_UPT_accessors, __BYTE_ORDER); + unw_addr_space_t as = unw_create_addr_space(&_UPT_accessors, BYTE_ORDER); if (as == nullptr) { XBT_ERROR("Could not initialize ptrace address space"); return;