aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfedorenko <fedorenko@yandex-team.ru>2022-02-23 05:47:23 +0300
committerfedorenko <fedorenko@yandex-team.ru>2022-02-23 05:47:23 +0300
commit1effc0f096ca382eba8967c92db95f5b51e6212c (patch)
tree411113210fa6e243844b507f54a44c08f576f811
parentc2f6fa508a2a2c3cc0530319977ec1d37166c0da (diff)
downloadydb-1effc0f096ca382eba8967c92db95f5b51e6212c.tar.gz
rollback r9158440 cause of failed RM tests
ref:7ea361b10868cc51450f6e43c8428e8447e6781d
-rw-r--r--util/generic/yexception.cpp30
-rw-r--r--util/generic/yexception_ut.cpp45
2 files changed, 6 insertions, 69 deletions
diff --git a/util/generic/yexception.cpp b/util/generic/yexception.cpp
index 7bfed2878d..26c75b5f51 100644
--- a/util/generic/yexception.cpp
+++ b/util/generic/yexception.cpp
@@ -14,39 +14,21 @@ TString FormatExc(const std::exception& exception) {
return TString::Join(TStringBuf("("), TypeName(exception), TStringBuf(") "), exception.what());
}
-static TString BackTraceToString(const TBackTrace& backtrace) {
- try {
- Y_ENSURE(backtrace.size() > 0, "backtrace is empty");
- return backtrace.PrintToString();
- } catch (const std::exception& e) {
- return TString::Join("Failed to print backtrace: ", FormatExc(e));
- }
-}
-
TString CurrentExceptionMessage() {
auto exceptionPtr = std::current_exception();
if (exceptionPtr) {
try {
std::rethrow_exception(exceptionPtr);
} catch (const yexception& e) {
- const TBackTrace* btPtr;
-#ifdef _YNDX_LIBUNWIND_ENABLE_EXCEPTION_BACKTRACE
- TBackTrace backtrace = TBackTrace::FromCurrentException();
- btPtr = &backtrace;
-#else
- btPtr = e.BackTrace();
- if (!btPtr) {
- return FormatExc(e);
+ const TBackTrace* bt = e.BackTrace();
+
+ if (bt) {
+ return TString::Join(bt->PrintToString(), TStringBuf("\n"), FormatExc(e));
}
-#endif
- return TString::Join(BackTraceToString(*btPtr), TStringBuf("\n"), FormatExc(e));
+
+ return FormatExc(e);
} catch (const std::exception& e) {
-#ifdef _YNDX_LIBUNWIND_ENABLE_EXCEPTION_BACKTRACE
- TBackTrace backtrace = TBackTrace::FromCurrentException();
- return TString::Join(BackTraceToString(backtrace), TStringBuf("\n"), FormatExc(e));
-#else
return FormatExc(e);
-#endif
} catch (...) {
}
diff --git a/util/generic/yexception_ut.cpp b/util/generic/yexception_ut.cpp
index 771ae2a9ca..cb3e29fed8 100644
--- a/util/generic/yexception_ut.cpp
+++ b/util/generic/yexception_ut.cpp
@@ -15,7 +15,6 @@ static inline void Throw2DontMove() {
#include <util/random/mersenne.h>
#include <util/stream/output.h>
#include <util/string/subst.h>
-#include <util/string/split.h>
#include "yexception_ut.h"
#include "bt_exception.h"
@@ -49,8 +48,6 @@ class TExceptionTest: public TTestBase {
UNIT_TEST(TestBackTrace)
UNIT_TEST(TestEnsureWithBackTrace1)
UNIT_TEST(TestEnsureWithBackTrace2)
- UNIT_TEST(TestCurrentExceptionMessageWithLIBUNWIND)
- UNIT_TEST(TestCurrentExceptionMessageWithInvalidBacktraceFormatter)
UNIT_TEST(TestRethrowAppend)
UNIT_TEST(TestMacroOverload)
UNIT_TEST(TestMessageCrop)
@@ -131,48 +128,6 @@ private:
UNIT_ASSERT(false);
}
- inline void TestCurrentExceptionMessageWithLIBUNWIND() {
-#ifdef _YNDX_LIBUNWIND_ENABLE_EXCEPTION_BACKTRACE
- try {
- throw std::logic_error("some exception"); // is instance of std::exception
- UNIT_ASSERT(false);
- } catch (...) {
- TString exceptionMessage = CurrentExceptionMessage();
- UNIT_ASSERT(exceptionMessage.Contains("(std::logic_error) some exception"));
- TVector<TString> backtraceStrs = StringSplitter(exceptionMessage).Split('\n');
- UNIT_ASSERT(backtraceStrs.size() > 1);
- }
-#endif
- }
-
- inline void TestCurrentExceptionMessageWithInvalidBacktraceFormatter() {
-#ifdef _YNDX_LIBUNWIND_ENABLE_EXCEPTION_BACKTRACE
- auto invalidFormatter = [](IOutputStream*, void* const*, size_t) {
- Throw2DontMove();
- };
- SetFormatBackTraceFn(invalidFormatter);
-
- try {
- Throw1DontMove();
- UNIT_ASSERT(false);
- } catch (...) {
- TString expected = "Failed to print backtrace: (yexception) "
- "util/generic/yexception_ut.cpp:8: 1 qw 12.1\n"
- "(yexception) util/generic/yexception_ut.cpp:4: blabla";
- UNIT_ASSERT_EQUAL(CurrentExceptionMessage(), expected);
- }
- try {
- throw std::logic_error("std exception");
- UNIT_ASSERT(false);
- } catch (...) {
- TString expected = "Failed to print backtrace: (yexception) "
- "util/generic/yexception_ut.cpp:8: 1 qw 12.1\n"
- "(std::logic_error) std exception";
- UNIT_ASSERT_EQUAL(CurrentExceptionMessage(), expected);
- }
-#endif
- }
-
inline void TestVirtualInheritance() {
TStringStream ss;