-
Type: Improvement
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
Service Arch
-
Fully Compatible
-
Service Arch 2022-03-21, Service Arch 2022-04-04
-
1
This can be helpful for human reading of stack traces in BF tickets, but they tend to be significantly longer than the mangled names. So what though?
Here's an example.
diff --git a/src/mongo/util/stacktrace_posix.cpp b/src/mongo/util/stacktrace_posix.cpp index 7b888f16c8..6476e42a7b 100644 --- a/src/mongo/util/stacktrace_posix.cpp +++ b/src/mongo/util/stacktrace_posix.cpp @@ -41,6 +41,7 @@ #include <iomanip> #include <iostream> #include <string> +#include <cxxabi.h> #include "mongo/base/init.h" #include "mongo/bson/json.h" @@ -164,6 +165,13 @@ void appendBacktrace(BSONObjBuilder* obj, IterationIface& iter, const Options& o } if (const auto& sym = meta.symbol(); sym) { frame.append("s", sym.name()); + if (1) { + int status; + char* realname = abi::__cxa_demangle(std::string(sym.name()).c_str(), 0, 0, &status); + if (status == 0) + frame.append("C", realname); + std::free(realname); + } frame.append("s+", Hex(offsetFromBase(sym.base(), addr))); } }
{ "t": { "$date": "2021-06-23T18:53:24.158-04:00" }, "s": "I", "c": "CONTROL", "id": 31380, "ctx": "conn12", "msg": "BACKTRACE", "attr": { "bt": { "backtrace": [ { "a": "1068C46A1", "b": "104C3D000", "o": "1C876A1", "s": "_ZN5mongo18stack_trace_detail12_GLOBAL__N_119printStackTraceImplERKNS1_7OptionsEPNS_14StackTraceSinkE", "C": "mongo::stack_trace_detail::(anonymous namespace)::printStackTraceImpl(mongo::stack_trace_detail::(anonymous namespace)::Options const&, mongo::StackTraceSink*)", "s+": "121" }, { "a": "1068C5B38", "b": "104C3D000", "o": "1C88B38", "s": "_ZN5mongo15printStackTraceEv", "C": "mongo::printStackTrace()", "s+": "28" }, { "a": "1056663A4", "b": "104C3D000", "o": "A293A4", "s": "_ZN5mongo14CommandHelpers34shouldActivateFailCommandFailPointERKNS_7BSONObjERKNS_15NamespaceStringEPKNS_7CommandEPNS_6ClientE", "C": "mongo::CommandHelpers::shouldActivateFailCommandFailPoint(mongo::BSONObj const&, mongo::NamespaceString const&, mongo::Command const*, mongo::Client*)", "s+": "6B4" }, { "a": "105665C68", "b": "104C3D000", "o": "A28C68", "s": "_ZN5mongo14CommandHelpers34shouldActivateFailCommandFailPointERKNS_7BSONObjEPKNS_17CommandInvocationEPNS_6ClientE", "C": "mongo::CommandHelpers::shouldActivateFailCommandFailPoint(mongo::BSONObj const&, mongo::CommandInvocation const*, mongo::Client*)", "s+": "78" }, { "a": "10566A2A0", "b": "104C3D000", "o": "A2D2A0", "s": "_ZZN5mongo14CommandHelpers28evaluateFailCommandFailPointEPNS_16OperationContextEPKNS_17CommandInvocationEENK4$_19clERKNS_7BSONObjE", "C": "mongo::CommandHelpers::evaluateFailCommandFailPoint(mongo::OperationContext*, mongo::CommandInvocation const*)::$_19::operator()(mongo::BSONObj const&) const", "s+": "310" }, { "a": "105666654", "b": "104C3D000", "o": "A29654", "s": "_ZN5mongo14CommandHelpers28evaluateFailCommandFailPointEPNS_16OperationContextEPKNS_17CommandInvocationE", "C": "mongo::CommandHelpers::evaluateFailCommandFailPoint(mongo::OperationContext*, mongo::CommandInvocation const*)", "s+": "134" }, { "a": "104DFDFE3", "b": "104C3D000", "o": "1C0FE3", "s": "_ZN5mongo12_GLOBAL__N_118ParseAndRunCommand13RunInvocation6_setupEv", "C": "mongo::(anonymous namespace)::ParseAndRunCommand::RunInvocation::_setup()", "s+": "303" }, { "a": "104DFBDCA", "b": "104C3D000", "o": "1BEDCA", "s": "_ZZN5mongo12_GLOBAL__N_118ParseAndRunCommand3runEvENK4$_20clEv", "C": "mongo::(anonymous namespace)::ParseAndRunCommand::run()::$_20::operator()() const", "s+": "F5A" }, { "a": "104DFA7AF", "b": "104C3D000", "o": "1BD7AF", "s": "_ZN5mongo12_GLOBAL__N_118ParseAndRunCommand3runEv", "C": "mongo::(anonymous namespace)::ParseAndRunCommand::run()", "s+": "3F" }, { "a": "104DF364F", "b": "104C3D000", "o": "1B664F", "s": "_ZN5mongo13ClientCommand8_executeEv", "C": "mongo::ClientCommand::_execute()", "s+": "31F" }, { "a": "104DF580F", "b": "104C3D000", "o": "1B880F", "s": "_ZN5mongo13ClientCommand3runEv", "C": "mongo::ClientCommand::run()", "s+": "3F" }, { "a": "104DF66F0", "b": "104C3D000", "o": "1B96F0", "s": "_ZN5mongo8Strategy13clientCommandENSt3__110shared_ptrINS_23RequestExecutionContextEEE", "C": "mongo::Strategy::clientCommand(std::__1::shared_ptr<mongo::RequestExecutionContext>)", "s+": "E0" }, { "a": "104C593F6", "b": "104C3D000", "o": "1C3F6", "s": "_ZN5mongo15CommandOpRunner3runEv", "C": "mongo::CommandOpRunner::run()", "s+": "46" }, { "a": "104C5917D", "b": "104C3D000", "o": "1C17D", "s": "_ZN5mongo13HandleRequest13handleRequestEv", "C": "mongo::HandleRequest::handleRequest()", "s+": "22D" }, { "a": "104C5D665", "b": "104C3D000", "o": "20665", "s": "_ZZN5mongo15unique_functionIFvPNS_14future_details15SharedStateBaseEEE8makeImplIZNS1_10FutureImplINS1_8FakeVoidEE16makeContinuationINS_10DbResponseEZZNOS9_4thenIZNS_13HandleRequest3runEvE3$_4EEDaOT_ENKUlvE_clEvEUlPNS1_15SharedStateImplIS8_EEPNSJ_ISB_EEE_EENS7_ISG_EEOT0_EUlS3_E_EESF_SH_EN12SpecificImpl4callEOS3_", "C": "mongo::HandleRequest::run()::$_4 mongo::unique_function<void (mongo::future_details::SharedStateBase*)>::makeImpl<mongo::future_details::FutureImpl<mongo::HandleRequest::run()::$_4&&> mongo::future_details::FutureImpl<mongo::future_details::FakeVoid>::makeContinuation<mongo::DbResponse, auto mongo::future_details::FutureImpl<mongo::future_details::FakeVoid>::then<mongo::HandleRequest::run()::$_4>(mongo::HandleRequest::run()::$_4&&) &&::'lambda'()::operator()() const::'lambda'(mongo::future_details::SharedStateImpl<mongo::future_details::FakeVoid>*, mongo::future_details::SharedStateImpl<mongo::future_details::FakeVoid><mongo::DbResponse>*)>(auto mongo::future_details::FutureImpl<mongo::future_details::FakeVoid>::then<mongo::HandleRequest::run()::$_4>(mongo::HandleRequest::run()::$_4&&) &&::'lambda'()::operator()() const::'lambda'(mongo::future_details::SharedStateImpl<mongo::future_details::FakeVoid>*, mongo::future_details::SharedStateImpl<mongo::future_details::FakeVoid><mongo::DbResponse>*)&&)::'lambda'(mongo::future_details::SharedStateBase*)>('lambda'())::SpecificImpl::call(mongo::future_details::SharedStateBase*&&)", "s+": "145" }, { "a": "104C5BDDA", "b": "104C3D000", "o": "1EDDA", "s": "_ZN5mongo14future_details15SharedStateBase20transitionToFinishedEv", "C": "mongo::future_details::SharedStateBase::transitionToFinished()", "s+": "9A" }, { "a": "104C5C9D9", "b": "104C3D000", "o": "1F9D9", "s": "_ZZN5mongo15unique_functionIFvPNS_14future_details15SharedStateBaseEEE8makeImplIZNS1_10FutureImplINS1_8FakeVoidEE16makeContinuationIvZZNOS9_4thenIZNS_13HandleRequest3runEvE3$_3EEDaOT_ENKUlvE_clEvEUlPNS1_15SharedStateImplIS8_EESK_E_EENS7_ISF_EEOT0_EUlS3_E_EESE_SG_EN12SpecificImpl4callEOS3_", "s+": "E9" }, { "a": "104C5BDDA", "b": "104C3D000", "o": "1EDDA", "s": "_ZN5mongo14future_details15SharedStateBase20transitionToFinishedEv", "C": "mongo::future_details::SharedStateBase::transitionToFinished()", "s+": "9A" }, { "a": "104C5A8FA", "b": "104C3D000", "o": "1D8FA", "s": "_ZN5mongo13HandleRequest3runEv", "C": "mongo::HandleRequest::run()", "s+": "140A" }, { "a": "104C5B2F7", "b": "104C3D000", "o": "1E2F7", "s": "_ZN5mongo23ServiceEntryPointMongos13handleRequestEPNS_16OperationContextERKNS_7MessageE", "C": "mongo::ServiceEntryPointMongos::handleRequest(mongo::OperationContext*, mongo::Message const&)", "s+": "C7" }, { "a": "104C93CC7", "b": "104C3D000", "o": "56CC7", "s": "_ZN5mongo9transport19ServiceStateMachine4Impl14processMessageEv", "C": "mongo::transport::ServiceStateMachine::Impl::processMessage()", "s+": "227" }, { "a": "104C9A6AD", "b": "104C3D000", "o": "5D6AD", "s": "_ZZNO5mongo14future_details10FutureImplINS0_8FakeVoidEE4thenIZNS_9transport19ServiceStateMachine4Impl12startNewLoopERKNS_6StatusEE3$_9EEDaOT_ENKUlOS2_E_clESF_", "C": "auto mongo::future_details::FutureImpl<mongo::future_details::FakeVoid>::then<mongo::transport::ServiceStateMachine::Impl::startNewLoop(mongo::Status const&)::$_9>(mongo::transport::ServiceStateMachine::Impl::startNewLoop(mongo::Status const&)::$_9&&) &&::'lambda'(mongo::future_details::FakeVoid&&)::operator()('lambda'(mongo::future_details::FakeVoid&&)) const", "s+": "2D" }, { "a": "104C947DE", "b": "104C3D000", "o": "577DE", "s": "_ZN5mongo9transport19ServiceStateMachine4Impl12startNewLoopERKNS_6StatusE", "C": "mongo::transport::ServiceStateMachine::Impl::startNewLoop(mongo::Status const&)", "s+": "10E" }, { "a": "104C9C95F", "b": "104C3D000", "o": "5F95F", "s": "_ZZN5mongo15unique_functionIFvNS_6StatusEEE8makeImplIZZNS_9transport19ServiceStateMachine4Impl12startNewLoopERKS1_ENK4$_11clES1_EUlS1_E_EEDaOT_EN12SpecificImpl4callEOS1_", "C": "auto mongo::unique_function<void (mongo::Status)>::makeImpl<mongo::transport::ServiceStateMachine::Impl::startNewLoop(mongo::Status const&)::$_11::operator()(mongo::Status) const::'lambda'(mongo::Status)>(mongo::transport::ServiceStateMachine::Impl::startNewLoop(mongo::Status const&)::$_11::operator()(mongo::Status) const::'lambda'(mongo::Status)&&)::SpecificImpl::call(mongo::Status&&)", "s+": "4F" }, { "a": "10621E5DE", "b": "104C3D000", "o": "15E15DE", "s": "_ZZN5mongo15unique_functionIFvNS_6StatusEEE8makeImplIZNS_9transport26ServiceExecutorSynchronous18runOnDataAvailableERKNSt3__110shared_ptrINS5_7SessionEEES3_E3$_5EEDaOT_EN12SpecificImpl4callEOS1_", "C": "auto mongo::unique_function<void (mongo::Status)>::makeImpl<mongo::transport::ServiceExecutorSynchronous::runOnDataAvailable(std::__1::shared_ptr<mongo::transport::Session> const&, mongo::unique_function<void (mongo::Status)>)::$_5>(mongo::transport::ServiceExecutorSynchronous::runOnDataAvailable(std::__1::shared_ptr<mongo::transport::Session> const&, mongo::unique_function<void (mongo::Status)>)::$_5&&)::SpecificImpl::call(mongo::Status&&)", "s+": "3E" }, { "a": "10621AE57", "b": "104C3D000", "o": "15DDE57", "s": "_ZZN5mongo9transport15ServiceExecutor8scheduleENS_15unique_functionIFvNS_6StatusEEEEENUlvE_clEv", "C": "mongo::transport::ServiceExecutor::schedule(mongo::unique_function<void (mongo::Status)>)::'lambda'()::operator()()", "s+": "37" }, { "a": "10621E2D8", "b": "104C3D000", "o": "15E12D8", "s": "_ZZN5mongo15unique_functionIFvvEE8makeImplIZNS_9transport26ServiceExecutorSynchronous12scheduleTaskES2_NS4_15ServiceExecutor13ScheduleFlagsEE3$_4EEDaOT_EN12SpecificImpl4callEv", "C": "auto mongo::unique_function<void ()>::makeImpl<mongo::transport::ServiceExecutorSynchronous::scheduleTask(mongo::unique_function<void ()>, mongo::transport::ServiceExecutor::ScheduleFlags)::$_4>(mongo::transport::ServiceExecutorSynchronous::scheduleTask(mongo::unique_function<void ()>, mongo::transport::ServiceExecutor::ScheduleFlags)::$_4&&)::SpecificImpl::call()", "s+": "168" }, { "a": "10621F008", "b": "104C3D000", "o": "15E2008", "s": "_ZN5mongo12_GLOBAL__N_17runFuncEPv", "C": "mongo::(anonymous namespace)::runFunc(void*)", "s+": "18" }, { "a": "7FFF205FF8FC", "b": "7FFF205F9000", "o": "68FC", "s": "_pthread_start", "s+": "E0" }, { "a": "7FFF205FB443", "b": "7FFF205F9000", "o": "2443", "s": "thread_start", "s+": "F" } ], "processInfo": { "mongodbVersion": "5.0.0-alpha0-1193-gfaec09d", "gitVersion": "faec09dbc6bb19cf0e2e457c9c11258460be7f11", "compiledModules": [ "enterprise" ], "uname": { "sysname": "Darwin", "release": "20.5.0", "version": "Darwin Kernel Version 20.5.0: Sat May 8 05:10:33 PDT 2021; root:xnu-7195.121.3~9/RELEASE_X86_64", "machine": "x86_64" }, "somap": [ { "path": "/Users/billy/prog/mongodb/mongo/build/install/bin/mongos", "machType": 2, "b": "104C3D000", "vmaddr": "100000000", "buildId": "FE6F77E70D8E34A889947769ED8D96DA" }, { "path": "/usr/lib/system/libsystem_pthread.dylib", "machType": 6, "b": "7FFF205F9000", "vmaddr": "7FFF20308000", "buildId": "17482C9D061E3769AC9EBE1239D33098" } ] } } } }
- is related to
-
SERVER-59314 Report file and line in stack traces
- Backlog