// ***** Helper stuff
-// List of library which memory segments are not considered:
-static const std::vector<std::string> filtered_libraries = {
-#ifdef __linux__
- "ld",
- "ld-linux-x86",
-#elif defined __FreeBSD__
- "ld-elf",
- "ld-elf32",
- "libkvm", /* kernel data access library */
- "libprocstat", /* process and file information retrieval */
- "libthr", /* thread library */
- "libutil",
-#endif
- "libargp", /* workarounds for glibc-less systems */
- "libasan", /* gcc sanitizers */
- "libasn1",
- "libboost_chrono",
- "libboost_context",
- "libboost_context-mt",
- "libboost_stacktrace_addr2line",
- "libboost_stacktrace_backtrace",
- "libboost_system",
- "libboost_thread",
- "libboost_timer",
- "libbrotlicommon",
- "libbrotlidec",
- "libbz2",
- "libc",
- "libc++",
- "libcdt",
- "libcgraph",
- "libcom_err",
- "libcrypt",
- "libcrypto",
- "libcurl",
- "libcurl-gnutls",
- "libcxxrt",
- "libdebuginfod",
- "libdl",
- "libdw",
- "libelf",
- "libevent",
- "libexecinfo",
- "libffi",
- "libflang",
- "libflangrti",
- "libgcc_s",
- "libgmp",
- "libgnutls",
- "libgcrypt",
- "libgfortran",
- "libgpg-error",
- "libgssapi",
- "libgssapi_krb5",
- "libhcrypto",
- "libheimbase",
- "libheimntlm",
- "libhx509",
- "libhogweed",
- "libidn2",
- "libimf",
- "libintlc",
- "libirng",
- "libk5crypto",
- "libkeyutils",
- "libkrb5",
- "libkrb5support", /*odd behaviour on fedora rawhide ... remove these when fixed*/
- "liblber",
- "libldap",
- "libldap_r",
- "liblua5.1",
- "liblua5.3",
- "liblzma",
- "libm",
- "libmd",
- "libnettle",
- "libnghttp2",
- "libomp",
- "libp11-kit",
- "libpapi",
- "libpcre2",
- "libpfm",
- "libpgmath",
- "libpsl",
- "libpthread",
- "libquadmath",
- "libresolv",
- "libroken",
- "librt",
- "librtmp",
- "libsasl2",
- "libselinux",
- "libsqlite3",
- "libssh",
- "libssh2",
- "libssl",
- "libstdc++",
- "libsvml",
- "libtasn1",
- "libtsan", /* gcc sanitizers */
- "libubsan", /* gcc sanitizers */
- "libunistring",
- "libunwind",
- "libunwind-ptrace",
- "libunwind-x86",
- "libunwind-x86_64",
- "libwind",
- "libz",
- "libzstd"};
-
static bool is_filtered_lib(const std::string& libname)
{
- return std::find(begin(filtered_libraries), end(filtered_libraries), libname) != end(filtered_libraries);
+ return libname != "libsimgrid";
}
static std::string get_lib_name(const std::string& pathname)
RemoteProcess::RemoteProcess(pid_t pid) : AddressSpace(this), pid_(pid), running_(true) {}
-void RemoteProcess::init(xbt_mheap_t mmalloc_default_mdp, unsigned long* maxpid, xbt_dynar_t actors,
- xbt_dynar_t dead_actors)
+void RemoteProcess::init(xbt_mheap_t mmalloc_default_mdp, unsigned long* maxpid, xbt_dynar_t actors)
{
this->heap_address = remote(mmalloc_default_mdp);
this->maxpid_addr_ = remote(maxpid);
this->actors_addr_ = remote(actors);
- this->dead_actors_addr_ = remote(dead_actors);
this->memory_map_ = simgrid::xbt::get_memory_map(this->pid_);
this->init_memory_map_info();
this->memory_file = fd;
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(this->unw_underlying_addr_space, this->pid_);
continue;
xbt_assert(c > 0, "Could not read string from remote process");
- const void* p = memchr(res.data() + off, '\0', c);
- if (p)
+ if (const void* p = memchr(res.data() + off, '\0', c))
return std::string(res.data());
off += c;
return smx_actors_infos;
}
-std::vector<simgrid::mc::ActorInformation>& RemoteProcess::dead_actors()
-{
- this->refresh_simix();
- return smx_dead_actors_infos;
-}
-
void RemoteProcess::dump_stack() const
{
unw_addr_space_t as = unw_create_addr_space(&_UPT_accessors, BYTE_ORDER);
if (unw_init_remote(&cursor, as, context) != 0) {
_UPT_destroy(context);
unw_destroy_addr_space(as);
- XBT_ERROR("Could not initialiez ptrace cursor");
+ XBT_ERROR("Could not initialize ptrace cursor");
return;
}