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);