CI timeout + line-info in releases (#279)
* Update perfetto args.gn.in - remove enable_perfetto_tools_trace_to_text (unused) * core timeout implementation - requires OMNITRACE_CI=ON - requires OMNITRACE_CI_TIMEOUT=<sec> - adds pthread_self and std::this_thread::get_id to thread info - pthread_create_gotcha stores native handles (pthread_self) * Testing updates - improve detection of segfault/failures with PASS_REGEX exists - add OMNITRACE_CI_TIMEOUT env variable to all tests * Line-info in releases - e.g. -g1 + more options to minimize size of debug info * Fix typo in config exit action message * OMNITRACE_UNLIKELY around debug/verbose messages * format fixes * Overflow tests + capability check * transpose example update - link to threads library * roctracer/rocprofiler update - in ROCm 5.5.0, cannot include rocprofiler.h and roctracer.h in same file due to conflicting enum defs - Moved HSA tracing setup/shutdown to component::roctracer * roctracer update - fix definition of roctracer::setup when disabled * Update fork example - detach threads on main PID - flush io outputs when printing info * Update overflow tests - pass regular expressions - overflow on PERF_COUNT_SW_CPU_CLOCK event * fork gotcha update - use getpid() instead of getppid() * update fork example - wait on threads calling fork * timeout update - wait on timeout thread to launch before proceeding
This commit is contained in:
committato da
GitHub
parent
9de3a6b0b4
commit
3e2fa69a14
@@ -138,6 +138,8 @@ stop_bundle(bundle_t& _bundle, int64_t _tid, Args&&... _args)
|
||||
tim::consume_parameters(_args...);
|
||||
}
|
||||
}
|
||||
|
||||
std::set<pthread_create_gotcha::native_handle_t> native_handles = {};
|
||||
} // namespace
|
||||
|
||||
//--------------------------------------------------------------------------------------//
|
||||
@@ -291,12 +293,20 @@ pthread_create_gotcha::wrapper::wrap(void* _arg)
|
||||
{
|
||||
if(_arg == nullptr) return nullptr;
|
||||
|
||||
auto _self = pthread_self();
|
||||
|
||||
// convert the argument
|
||||
wrapper* _wrapper = static_cast<wrapper*>(_arg);
|
||||
|
||||
// store the handle
|
||||
native_handles.emplace(_self);
|
||||
|
||||
// execute the original function
|
||||
void* _ret = (*_wrapper)();
|
||||
|
||||
// remove the handle
|
||||
if(::pthread_equal(_self, pthread_self()) == 0) native_handles.erase(_self);
|
||||
|
||||
// eliminate memory leak
|
||||
if(_ret != _arg) delete _wrapper;
|
||||
|
||||
@@ -378,6 +388,13 @@ pthread_create_gotcha::set_data(wrappee_t _v)
|
||||
m_wrappee = _v;
|
||||
}
|
||||
|
||||
std::set<pthread_create_gotcha::native_handle_t>
|
||||
pthread_create_gotcha::get_native_handles()
|
||||
{
|
||||
auto _v = native_handles;
|
||||
return _v;
|
||||
}
|
||||
|
||||
// pthread_create
|
||||
int
|
||||
pthread_create_gotcha::operator()(pthread_t* thread, const pthread_attr_t* attr,
|
||||
|
||||
Fai riferimento in un nuovo problema
Block a user