diff options
author | v-belikov <v-belikov@yandex-team.com> | 2025-03-06 13:55:31 +0300 |
---|---|---|
committer | v-belikov <v-belikov@yandex-team.com> | 2025-03-06 15:13:18 +0300 |
commit | 0ef3507641139b77885d5d458dbcbbb76297310b (patch) | |
tree | 79e5c5b06bb1cce5c0192c699fd5935a0d50e206 | |
parent | 618663dff0c22bb5fc2a8b1d946d6b91ac572fb4 (diff) | |
download | ydb-0ef3507641139b77885d5d458dbcbbb76297310b.tar.gz |
allow disable arcadia backtrace
Проблема: исключения отнаследованные от `TWithBackTrace` едят много CPU, что уже приводило к инцидентам. Кроме того, они не работают в фреймворке uservices.
Решение: разрешить отключать сбор бэктрейсов в рантайме
commit_hash:ad101368d384c90b5b37ac66276ae6611731d579
-rw-r--r-- | util/system/backtrace.cpp | 14 | ||||
-rw-r--r-- | util/system/backtrace.h | 5 |
2 files changed, 18 insertions, 1 deletions
diff --git a/util/system/backtrace.cpp b/util/system/backtrace.cpp index 97a798e9bb7..482c02b7b84 100644 --- a/util/system/backtrace.cpp +++ b/util/system/backtrace.cpp @@ -232,6 +232,16 @@ TResolvedSymbol ResolveSymbol(void* sym, char*, size_t) { } #endif +TBackTraceFn BackTraceFn = BackTrace; + +void SetBackTraceFn(TBackTraceFn f) { + BackTraceFn = f; +} + +TBackTraceFn GetBackTraceFn() { + return BackTraceFn; +} + void FormatBackTrace(IOutputStream* out, void* const* backtrace, size_t backtraceSize) { char tmpBuf[1024]; @@ -270,7 +280,9 @@ TBackTrace::TBackTrace() } void TBackTrace::Capture() { - Size = BackTrace(Data, CAPACITY); + if (BackTraceFn) { + Size = BackTraceFn(Data, CAPACITY); + } } void TBackTrace::PrintTo(IOutputStream& out) const { diff --git a/util/system/backtrace.h b/util/system/backtrace.h index 2fce7585c3a..4e5ab6a68e1 100644 --- a/util/system/backtrace.h +++ b/util/system/backtrace.h @@ -7,6 +7,11 @@ class IOutputStream; size_t BackTrace(void** p, size_t len); +using TBackTraceFn = size_t (*)(void** p, size_t len); + +void SetBackTraceFn(TBackTraceFn f); +TBackTraceFn GetBackTraceFn(); + struct TResolvedSymbol { const char* Name; void* NearestSymbol; |