Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-52668

logd on some vector<T> types result in a runtime assertion

    • Type: Icon: Bug Bug
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 4.9.0
    • Affects Version/s: None
    • Component/s: Security
    • Labels:
      None
    • Fully Compatible
    • ALL
    • Security 2020-12-28, Security 2021-01-11

      I imagine the problem may be more general than just vector. It plausibly includes any container that logv2 unwraps.

      I added a logd line to print the contents of this vector<Privilege> which resulted in a crash. While Privilege contains a toBSON method that lets it be output on its own, it has no toString method.

      I would have expected the code to not compile, or for the logging code to have found the toBSON method. Also acceptable would be for the program to crash right away when finding the val.toString method is not invocable.

      As is, a std::bad_function_call gets thrown which can lose context if it tries to escape a noexcept function.

      The stack trace from a breakpoint in constructing std::bad_function_call (apologies for the gdb prompts):

      #1  std::__throw_bad_function_call () at ../../../../../src/combined/libstdc++-v3/src/c++11/functional.cc:34
      34	../../../../../src/combined/libstdc++-v3/src/c++11/functional.cc: No such file or directory.
      (gdb) 
      #2  0x00007ffff640ec6c in std::function<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ()>::operator()() const (this=0x7fffffff5940) at /opt/mongodbtoolchain/revisions/e5348beb43e147b74a40f4ca5fb05a330ea646cf/stow/gcc-v3.2dR/lib/gcc/x86_64-mongodb-linux/8.2.0/../../../../include/c++/8.2.0/bits/std_function.h:686
      686		__throw_bad_function_call();
      (gdb) 
      #3  0x00007fffed7c64f4 in mongo::logv2::detail::SequenceContainerLogger<__gnu_cxx::__normal_iterator<mongo::Privilege const*, std::vector<mongo::Privilege, std::allocator<mongo::Privilege> > > >::serialize(fmt::v6::basic_memory_buffer<char, 500ul, std::allocator<char> >&) const::{lambda(auto:1&&)#1}::operator()<mongo::logv2::CustomAttributeValue>(mongo::logv2::CustomAttributeValue&&) const (this=0x7fffffff5960, val=...) at src/mongo/logv2/attribute_storage.h:410
      410	                        fmt::format_to(buffer, "{}", val.toString());
      (gdb) 
      #4  0x00007fffed7c633a in mongo::logv2::detail::SequenceContainerLogger<__gnu_cxx::__normal_iterator<mongo::Privilege const*, std::vector<mongo::Privilege, std::allocator<mongo::Privilege> > > >::serialize (this=0x7fffffff59b8, buffer=warning: RTTI symbol not found for class 'fmt::v6::basic_memory_buffer<char, 500ul, std::allocator<char> >'
      ...) at src/mongo/logv2/attribute_storage.h:432
      432	                append(mapValue(item));
      (gdb) 
      #5  0x00007fffed7c61be in mongo::logv2::detail::mapValue<std::vector<mongo::Privilege, std::allocator<mongo::Privilege> >, 0>(std::vector<mongo::Privilege, std::allocator<mongo::Privilege> > const&)::{lambda(fmt::v6::basic_memory_buffer<char, 500ul, std::allocator<char> >&)#1}::operator()(fmt::v6::basic_memory_buffer<char, 500ul, std::allocator<char> >&) const (this=0x7fffffff6a90, buffer=warning: RTTI symbol not found for class 'fmt::v6::basic_memory_buffer<char, 500ul, std::allocator<char> >'
      ...) at src/mongo/logv2/attribute_storage.h:275
      275	    custom.stringSerialize = [&val](fmt::memory_buffer& buffer) { seqLog(val).serialize(buffer); };
      (gdb) 
      #6  0x00007fffed7c6052 in std::_Function_handler<void (fmt::v6::basic_memory_buffer<char, 500ul, std::allocator<char> >&), mongo::logv2::detail::mapValue<std::vector<mongo::Privilege, std::allocator<mongo::Privilege> >, 0>(std::vector<mongo::Privilege, std::allocator<mongo::Privilege> > const&)::{lambda(fmt::v6::basic_memory_buffer<char, 500ul, std::allocator<char> >&)#1}>::_M_invoke(std::_Any_data const&, fmt::v6::basic_memory_buffer<char, 500ul, std::allocator<char> >&) (__functor=..., __args=warning: RTTI symbol not found for class 'fmt::v6::basic_memory_buffer<char, 500ul, std::allocator<char> >'
      ...) at /opt/mongodbtoolchain/revisions/e5348beb43e147b74a40f4ca5fb05a330ea646cf/stow/gcc-v3.2dR/lib/gcc/x86_64-mongodb-linux/8.2.0/../../../../include/c++/8.2.0/bits/std_function.h:297
      297		(*_Base::_M_get_pointer(__functor))(
      (gdb) 
      #7  0x00007ffff640ea48 in std::function<void (fmt::v6::basic_memory_buffer<char, 500ul, std::allocator<char> >&)>::operator()(fmt::v6::basic_memory_buffer<char, 500ul, std::allocator<char> >&) const (this=0x7fffffff6a90, __args=warning: RTTI symbol not found for class 'fmt::v6::basic_memory_buffer<char, 500ul, std::allocator<char> >'
      ...) at /opt/mongodbtoolchain/revisions/e5348beb43e147b74a40f4ca5fb05a330ea646cf/stow/gcc-v3.2dR/lib/gcc/x86_64-mongodb-linux/8.2.0/../../../../include/c++/8.2.0/bits/std_function.h:687
      687	      return _M_invoker(_M_functor, std::forward<_ArgTypes>(__args)...);
      (gdb) 
      #8  0x00007fffe6c21843 in mongo::logv2::detail::UnstructuredValueExtractor::operator() (this=0x7fffffff66b0, name="dummy00", val=...) at src/mongo/logv2/log_detail.cpp:51
      51	            val.stringSerialize(buffer);
      (gdb) 
      #9  0x00007fffe6c2176d in mongo::logv2::TypeErasedAttributeStorage::apply<mongo::logv2::detail::UnstructuredValueExtractor&>(mongo::logv2::detail::UnstructuredValueExtractor&) const::{lambda(mongo::logv2::detail::NamedAttribute const&)#1}::operator()(mongo::logv2::detail::NamedAttribute const&) const::{lambda(auto:1&&)#1}::operator()<mongo::logv2::CustomAttributeValue const&>(mongo::logv2::detail::UnstructuredValueExtractor&) const (this=0x7fffffff6510, val=...) at src/mongo/logv2/attribute_storage.h:712
      712	            stdx::visit([name, &f](auto&& val) { f(name, val); }, attr.value);
      (gdb) 
      #10 0x00007fffe6c21722 in mpark::lib::cpp17::detail::invoke<mongo::logv2::TypeErasedAttributeStorage::apply<mongo::logv2::detail::UnstructuredValueExtractor&>(mongo::logv2::detail::UnstructuredValueExtractor&) const::{lambda(mongo::logv2::detail::NamedAttribute const&)#1}::operator()(mongo::logv2::detail::NamedAttribute const&) const::{lambda(auto:1&&)#1}, mongo::logv2::CustomAttributeValue const&> (f=..., args=...) at src/third_party/variant-1.4.0/include/mpark/lib.hpp:300
      300	          MPARK_RETURN(lib::forward<F>(f)(lib::forward<Args>(args)...))
      (gdb) 
      #11 0x00007fffe6c216e2 in mpark::lib::cpp17::invoke<mongo::logv2::TypeErasedAttributeStorage::apply<mongo::logv2::detail::UnstructuredValueExtractor&>(mongo::logv2::detail::UnstructuredValueExtractor&) const::{lambda(mongo::logv2::detail::NamedAttribute const&)#1}::operator()(mongo::logv2::detail::NamedAttribute const&) const::{lambda(auto:1&&)#1}, mongo::logv2::CustomAttributeValue const&> (f=..., args=...) at src/third_party/variant-1.4.0/include/mpark/lib.hpp:308
      308	        MPARK_RETURN(detail::invoke(lib::forward<F>(f),
      (gdb) 
      #12 0x00007fffe6c216a2 in mpark::detail::visitation::variant::visit_exhaustiveness_check<mongo::logv2::TypeErasedAttributeStorage::apply<mongo::logv2::detail::UnstructuredValueExtractor&>(mongo::logv2::detail::UnstructuredValueExtractor&) const::{lambda(mongo::logv2::detail::NamedAttribute const&)#1}::operator()(mongo::logv2::detail::NamedAttribute const&) const::{lambda(auto:1&&)#1}, mongo::logv2::CustomAttributeValue const&>::invoke({lambda(mongo::logv2::detail::NamedAttribute const&)#1}&&, mongo::logv2::CustomAttributeValue) (visitor=..., values=...) at src/third_party/variant-1.4.0/include/mpark/variant.hpp:909
      909	            DECLTYPE_AUTO_RETURN(lib::invoke(lib::forward<Visitor>(visitor),
      (gdb) 
      #13 0x00007fffe6c21665 in mpark::detail::visitation::variant::value_visitor<mongo::logv2::TypeErasedAttributeStorage::apply<mongo::logv2::detail::UnstructuredValueExtractor&>(mongo::logv2::detail::UnstructuredValueExtractor&) const::{lambda(mongo::logv2::detail::NamedAttribute const&)#1}::operator()(mongo::logv2::detail::NamedAttribute const&) const::{lambda(auto:1&&)#1}>::operator()<mpark::detail::alt<16ul, mongo::logv2::CustomAttributeValue> const&>(mpark::detail::alt<16ul, mongo::logv2::CustomAttributeValue> const&) const (this=0x7fffffff6490, alts=...) at src/third_party/variant-1.4.0/include/mpark/variant.hpp:919
      919	            DECLTYPE_AUTO_RETURN(
      (gdb) 
      #14 0x00007fffe6c21622 in mpark::lib::cpp17::detail::invoke<mpark::detail::visitation::variant::value_visitor<mongo::logv2::TypeErasedAttributeStorage::apply<mongo::logv2::detail::UnstructuredValueExtractor&>(mongo::logv2::detail::UnstructuredValueExtractor&) const::{lambda(mongo::logv2::detail::NamedAttribute const&)#1}::operator()(mongo::logv2::detail::NamedAttribute const&) const::{lambda(auto:1&&)#1}>, mpark::detail::alt<16ul, mongo::logv2::CustomAttributeValue> const&> (f=..., args=...) at src/third_party/variant-1.4.0/include/mpark/lib.hpp:300
      300	          MPARK_RETURN(lib::forward<F>(f)(lib::forward<Args>(args)...))
      (gdb) 
      #15 0x00007fffe6c215e2 in mpark::lib::cpp17::invoke<mpark::detail::visitation::variant::value_visitor<mongo::logv2::TypeErasedAttributeStorage::apply<mongo::logv2::detail::UnstructuredValueExtractor&>(mongo::logv2::detail::UnstructuredValueExtractor&) const::{lambda(mongo::logv2::detail::NamedAttribute const&)#1}::operator()(mongo::logv2::detail::NamedAttribute const&) const::{lambda(auto:1&&)#1}>, mpark::detail::alt<16ul, mongo::logv2::CustomAttributeValue> const&> (f=..., args=...) at src/third_party/variant-1.4.0/include/mpark/lib.hpp:308
      308	        MPARK_RETURN(detail::invoke(lib::forward<F>(f),
      (gdb) 
      #16 0x00007fffe6c215a2 in mpark::detail::visitation::base::visit_return_type_check<void, void>::invoke<mpark::detail::visitation::variant::value_visitor<mongo::logv2::TypeErasedAttributeStorage::apply<mongo::logv2::detail::UnstructuredValueExtractor&>(mongo::logv2::detail::UnstructuredValueExtractor&) const::{lambda(mongo::logv2::detail::NamedAttribute const&)#1}::operator()(mongo::logv2::detail::NamedAttribute const&) const::{lambda(auto:1&&)#1}>, mpark::detail::alt<16ul, mongo::logv2::CustomAttributeValue> const&>(mongo::logv2::detail::UnstructuredValueExtractor&, mpark::detail::alt<16ul, mongo::logv2::CustomAttributeValue> const&) (visitor=..., alts=...) at src/third_party/variant-1.4.0/include/mpark/variant.hpp:524
      524	            DECLTYPE_AUTO_RETURN(lib::invoke(lib::forward<Visitor>(visitor),
      (gdb) 
      #17 0x00007fffe6c1c78d in mpark::detail::visitation::base::dispatcher<true, void, mpark::lib::indexed_type<16ul, mpark::detail::base<(mpark::detail::Trait)1, int, unsigned int, long long, unsigned long long, bool, double, mongo::StringData, mongo::Duration<std::ratio<1l, 1000000000l> >, mongo::Duration<std::ratio<1l, 1000000l> >, mongo::Duration<std::ratio<1l, 1000l> >, mongo::Duration<std::ratio<1l, 1l> >, mongo::Duration<std::ratio<60l, 1l> >, mongo::Duration<std::ratio<3600l, 1l> >, mongo::Duration<std::ratio<86400l, 1l> >, mongo::BSONObj, mongo::BSONArray, mongo::logv2::CustomAttributeValue> const&> >::dispatch<0ul, mpark::detail::visitation::variant::value_visitor<mongo::logv2::TypeErasedAttributeStorage::apply<mongo::logv2::detail::UnstructuredValueExtractor&>(mongo::logv2::detail::UnstructuredValueExtractor&) const::{lambda(mongo::logv2::detail::NamedAttribute const&)#1}::operator()(mongo::logv2::detail::NamedAttribute const&) const::{lambda(auto:1&&)#1}> >(mpark::detail::visitation::variant::value_visitor<mongo::logv2::TypeErasedAttributeStorage::apply<mongo::logv2::detail::UnstructuredValueExtractor&>(mongo::logv2::detail::UnstructuredValueExtractor&) const::{lambda(mongo::logv2::detail::NamedAttribute const&)#1}::operator()(mongo::logv2::detail::NamedAttribute const&) const::{lambda(auto:1&&)#1}>&&, mpark::detail::base<(mpark::detail::Trait)1, int, unsigned int, long long, unsigned long long, bool, double, mongo::StringData, mongo::Duration<std::ratio<1l, 1000000000l> >, mongo::Duration<std::ratio<1l, 1000000l> >, mongo::Duration<std::ratio<1l, 1000l> >, mongo::Duration<std::ratio<1l, 1l> >, mongo::Duration<std::ratio<60l, 1l> >, mongo::Duration<std::ratio<3600l, 1l> >, mongo::Duration<std::ratio<86400l, 1l> >, mongo::BSONObj, mongo::BSONArray, mongo::logv2::CustomAttributeValue> const&) (f=..., visited_vs=...) at src/third_party/variant-1.4.0/include/mpark/variant.hpp:563
      563	            return visit_return_type_check<Expected, Actual>::invoke(
      (gdb) 
      #18 mpark::detail::visitation::base::dispatcher<true, void>::dispatch<0ul, mpark::detail::visitation::variant::value_visitor<mongo::logv2::TypeErasedAttributeStorage::apply<mongo::logv2::detail::UnstructuredValueExtractor&>(mongo::logv2::detail::UnstructuredValueExtractor&) const::{lambda(mongo::logv2::detail::NamedAttribute const&)#1}::operator()(mongo::logv2::detail::NamedAttribute const&) const::{lambda(auto:1&&)#1}>, mpark::detail::base<(mpark::detail::Trait)1, int, unsigned int, long long, unsigned long long, bool, double, mongo::StringData, mongo::Duration<std::ratio<1l, 1000000000l> >, mpark::detail::Trait<mongo::StringData<1l, 1000000l> >, mpark::detail::Trait<mongo::StringData<1l, 1000l> >, mpark::detail::Trait<mongo::StringData<1l, 1l> >, mpark::detail::Trait<mongo::StringData<60l, 1l> >, mpark::detail::Trait<mongo::StringData<3600l, 1l> >, mpark::detail::Trait<mongo::StringData<86400l, 1l> >, mongo::BSONObj, mongo::BSONArray, mongo::logv2::CustomAttributeValue> const&>(mpark::detail::visitation::variant::value_visitor<mongo::logv2::TypeErasedAttributeStorage::apply<mongo::logv2::detail::UnstructuredValueExtractor&>(mongo::logv2::detail::UnstructuredValueExtractor&) const::{lambda(mongo::logv2::detail::NamedAttribute const&)#1}::operator()(mongo::logv2::detail::NamedAttribute const&) const::{lambda(auto:1&&)#1}>&&, mpark::detail::base<(mpark::detail::Trait)1, int, unsigned int, long long, unsigned long long, bool, double, mongo::StringData, mongo::Duration<std::ratio<1l, 1000000000l> >, mpark::detail::Trait<mongo::StringData<1l, 1000000l> >, mpark::detail::Trait<mongo::StringData<1l, 1000l> >, mpark::detail::Trait<mongo::StringData<1l, 1l> >, mpark::detail::Trait<mongo::StringData<60l, 1l> >, mpark::detail::Trait<mongo::StringData<3600l, 1l> >, mpark::detail::Trait<mongo::StringData<86400l, 1l> >, mongo::BSONObj, mongo::BSONArray, mongo::logv2::CustomAttributeValue> const&) (f=..., v=...) at src/third_party/variant-1.4.0/include/mpark/variant.hpp:606
      606	              case B + 16: return MPARK_DISPATCH(B + 16);
      (gdb) 
      #19 mpark::detail::visitation::alt::visit_alt<mpark::detail::visitation::variant::value_visitor<mongo::logv2::TypeErasedAttributeStorage::apply<mongo::logv2::detail::UnstructuredValueExtractor&>(mongo::logv2::detail::UnstructuredValueExtractor&) const::{lambda(mongo::logv2::detail::NamedAttribute const&)#1}::operator()(mongo::logv2::detail::NamedAttribute const&) const::{lambda(auto:1&&)#1}>, mpark::detail::impl<int, unsigned int, long long, unsigned long long, bool, double, mongo::StringData, mongo::Duration<std::ratio<1l, 1000000000l> >, mpark::detail::impl<mongo::StringData<1l, 1000000l> >, mpark::detail::impl<mongo::StringData<1l, 1000l> >, mpark::detail::impl<mongo::StringData<1l, 1l> >, mpark::detail::impl<mongo::StringData<60l, 1l> >, mpark::detail::impl<mongo::StringData<3600l, 1l> >, mpark::detail::impl<mongo::StringData<86400l, 1l> >, mongo::BSONObj, mongo::BSONArray, mongo::logv2::CustomAttributeValue> const&>(mongo::logv2::detail::UnstructuredValueExtractor&, mpark::detail::impl<int, unsigned int, long long, unsigned long long, bool, double, mongo::StringData, mongo::Duration<std::ratio<1l, 1000000000l> >, mpark::detail::impl<mongo::StringData<1l, 1000000l> >, mpark::detail::impl<mongo::StringData<1l, 1000l> >, mpark::detail::impl<mongo::StringData<1l, 1l> >, mpark::detail::impl<mongo::StringData<60l, 1l> >, mpark::detail::impl<mongo::StringData<3600l, 1l> >, mpark::detail::impl<mongo::StringData<86400l, 1l> >, mongo::BSONObj, mongo::BSONArray, mongo::logv2::CustomAttributeValue> const&) (visitor=..., vs=...) at src/third_party/variant-1.4.0/include/mpark/variant.hpp:841
      841	          DECLTYPE_AUTO_RETURN(
      (gdb) 
      #20 0x00007fffe6c1bf62 in mpark::detail::visitation::variant::visit_alt<mpark::detail::visitation::variant::value_visitor<mongo::logv2::TypeErasedAttributeStorage::apply<mongo::logv2::detail::UnstructuredValueExtractor&>(mongo::logv2::detail::UnstructuredValueExtractor&) const::{lambda(mongo::logv2::detail::NamedAttribute const&)#1}::operator()(mongo::logv2::detail::NamedAttribute const&) const::{lambda(auto:1&&)#1}>, mpark::variant<int, unsigned int, long long, unsigned long long, bool, double, mongo::StringData, mongo::Duration<std::ratio<1l, 1000000000l> >, mpark::variant<mongo::StringData<1l, 1000000l> >, mpark::variant<mongo::StringData<1l, 1000l> >, mpark::variant<mongo::StringData<1l, 1l> >, mpark::variant<mongo::StringData<60l, 1l> >, mpark::variant<mongo::StringData<3600l, 1l> >, mpark::variant<mongo::StringData<86400l, 1l> >, mongo::BSONObj, mongo::BSONArray, mongo::logv2::CustomAttributeValue> const&>(mongo::logv2::detail::UnstructuredValueExtractor&, mpark::variant<int, unsigned int, long long, unsigned long long, bool, double, mongo::StringData, mongo::Duration<std::ratio<1l, 1000000000l> >, mpark::variant<mongo::StringData<1l, 1000000l> >, mpark::variant<mongo::StringData<1l, 1000l> >, mpark::variant<mongo::StringData<1l, 1l> >, mpark::variant<mongo::StringData<60l, 1l> >, mpark::variant<mongo::StringData<3600l, 1l> >, mpark::variant<mongo::StringData<86400l, 1l> >, mongo::BSONObj, mongo::BSONArray, mongo::logv2::CustomAttributeValue> const&) (visitor=..., vs=...) at src/third_party/variant-1.4.0/include/mpark/variant.hpp:935
      935	          DECLTYPE_AUTO_RETURN(alt::visit_alt(lib::forward<Visitor>(visitor),
      (gdb) 
      #21 0x00007fffe6c1bef7 in mpark::detail::visitation::variant::visit_value<mongo::logv2::TypeErasedAttributeStorage::apply<mongo::logv2::detail::UnstructuredValueExtractor&>(mongo::logv2::detail::UnstructuredValueExtractor&) const::{lambda(mongo::logv2::detail::NamedAttribute const&)#1}::operator()(mongo::logv2::detail::NamedAttribute const&) const::{lambda(auto:1&&)#1}, mpark::variant<int, unsigned int, long long, unsigned long long, bool, double, mongo::StringData, mongo::Duration<std::ratio<1l, 1000000000l> >, mpark::variant<mongo::StringData<1l, 1000000l> >, mpark::variant<mongo::StringData<1l, 1000l> >, mpark::variant<mongo::StringData<1l, 1l> >, mpark::variant<mongo::StringData<60l, 1l> >, mpark::variant<mongo::StringData<3600l, 1l> >, mpark::variant<mongo::StringData<86400l, 1l> >, mongo::BSONObj, mongo::BSONArray, mongo::logv2::CustomAttributeValue> const&>(mongo::logv2::detail::UnstructuredValueExtractor&, mpark::variant<int, unsigned int, long long, unsigned long long, bool, double, mongo::StringData, mongo::Duration<std::ratio<1l, 1000000000l> >, mpark::variant<mongo::StringData<1l, 1000000l> >, mpark::variant<mongo::StringData<1l, 1000l> >, mpark::variant<mongo::StringData<1l, 1l> >, mpark::variant<mongo::StringData<60l, 1l> >, mpark::variant<mongo::StringData<3600l, 1l> >, mpark::variant<mongo::StringData<86400l, 1l> >, mongo::BSONObj, mongo::BSONArray, mongo::logv2::CustomAttributeValue> const&) (visitor=..., vs=...) at src/third_party/variant-1.4.0/include/mpark/variant.hpp:950
      950	          DECLTYPE_AUTO_RETURN(
      (gdb) 
      #22 0x00007fffe6c1be83 in mpark::visit<mongo::logv2::TypeErasedAttributeStorage::apply<mongo::logv2::detail::UnstructuredValueExtractor&>(mongo::logv2::detail::UnstructuredValueExtractor&) const::{lambda(mongo::logv2::detail::NamedAttribute const&)#1}::operator()(mongo::logv2::detail::NamedAttribute const&) const::{lambda(auto:1&&)#1}, mpark::variant<int, unsigned int, long long, unsigned long long, bool, double, mongo::StringData, mongo::Duration<std::ratio<1l, 1000000000l> >, mpark::variant<mongo::StringData<1l, 1000000l> >, mpark::variant<mongo::StringData<1l, 1000l> >, mpark::variant<mongo::StringData<1l, 1l> >, mpark::variant<mongo::StringData<60l, 1l> >, mpark::variant<mongo::StringData<3600l, 1l> >, mpark::variant<mongo::StringData<86400l, 1l> >, mongo::BSONObj, mongo::BSONArray, mongo::logv2::CustomAttributeValue> const&>(mongo::logv2::detail::UnstructuredValueExtractor&, mpark::variant<int, unsigned int, long long, unsigned long long, bool, double, mongo::StringData, mongo::Duration<std::ratio<1l, 1000000000l> >, mpark::variant<mongo::StringData<1l, 1000000l> >, mpark::variant<mongo::StringData<1l, 1000l> >, mpark::variant<mongo::StringData<1l, 1l> >, mpark::variant<mongo::StringData<60l, 1l> >, mpark::variant<mongo::StringData<3600l, 1l> >, mpark::variant<mongo::StringData<86400l, 1l> >, mongo::BSONObj, mongo::BSONArray, mongo::logv2::CustomAttributeValue> const&) (visitor=..., vs=...) at src/third_party/variant-1.4.0/include/mpark/variant.hpp:2011
      2011	           detail::visitation::variant::visit_value(
      (gdb) 
      #23 0x00007fffe6c1bddf in mongo::logv2::TypeErasedAttributeStorage::apply<mongo::logv2::detail::UnstructuredValueExtractor&>(mongo::logv2::detail::UnstructuredValueExtractor&) const::{lambda(mongo::logv2::detail::NamedAttribute const&)#1}::operator()(mongo::logv2::detail::NamedAttribute const&) const (this=0x7fffffff6578, attr=...) at src/mongo/logv2/attribute_storage.h:712
      712	            stdx::visit([name, &f](auto&& val) { f(name, val); }, attr.value);
      (gdb) 
      #24 0x00007fffe6c1bd3c in std::for_each<mongo::logv2::detail::NamedAttribute const*, mongo::logv2::TypeErasedAttributeStorage::apply<mongo::logv2::detail::UnstructuredValueExtractor&>(mongo::logv2::detail::UnstructuredValueExtractor&) const::{lambda(mongo::logv2::detail::NamedAttribute const&)#1}>(mongo::logv2::detail::NamedAttribute const*, mongo::logv2::detail::NamedAttribute const*, mongo::logv2::TypeErasedAttributeStorage::apply<mongo::logv2::detail::UnstructuredValueExtractor&>(mongo::logv2::detail::UnstructuredValueExtractor&) const::{lambda(mongo::logv2::detail::NamedAttribute const&)#1}) (__first=0x7fffffff6a20, __last=0x7fffffff6ad8, __f=...) at /opt/mongodbtoolchain/revisions/e5348beb43e147b74a40f4ca5fb05a330ea646cf/stow/gcc-v3.2dR/lib/gcc/x86_64-mongodb-linux/8.2.0/../../../../include/c++/8.2.0/bits/stl_algo.h:3882
      3882		__f(*__first);
      (gdb) 
      #25 0x00007fffe6c170b9 in mongo::logv2::TypeErasedAttributeStorage::apply<mongo::logv2::detail::UnstructuredValueExtractor&> (this=0x7fffffff6970, f=...) at src/mongo/logv2/attribute_storage.h:710
      710	        std::for_each(_data, _data + _size, [&f](const detail::NamedAttribute& attr) {
      (gdb) 
      #26 0x00007fffe6c16054 in mongo::logv2::detail::doUnstructuredLogImpl (severity=..., options=..., message="Aggregate privileges: {}", attrs=...) at src/mongo/logv2/log_detail.cpp:173
      173	    attrs.apply(extractor);
      (gdb) 
      #27 0x00007fffed7c3cd5 in mongo::logv2::logd_detail::logd<0ul, std::vector<mongo::Privilege, std::allocator<mongo::Privilege> > > (message="Aggregate privileges: {}", args=std::vector of length 2, capacity 2 = {...}) at src/mongo/logv2/log_debug.h:54
      54	    detail::doUnstructuredLogImpl(LogSeverity::Log(),  // NOLINT
      (gdb) 
      #28 0x00007fffed7b3e1a in mongo::logd<std::vector<mongo::Privilege, std::allocator<mongo::Privilege> > > (message="Aggregate privileges: {}", args=std::vector of length 2, capacity 2 = {...}) at src/mongo/logv2/log_debug.h:69
      69	    logv2::logd_detail::logd(std::index_sequence_for<Args...>{}, message, args...);  // NOLINT
      (gdb) 
      #29 0x00007fffdc67ab9d in mongo::runAggregate (opCtx=0x7fffd6c1da60, origNss=..., request=..., liteParsedPipeline=..., cmdObj=owned BSONObj 2771 bytes @ 0x7fffd4eb923d = {...}, privileges=std::vector of length 2, capacity 2 = {...}, result=0x7fffd6ab6fa0) at src/mongo/db/commands/run_aggregate.cpp:496
      496	    logd("Aggregate privileges: {}", privileges);
      

            Assignee:
            mark.benvenuto@mongodb.com Mark Benvenuto
            Reporter:
            daniel.gottlieb@mongodb.com Daniel Gottlieb (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved: