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 à :
Jonathan R. Madsen
2023-02-08 11:54:45 -06:00
révisé par GitHub
Parent 32b15fe7b7
révision aadffbe2b1
21 fichiers modifiés avec 244 ajouts et 96 suppressions
+35
Voir le fichier
@@ -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