Misc fixes before v1.8.0 release (#239)
* Update timemory submodule for OMPT - Updated OMPT support for OpenMP 5.2 * omnitrace exe cleanup - fixed "omnitrace --" segfault - added nullptr checks * CMake updates - moved omnitrace-interface-library definition up a directory - general cleanup - fixed branch/tag/ref for git submodule checkouts * Improve shutdown of causal profiling after duration limit * Fix dyninst minimum version number * Removed debug print from binary::get_link_map * Remove use of thread-pool in causal * Relax causal testing when variance is high * causal_gotcha utilities for blocking signals * Tweak to causal example * Install validate-causal-json as omnitrace-causal-print * simplify address_multirange * improve causal line saving
Cette révision appartient à :
révisé par
GitHub
Parent
32b15fe7b7
révision
aadffbe2b1
@@ -26,6 +26,7 @@
|
||||
#include "library/causal/components/unblocking_gotcha.hpp"
|
||||
|
||||
#include <timemory/backends/threading.hpp>
|
||||
#include <timemory/signals/signal_mask.hpp>
|
||||
#include <timemory/utility/macros.hpp>
|
||||
#include <timemory/utility/types.hpp>
|
||||
|
||||
@@ -40,6 +41,8 @@ namespace component
|
||||
{
|
||||
namespace
|
||||
{
|
||||
namespace signals = ::tim::signals;
|
||||
|
||||
using bundle_t = tim::lightweight_tuple<blocking_gotcha_t, unblocking_gotcha_t>;
|
||||
|
||||
auto&
|
||||
@@ -50,6 +53,13 @@ get_bundle()
|
||||
return _v;
|
||||
}
|
||||
|
||||
const auto&
|
||||
sampling_signals()
|
||||
{
|
||||
static auto _v = get_sampling_signals();
|
||||
return _v;
|
||||
}
|
||||
|
||||
bool is_configured = false;
|
||||
} // namespace
|
||||
|
||||
@@ -90,6 +100,31 @@ causal_gotcha::stop()
|
||||
get_bundle()->stop();
|
||||
shutdown();
|
||||
}
|
||||
|
||||
void
|
||||
causal_gotcha::block_signals()
|
||||
{
|
||||
signals::block_signals(sampling_signals(), signals::sigmask_scope::thread);
|
||||
}
|
||||
|
||||
void
|
||||
causal_gotcha::unblock_signals()
|
||||
{
|
||||
signals::unblock_signals(sampling_signals(), signals::sigmask_scope::thread);
|
||||
}
|
||||
|
||||
void
|
||||
causal_gotcha::remove_signals(sigset_t* _set)
|
||||
{
|
||||
for(auto _sig : sampling_signals())
|
||||
{
|
||||
if(sigismember(_set, _sig) != 0) sigdelset(_set, _sig);
|
||||
}
|
||||
|
||||
if(sigismember(_set, SIGSEGV) != 0) sigdelset(_set, SIGSEGV);
|
||||
|
||||
if(sigismember(_set, SIGABRT) != 0) sigdelset(_set, SIGABRT);
|
||||
}
|
||||
} // namespace component
|
||||
} // namespace causal
|
||||
} // namespace omnitrace
|
||||
|
||||
Référencer dans un nouveau ticket
Bloquer un utilisateur