diff --git a/sentry_sdk/integrations/gnu_backtrace.py b/sentry_sdk/integrations/gnu_backtrace.py index dc3dc80fe0..21d8ea9b38 100644 --- a/sentry_sdk/integrations/gnu_backtrace.py +++ b/sentry_sdk/integrations/gnu_backtrace.py @@ -12,23 +12,12 @@ from sentry_sdk._types import Event -MODULE_RE = r"[a-zA-Z0-9/._:\\-]+" -TYPE_RE = r"[a-zA-Z0-9._:<>,-]+" -HEXVAL_RE = r"[A-Fa-f0-9]+" - +FUNCTION_RE = r"[^@]+?)\s+@\s+0x[0-9a-fA-F]+" FRAME_RE = r""" -^(?P\d+)\.\s -(?P{MODULE_RE})\( - (?P{TYPE_RE}\ )? - ((?P{TYPE_RE}) - (?P\(.*\))? - )? - ((?P\ const)?\+0x(?P{HEXVAL_RE}))? -\)\s -\[0x(?P{HEXVAL_RE})\]$ +^(?P\d+)\.\s+(?P{FUNCTION_RE}\s+in\s+(?P.+)$ """.format( - MODULE_RE=MODULE_RE, HEXVAL_RE=HEXVAL_RE, TYPE_RE=TYPE_RE + FUNCTION_RE=FUNCTION_RE, ) FRAME_RE = re.compile(FRAME_RE, re.MULTILINE | re.VERBOSE) diff --git a/tests/integrations/test_gnu_backtrace.py b/tests/integrations/test_gnu_backtrace.py index b91359dfa8..63930f850d 100644 --- a/tests/integrations/test_gnu_backtrace.py +++ b/tests/integrations/test_gnu_backtrace.py @@ -4,74 +4,31 @@ from sentry_sdk.integrations.gnu_backtrace import GnuBacktraceIntegration LINES = r""" -0. clickhouse-server(StackTrace::StackTrace()+0x16) [0x99d31a6] -1. clickhouse-server(DB::Exception::Exception(std::__cxx11::basic_string, std::allocator > const&, int)+0x22) [0x372c822] -10. clickhouse-server(DB::ActionsVisitor::visit(std::shared_ptr const&)+0x1a12) [0x6ae45d2] -10. clickhouse-server(DB::InterpreterSelectQuery::executeImpl(DB::InterpreterSelectQuery::Pipeline&, std::shared_ptr const&, bool)+0x11af) [0x75c68ff] -10. clickhouse-server(ThreadPoolImpl::worker(std::_List_iterator)+0x1ab) [0x6f90c1b] -11. clickhouse-server() [0xae06ddf] -11. clickhouse-server(DB::ExpressionAnalyzer::getRootActions(std::shared_ptr const&, bool, std::shared_ptr&, bool)+0xdb) [0x6a0a63b] -11. clickhouse-server(DB::InterpreterSelectQuery::InterpreterSelectQuery(std::shared_ptr const&, DB::Context const&, std::shared_ptr const&, std::shared_ptr const&, std::vector, std::allocator >, std::allocator, std::allocator > > > const&, DB::QueryProcessingStage::Enum, unsigned long, bool)+0x5e6) [0x75c7516] -12. /lib/x86_64-linux-gnu/libpthread.so.0(+0x8184) [0x7f3bbc568184] -12. clickhouse-server(DB::ExpressionAnalyzer::getConstActions()+0xc9) [0x6a0b059] -12. clickhouse-server(DB::InterpreterSelectQuery::InterpreterSelectQuery(std::shared_ptr const&, DB::Context const&, std::vector, std::allocator >, std::allocator, std::allocator > > > const&, DB::QueryProcessingStage::Enum, unsigned long, bool)+0x56) [0x75c8276] -13. /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7f3bbbb8303d] -13. clickhouse-server(DB::InterpreterSelectWithUnionQuery::InterpreterSelectWithUnionQuery(std::shared_ptr const&, DB::Context const&, std::vector, std::allocator >, std::allocator, std::allocator > > > const&, DB::QueryProcessingStage::Enum, unsigned long, bool)+0x7e7) [0x75d4067] -13. clickhouse-server(DB::evaluateConstantExpression(std::shared_ptr const&, DB::Context const&)+0x3ed) [0x656bfdd] -14. clickhouse-server(DB::InterpreterFactory::get(std::shared_ptr&, DB::Context&, DB::QueryProcessingStage::Enum)+0x3a8) [0x75b0298] -14. clickhouse-server(DB::makeExplicitSet(DB::ASTFunction const*, DB::Block const&, bool, DB::Context const&, DB::SizeLimits const&, std::unordered_map, DB::PreparedSetKey::Hash, std::equal_to, std::allocator > > >&)+0x382) [0x6adf692] -15. clickhouse-server() [0x7664c79] -15. clickhouse-server(DB::ActionsVisitor::makeSet(DB::ASTFunction const*, DB::Block const&)+0x2a7) [0x6ae2227] -16. clickhouse-server(DB::ActionsVisitor::visit(std::shared_ptr const&)+0x1973) [0x6ae4533] -16. clickhouse-server(DB::executeQuery(std::__cxx11::basic_string, std::allocator > const&, DB::Context&, bool, DB::QueryProcessingStage::Enum)+0x8a) [0x76669fa] -17. clickhouse-server(DB::ActionsVisitor::visit(std::shared_ptr const&)+0x1324) [0x6ae3ee4] -17. clickhouse-server(DB::TCPHandler::runImpl()+0x4b9) [0x30973c9] -18. clickhouse-server(DB::ExpressionAnalyzer::getRootActions(std::shared_ptr const&, bool, std::shared_ptr&, bool)+0xdb) [0x6a0a63b] -18. clickhouse-server(DB::TCPHandler::run()+0x2b) [0x30985ab] -19. clickhouse-server(DB::ExpressionAnalyzer::appendGroupBy(DB::ExpressionActionsChain&, bool)+0x100) [0x6a0b4f0] -19. clickhouse-server(Poco::Net::TCPServerConnection::start()+0xf) [0x9b53e4f] -2. clickhouse-server(DB::FunctionTuple::getReturnTypeImpl(std::vector, std::allocator > > const&) const+0x122) [0x3a2a0f2] -2. clickhouse-server(DB::readException(DB::Exception&, DB::ReadBuffer&, std::__cxx11::basic_string, std::allocator > const&)+0x21f) [0x6fb253f] -2. clickhouse-server(void DB::readDateTimeTextFallback(long&, DB::ReadBuffer&, DateLUTImpl const&)+0x318) [0x99ffed8] -20. clickhouse-server(DB::InterpreterSelectQuery::analyzeExpressions(DB::QueryProcessingStage::Enum, bool)+0x364) [0x6437fa4] -20. clickhouse-server(Poco::Net::TCPServerDispatcher::run()+0x16a) [0x9b5422a] -21. clickhouse-server(DB::InterpreterSelectQuery::executeImpl(DB::InterpreterSelectQuery::Pipeline&, std::shared_ptr const&, bool)+0x36d) [0x643c28d] -21. clickhouse-server(Poco::PooledThread::run()+0x77) [0x9c70f37] -22. clickhouse-server(DB::InterpreterSelectQuery::executeWithMultipleStreams()+0x50) [0x643ecd0] -22. clickhouse-server(Poco::ThreadImpl::runnableEntry(void*)+0x38) [0x9c6caa8] -23. clickhouse-server() [0xa3c68cf] -23. clickhouse-server(DB::InterpreterSelectWithUnionQuery::executeWithMultipleStreams()+0x6c) [0x644805c] -24. /lib/x86_64-linux-gnu/libpthread.so.0(+0x8184) [0x7fe839d2d184] -24. clickhouse-server(DB::InterpreterSelectWithUnionQuery::execute()+0x38) [0x6448658] -25. /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7fe83934803d] -25. clickhouse-server() [0x65744ef] -26. clickhouse-server(DB::executeQuery(std::__cxx11::basic_string, std::allocator > const&, DB::Context&, bool, DB::QueryProcessingStage::Enum, bool)+0x81) [0x6576141] -27. clickhouse-server(DB::TCPHandler::runImpl()+0x752) [0x3739f82] -28. clickhouse-server(DB::TCPHandler::run()+0x2b) [0x373a5cb] -29. clickhouse-server(Poco::Net::TCPServerConnection::start()+0xf) [0x708e63f] -3. clickhouse-server(DB::Connection::receiveException()+0x81) [0x67d3ad1] -3. clickhouse-server(DB::DefaultFunctionBuilder::getReturnTypeImpl(std::vector > const&) const+0x223) [0x38ac3b3] -3. clickhouse-server(DB::FunctionComparison::executeDateOrDateTimeOrEnumOrUUIDWithConstString(DB::Block&, unsigned long, DB::IColumn const*, DB::IColumn const*, std::shared_ptr const&, std::shared_ptr const&, bool, unsigned long)+0xbb3) [0x411dee3] -30. clickhouse-server(Poco::Net::TCPServerDispatcher::run()+0xe9) [0x708ed79] -31. clickhouse-server(Poco::PooledThread::run()+0x81) [0x7142011] -4. clickhouse-server(DB::Connection::receivePacket()+0x767) [0x67d9cd7] -4. clickhouse-server(DB::FunctionBuilderImpl::getReturnTypeWithoutLowCardinality(std::vector > const&) const+0x75) [0x6869635] -4. clickhouse-server(DB::FunctionComparison::executeImpl(DB::Block&, std::vector > const&, unsigned long, unsigned long)+0x576) [0x41ab006] -5. clickhouse-server(DB::FunctionBuilderImpl::getReturnType(std::vector > const&) const+0x350) [0x6869f10] -5. clickhouse-server(DB::MultiplexedConnections::receivePacket()+0x7e) [0x67e7ede] -5. clickhouse-server(DB::PreparedFunctionImpl::execute(DB::Block&, std::vector > const&, unsigned long, unsigned long)+0x3e2) [0x7933492] -6. clickhouse-server(DB::ExpressionAction::execute(DB::Block&, std::unordered_map, std::allocator >, unsigned long, std::hash, std::allocator > >, std::equal_to, std::allocator > >, std::allocator, std::allocator > const, unsigned long> > >&) const+0x61a) [0x7ae093a] -6. clickhouse-server(DB::FunctionBuilderImpl::build(std::vector > const&) const+0x3c) [0x38accfc] -6. clickhouse-server(DB::RemoteBlockInputStream::readImpl()+0x87) [0x631da97] -7. clickhouse-server(DB::ExpressionActions::addImpl(DB::ExpressionAction, std::vector, std::allocator >, std::allocator, std::allocator > > >&)+0x552) [0x6a00052] -7. clickhouse-server(DB::ExpressionActions::execute(DB::Block&) const+0xe6) [0x7ae1e06] -7. clickhouse-server(DB::IBlockInputStream::read()+0x178) [0x63075e8] -8. clickhouse-server(DB::ExpressionActions::add(DB::ExpressionAction const&, std::vector, std::allocator >, std::allocator, std::allocator > > >&)+0x42) [0x6a00422] -8. clickhouse-server(DB::FilterBlockInputStream::FilterBlockInputStream(std::shared_ptr const&, std::shared_ptr const&, std::__cxx11::basic_string, std::allocator > const&, bool)+0x711) [0x79970d1] -8. clickhouse-server(DB::ParallelInputsProcessor::thread(std::shared_ptr, unsigned long)+0x2f1) [0x64467c1] -9. clickhouse-server() [0x75bd5a3] -9. clickhouse-server(DB::ScopeStack::addAction(DB::ExpressionAction const&)+0xd2) [0x6ae04d2] -9. clickhouse-server(ThreadFromGlobalPool::ThreadFromGlobalPool::process()::{lambda()#1}>(DB::ParallelInputsProcessor::process()::{lambda()#1}&&)::{lambda()#1}::operator()() const+0x6d) [0x644722d] +0. DB::Exception::Exception(DB::Exception::MessageMasked&&, int, bool) @ 0x000000000bfc38a4 in /usr/bin/clickhouse +1. DB::Exception::Exception(int, FormatStringHelperImpl::type, std::type_identity::type>, String&&, String&&) @ 0x00000000075d242c in /usr/bin/clickhouse +2. DB::ActionsMatcher::visit(DB::ASTIdentifier const&, std::shared_ptr const&, DB::ActionsMatcher::Data&) @ 0x0000000010b1c648 in /usr/bin/clickhouse +3. DB::ActionsMatcher::visit(DB::ASTFunction const&, std::shared_ptr const&, DB::ActionsMatcher::Data&) @ 0x0000000010b1f58c in /usr/bin/clickhouse +4. DB::ActionsMatcher::visit(DB::ASTFunction const&, std::shared_ptr const&, DB::ActionsMatcher::Data&) @ 0x0000000010b1f58c in /usr/bin/clickhouse +5. DB::ActionsMatcher::visit(std::shared_ptr const&, DB::ActionsMatcher::Data&) @ 0x0000000010b1c394 in /usr/bin/clickhouse +6. DB::InDepthNodeVisitor const>::doVisit(std::shared_ptr const&) @ 0x0000000010b154a0 in /usr/bin/clickhouse +7. DB::ExpressionAnalyzer::getRootActions(std::shared_ptr const&, bool, std::shared_ptr&, bool) @ 0x0000000010af83b4 in /usr/bin/clickhouse +8. DB::SelectQueryExpressionAnalyzer::appendSelect(DB::ExpressionActionsChain&, bool) @ 0x0000000010aff168 in /usr/bin/clickhouse +9. DB::ExpressionAnalysisResult::ExpressionAnalysisResult(DB::SelectQueryExpressionAnalyzer&, std::shared_ptr const&, bool, bool, bool, std::shared_ptr const&, std::shared_ptr const&, DB::Block const&) @ 0x0000000010b05b74 in /usr/bin/clickhouse +10. DB::InterpreterSelectQuery::getSampleBlockImpl() @ 0x00000000111559fc in /usr/bin/clickhouse +11. DB::InterpreterSelectQuery::InterpreterSelectQuery(std::shared_ptr const&, std::shared_ptr const&, std::optional, std::shared_ptr const&, DB::SelectQueryOptions const&, std::vector> const&, std::shared_ptr const&, std::shared_ptr)::$_0::operator()(bool) const @ 0x0000000011148254 in /usr/bin/clickhouse +12. DB::InterpreterSelectQuery::InterpreterSelectQuery(std::shared_ptr const&, std::shared_ptr const&, std::optional, std::shared_ptr const&, DB::SelectQueryOptions const&, std::vector> const&, std::shared_ptr const&, std::shared_ptr) @ 0x00000000111413e8 in /usr/bin/clickhouse +13. DB::InterpreterSelectWithUnionQuery::InterpreterSelectWithUnionQuery(std::shared_ptr const&, std::shared_ptr, DB::SelectQueryOptions const&, std::vector> const&) @ 0x00000000111d3708 in /usr/bin/clickhouse +14. DB::InterpreterFactory::get(std::shared_ptr&, std::shared_ptr, DB::SelectQueryOptions const&) @ 0x0000000011100b64 in /usr/bin/clickhouse +15. DB::executeQueryImpl(char const*, char const*, std::shared_ptr, bool, DB::QueryProcessingStage::Enum, DB::ReadBuffer*) @ 0x00000000114c3f3c in /usr/bin/clickhouse +16. DB::executeQuery(String const&, std::shared_ptr, bool, DB::QueryProcessingStage::Enum) @ 0x00000000114c0ec8 in /usr/bin/clickhouse +17. DB::TCPHandler::runImpl() @ 0x00000000121bb5d8 in /usr/bin/clickhouse +18. DB::TCPHandler::run() @ 0x00000000121cb728 in /usr/bin/clickhouse +19. Poco::Net::TCPServerConnection::start() @ 0x00000000146d9404 in /usr/bin/clickhouse +20. Poco::Net::TCPServerDispatcher::run() @ 0x00000000146da900 in /usr/bin/clickhouse +21. Poco::PooledThread::run() @ 0x000000001484da7c in /usr/bin/clickhouse +22. Poco::ThreadImpl::runnableEntry(void*) @ 0x000000001484bc24 in /usr/bin/clickhouse +23. start_thread @ 0x0000000000007624 in /usr/lib/aarch64-linux-gnu/libpthread-2.31.so +24. ? @ 0x00000000000d162c in /usr/lib/aarch64-linux-gnu/libc-2.31.so """ @@ -94,8 +51,4 @@ def test_basic(sentry_init, capture_events, input): ) (frame,) = exception["stacktrace"]["frames"][1:] - if frame.get("function") is None: - assert "clickhouse-server()" in input or "pthread" in input - else: - assert ")" not in frame["function"] and "(" not in frame["function"] - assert frame["function"] in input + assert frame["function"]