-
Type: Bug
-
Resolution: Duplicate
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Fully Compatible
An update that modifies a document so as to increase its nesting depth to about 3000 produces a segfault due to a deeply nested recursion with the following stack trace:
... #6109 0x000000000099f857 in void mongo::mutablebson::Document::Impl::writeChildren<mongo::BSONObjBuilder>(unsigned int, mongo::BSONObjBuilder*) const () #6110 0x000000000099f3d6 in void mongo::mutablebson::Document::Impl::writeElement<mongo::BSONObjBuilder>(unsigned int, mongo::BSONObjBuilder*, mongo::StringData const*) const () #6111 0x000000000099f857 in void mongo::mutablebson::Document::Impl::writeChildren<mongo::BSONObjBuilder>(unsigned int, mongo::BSONObjBuilder*) const () #6112 0x000000000099f3d6 in void mongo::mutablebson::Document::Impl::writeElement<mongo::BSONObjBuilder>(unsigned int, mongo::BSONObjBuilder*, mongo::StringData const*) const () #6113 0x000000000099f857 in void mongo::mutablebson::Document::Impl::writeChildren<mongo::BSONObjBuilder>(unsigned int, mongo::BSONObjBuilder*) const () #6114 0x000000000099f3d6 in void mongo::mutablebson::Document::Impl::writeElement<mongo::BSONObjBuilder>(unsigned int, mongo::BSONObjBuilder*, mongo::StringData const*) const () #6115 0x000000000099f857 in void mongo::mutablebson::Document::Impl::writeChildren<mongo::BSONObjBuilder>(unsigned int, mongo::BSONObjBuilder*) const () #6116 0x000000000099f3d6 in void mongo::mutablebson::Document::Impl::writeElement<mongo::BSONObjBuilder>(unsigned int, mongo::BSONObjBuilder*, mongo::StringData const*) const () #6117 0x000000000099f857 in void mongo::mutablebson::Document::Impl::writeChildren<mongo::BSONObjBuilder>(unsigned int, mongo::BSONObjBuilder*) const () #6118 0x000000000099f3d6 in void mongo::mutablebson::Document::Impl::writeElement<mongo::BSONObjBuilder>(unsigned int, mongo::BSONObjBuilder*, mongo::StringData const*) const () #6119 0x000000000099f857 in void mongo::mutablebson::Document::Impl::writeChildren<mongo::BSONObjBuilder>(unsigned int, mongo::BSONObjBuilder*) const () #6120 0x0000000000a4c708 in mongo::mutablebson::Document::getObject() const () #6121 0x0000000000befdd4 in mongo::UpdateStage::transformAndUpdate(mongo::Snapshotted<mongo::BSONObj> const&, mongo::RecordId&) () #6122 0x0000000000bf0938 in mongo::UpdateStage::work(unsigned long*) () #6123 0x0000000000e05f25 in mongo::PlanExecutor::getNextImpl(mongo::Snapshotted<mongo::BSONObj>*, mongo::RecordId*) () #6124 0x0000000000e065e9 in mongo::PlanExecutor::getNext(mongo::BSONObj*, mongo::RecordId*) () #6125 0x0000000000e066e5 in mongo::PlanExecutor::executePlan() ()
or the following stack trace, depending on the circumstances:
... #5124 0x0000000000bed839 in mongo::(anonymous namespace)::storageValidChildren(mongo::mutablebson::ConstElement const&, bool) () #5125 0x0000000000becb67 in mongo::(anonymous namespace)::storageValid(mongo::mutablebson::ConstElement const&, bool) () #5126 0x0000000000bed839 in mongo::(anonymous namespace)::storageValidChildren(mongo::mutablebson::ConstElement const&, bool) () #5127 0x0000000000becb67 in mongo::(anonymous namespace)::storageValid(mongo::mutablebson::ConstElement const&, bool) () #5128 0x0000000000bed839 in mongo::(anonymous namespace)::storageValidChildren(mongo::mutablebson::ConstElement const&, bool) () #5129 0x0000000000becb67 in mongo::(anonymous namespace)::storageValid(mongo::mutablebson::ConstElement const&, bool) () #5130 0x0000000000bed839 in mongo::(anonymous namespace)::storageValidChildren(mongo::mutablebson::ConstElement const&, bool) () #5131 0x0000000000becb67 in mongo::(anonymous namespace)::storageValid(mongo::mutablebson::ConstElement const&, bool) () #5132 0x0000000000bed839 in mongo::(anonymous namespace)::storageValidChildren(mongo::mutablebson::ConstElement const&, bool) () #5133 0x0000000000becb67 in mongo::(anonymous namespace)::storageValid(mongo::mutablebson::ConstElement const&, bool) () #5134 0x0000000000bee108 in mongo::(anonymous namespace)::validate(mongo::BSONObj const&, mongo::FieldRefSet const&, mongo::mutablebson::Document const&, std::vector<mongo::FieldRef*, std::allocator<mongo::FieldRef*> > const*, mongo::ModifierInterface::Options const&) () #5135 0x0000000000bef8db in mongo::UpdateStage::transformAndUpdate(mongo::Snapshotted<mongo::BSONObj> const&, mongo::RecordId&) () #5136 0x0000000000bf0938 in mongo::UpdateStage::work(unsigned long*) () #5137 0x0000000000e05f25 in mongo::PlanExecutor::getNextImpl(mongo::Snapshotted<mongo::BSONObj>*, mongo::RecordId*) () #5138 0x0000000000e065e9 in mongo::PlanExecutor::getNext(mongo::BSONObj*, mongo::RecordId*) () #5139 0x0000000000e066e5 in mongo::PlanExecutor::executePlan() () #5140 0x0000000000b66939 in mongo::WriteBatchExecutor::execUpdate(mongo::BatchItemRef const&, mongo::BSONObj*, mongo::WriteErrorDetail**) ()
- duplicates
-
SERVER-26703 Inserting deeply-nested documents should fail with error
- Closed