[SERVER-15758] Memory leak when running find_dedup.js test Created: 21/Oct/14  Updated: 16/Jan/15  Resolved: 03/Nov/14

Status: Closed
Project: Core Server
Component/s: Querying
Affects Version/s: None
Fix Version/s: 2.8.0-rc0

Type: Bug Priority: Major - P3
Reporter: Andrew Morrow (Inactive) Assignee: David Storch
Resolution: Done Votes: 0
Labels: 28qa, address-sanitizer, leak-sanitizer, memory-leak
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
is related to SERVER-16889 Query subsystem public API should use... Closed
Backwards Compatibility: Fully Compatible
Operating System: ALL
Steps To Reproduce:
  • Build mongod with address sanitizer enabled by passing the --sanitize=address flag to the build
  • Start mongod with the leak sanitizer enabled:
    • LSAN_OPTIONS="suppressions=etc/lsan.suppressions" ASAN_OPTIONS=detect_leaks=1 ASAN_SYMBOLIZER_PATH=<path-to-symbolizer> ./mongod
  • Run mongo jstests/core/find_dedup.js

Please ask acm for the suppressions file as it is not yet checked in.

Participants:

 Description   

The leak sanitizer is reporting the following when running find_dedup.js:

=================================================================
==3042==ERROR: LeakSanitizer: detected memory leaks
 
Direct leak of 80 byte(s) in 2 object(s) allocated from:
    #0 0x92ab79 in operator new(unsigned long) (/home/andrew/Documents/10gen/dev/src/mongodb/mongod+0x92ab79)
    #1 0x1946dd7 in mongo::QueryPlannerAnalysis::analyzeDataAccess(mongo::CanonicalQuery const&, mongo::QueryPlannerParams const&, mongo::QuerySolutionNode*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/planner_analysis.cpp:519
    #2 0x19776b1 in mongo::QueryPlanner::plan(mongo::CanonicalQuery const&, mongo::QueryPlannerParams const&, std::vector<mongo::QuerySolution*, std::allocator<mongo::QuerySolution*> >*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/query_planner.cpp:921
    #3 0x1274b61 in mongo::SubplanStage::choosePlanWholeQuery(mongo::PlanYieldPolicy*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/exec/subplan.cpp:371
    #4 0x12778a9 in mongo::SubplanStage::pickBestPlan(mongo::PlanYieldPolicy*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/exec/subplan.cpp:441
    #5 0x191e3ae in boost::scoped_ptr<mongo::PlanYieldPolicy>::get() const /home/andrew/Documents/10gen/dev/src/mongodb/src/third_party/boost/boost/smart_ptr/scoped_ptr.hpp:103
    #6 0x191e3ae in mongo::PlanExecutor::pickBestPlan(mongo::PlanExecutor::YieldPolicy) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:173
    #7 0x191e3ae in mongo::PlanExecutor::make(mongo::OperationContext*, mongo::WorkingSet*, mongo::PlanStage*, mongo::QuerySolution*, mongo::CanonicalQuery*, mongo::Collection const*, std::string const&, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:125
    #8 0x191ed19 in mongo::PlanExecutor::make(mongo::OperationContext*, mongo::WorkingSet*, mongo::PlanStage*, mongo::QuerySolution*, mongo::CanonicalQuery*, mongo::Collection const*, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:109
    #9 0x18575d7 in mongo::getExecutor(mongo::OperationContext*, mongo::Collection*, mongo::CanonicalQuery*, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**, unsigned long) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/get_executor.cpp:407
    #10 0x18d265c in mongo::newRunQuery(mongo::OperationContext*, mongo::Message&, mongo::QueryMessage&, mongo::CurOp&, mongo::Message&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/new_find.cpp:598
    #11 0x14137d4 in mongo::receivedQuery(mongo::OperationContext*, mongo::Client&, mongo::DbResponse&, mongo::Message&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/instance.cpp:272
    #12 0x14137d4 in mongo::assembleResponse(mongo::OperationContext*, mongo::Message&, mongo::DbResponse&, mongo::HostAndPort const&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/instance.cpp:445
    #13 0x9618f9 in mongo::MyMessageHandler::process(mongo::Message&, mongo::AbstractMessagingPort*, mongo::LastError*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/db.cpp:184
    #14 0x26481f8 in mongo::PortMessageServer::handleIncomingMsg(void*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/util/net/message_server_port.cpp:234
    #15 0x7f53cd3d5181 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x8181)
 
Indirect leak of 1024 byte(s) in 4 object(s) allocated from:
    #0 0x92ab79 in operator new(unsigned long) (/home/andrew/Documents/10gen/dev/src/mongodb/mongod+0x92ab79)
    #1 0x14b33a6 in mongo::InMatchExpression::shallowClone() const /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/matcher/expression_leaf.cpp:596
    #2 0x14e9b85 in mongo::OrMatchExpression::shallowClone() const /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/matcher/expression_tree.h:111
    #3 0x192c214 in mongo::QueryPlannerAccess::makeCollectionScan(mongo::CanonicalQuery const&, bool, mongo::QueryPlannerParams const&) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/planner_access.cpp:72
    #4 0x1977699 in mongo::QueryPlanner::plan(mongo::CanonicalQuery const&, mongo::QueryPlannerParams const&, std::vector<mongo::QuerySolution*, std::allocator<mongo::QuerySolution*> >*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/query_planner.cpp:921
    #5 0x1274b61 in mongo::SubplanStage::choosePlanWholeQuery(mongo::PlanYieldPolicy*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/exec/subplan.cpp:371
    #6 0x12778a9 in mongo::SubplanStage::pickBestPlan(mongo::PlanYieldPolicy*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/exec/subplan.cpp:441
    #7 0x191e3ae in boost::scoped_ptr<mongo::PlanYieldPolicy>::get() const /home/andrew/Documents/10gen/dev/src/mongodb/src/third_party/boost/boost/smart_ptr/scoped_ptr.hpp:103
    #8 0x191e3ae in mongo::PlanExecutor::pickBestPlan(mongo::PlanExecutor::YieldPolicy) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:173
    #9 0x191e3ae in mongo::PlanExecutor::make(mongo::OperationContext*, mongo::WorkingSet*, mongo::PlanStage*, mongo::QuerySolution*, mongo::CanonicalQuery*, mongo::Collection const*, std::string const&, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:125
    #10 0x191ed19 in mongo::PlanExecutor::make(mongo::OperationContext*, mongo::WorkingSet*, mongo::PlanStage*, mongo::QuerySolution*, mongo::CanonicalQuery*, mongo::Collection const*, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:109
    #11 0x18575d7 in mongo::getExecutor(mongo::OperationContext*, mongo::Collection*, mongo::CanonicalQuery*, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**, unsigned long) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/get_executor.cpp:407
    #12 0x18d265c in mongo::newRunQuery(mongo::OperationContext*, mongo::Message&, mongo::QueryMessage&, mongo::CurOp&, mongo::Message&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/new_find.cpp:598
    #13 0x14137d4 in mongo::receivedQuery(mongo::OperationContext*, mongo::Client&, mongo::DbResponse&, mongo::Message&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/instance.cpp:272
    #14 0x14137d4 in mongo::assembleResponse(mongo::OperationContext*, mongo::Message&, mongo::DbResponse&, mongo::HostAndPort const&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/instance.cpp:445
    #15 0x9618f9 in mongo::MyMessageHandler::process(mongo::Message&, mongo::AbstractMessagingPort*, mongo::LastError*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/db.cpp:184
    #16 0x26481f8 in mongo::PortMessageServer::handleIncomingMsg(void*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/util/net/message_server_port.cpp:234
    #17 0x7f53cd3d5181 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x8181)
 
Indirect leak of 240 byte(s) in 2 object(s) allocated from:
    #0 0x92ab79 in operator new(unsigned long) (/home/andrew/Documents/10gen/dev/src/mongodb/mongod+0x92ab79)
    #1 0x192c181 in mongo::QueryPlannerAccess::makeCollectionScan(mongo::CanonicalQuery const&, bool, mongo::QueryPlannerParams const&) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/planner_access.cpp:70
    #2 0x1977699 in mongo::QueryPlanner::plan(mongo::CanonicalQuery const&, mongo::QueryPlannerParams const&, std::vector<mongo::QuerySolution*, std::allocator<mongo::QuerySolution*> >*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/query_planner.cpp:921
    #3 0x1274b61 in mongo::SubplanStage::choosePlanWholeQuery(mongo::PlanYieldPolicy*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/exec/subplan.cpp:371
    #4 0x12778a9 in mongo::SubplanStage::pickBestPlan(mongo::PlanYieldPolicy*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/exec/subplan.cpp:441
    #5 0x191e3ae in boost::scoped_ptr<mongo::PlanYieldPolicy>::get() const /home/andrew/Documents/10gen/dev/src/mongodb/src/third_party/boost/boost/smart_ptr/scoped_ptr.hpp:103
    #6 0x191e3ae in mongo::PlanExecutor::pickBestPlan(mongo::PlanExecutor::YieldPolicy) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:173
    #7 0x191e3ae in mongo::PlanExecutor::make(mongo::OperationContext*, mongo::WorkingSet*, mongo::PlanStage*, mongo::QuerySolution*, mongo::CanonicalQuery*, mongo::Collection const*, std::string const&, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:125
    #8 0x191ed19 in mongo::PlanExecutor::make(mongo::OperationContext*, mongo::WorkingSet*, mongo::PlanStage*, mongo::QuerySolution*, mongo::CanonicalQuery*, mongo::Collection const*, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:109
    #9 0x18575d7 in mongo::getExecutor(mongo::OperationContext*, mongo::Collection*, mongo::CanonicalQuery*, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**, unsigned long) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/get_executor.cpp:407
    #10 0x18d265c in mongo::newRunQuery(mongo::OperationContext*, mongo::Message&, mongo::QueryMessage&, mongo::CurOp&, mongo::Message&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/new_find.cpp:598
    #11 0x14137d4 in mongo::receivedQuery(mongo::OperationContext*, mongo::Client&, mongo::DbResponse&, mongo::Message&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/instance.cpp:272
    #12 0x14137d4 in mongo::assembleResponse(mongo::OperationContext*, mongo::Message&, mongo::DbResponse&, mongo::HostAndPort const&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/instance.cpp:445
    #13 0x9618f9 in mongo::MyMessageHandler::process(mongo::Message&, mongo::AbstractMessagingPort*, mongo::LastError*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/db.cpp:184
    #14 0x26481f8 in mongo::PortMessageServer::handleIncomingMsg(void*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/util/net/message_server_port.cpp:234
    #15 0x7f53cd3d5181 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x8181)
 
Indirect leak of 230 byte(s) in 2 object(s) allocated from:
    #0 0x92a4f9 in __interceptor_malloc (/home/andrew/Documents/10gen/dev/src/mongodb/mongod+0x92a4f9)
    #1 0x25cddea in mongo::mongoMalloc(unsigned long) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/util/allocator.cpp:39
    #2 0x9d2e33 in mongo::BSONObj::copy() const /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/bson/bsonobj.cpp:76
    #3 0x9d2e33 in mongo::BSONObj::getOwned() const /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/bson/bsonobj.cpp:84
    #4 0x18c699b in mongo::LiteParsedQuery::init(std::string const&, int, int, int, mongo::BSONObj const&, mongo::BSONObj const&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/lite_parsed_query.cpp:688
    #5 0x18c5c14 in mongo::LiteParsedQuery::make(mongo::QueryMessage const&, mongo::LiteParsedQuery**) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/lite_parsed_query.cpp:621
    #6 0x182f5ab in mongo::CanonicalQuery::canonicalize(mongo::QueryMessage const&, mongo::CanonicalQuery**, mongo::MatchExpressionParser::WhereCallback const&) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/canonical_query.cpp:428
    #7 0x18d203c in mongo::newRunQuery(mongo::OperationContext*, mongo::Message&, mongo::QueryMessage&, mongo::CurOp&, mongo::Message&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/new_find.cpp:554
    #8 0x14137d4 in mongo::receivedQuery(mongo::OperationContext*, mongo::Client&, mongo::DbResponse&, mongo::Message&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/instance.cpp:272
    #9 0x14137d4 in mongo::assembleResponse(mongo::OperationContext*, mongo::Message&, mongo::DbResponse&, mongo::HostAndPort const&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/instance.cpp:445
    #10 0x9618f9 in mongo::MyMessageHandler::process(mongo::Message&, mongo::AbstractMessagingPort*, mongo::LastError*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/db.cpp:184
    #11 0x26481f8 in mongo::PortMessageServer::handleIncomingMsg(void*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/util/net/message_server_port.cpp:234
    #12 0x7f53cd3d5181 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x8181)
 
Indirect leak of 192 byte(s) in 4 object(s) allocated from:
    #0 0x92ab79 in operator new(unsigned long) (/home/andrew/Documents/10gen/dev/src/mongodb/mongod+0x92ab79)
    #1 0x14b70a3 in __gnu_cxx::new_allocator<std::_Rb_tree_node<mongo::BSONElement> >::allocate(unsigned long, void const*) /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/ext/new_allocator.h:104
    #2 0x14b70a3 in std::_Rb_tree<mongo::BSONElement, mongo::BSONElement, std::_Identity<mongo::BSONElement>, mongo::BSONElementCmpWithoutField, std::allocator<mongo::BSONElement> >::_M_get_node() /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/stl_tree.h:370
    #3 0x14b70a3 in std::_Rb_tree_node<mongo::BSONElement>* std::_Rb_tree<mongo::BSONElement, mongo::BSONElement, std::_Identity<mongo::BSONElement>, mongo::BSONElementCmpWithoutField, std::allocator<mongo::BSONElement> >::_M_create_node<mongo::BSONElement const&>(mongo::BSONElement const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/stl_tree.h:403
    #4 0x14b70a3 in std::_Rb_tree<mongo::BSONElement, mongo::BSONElement, std::_Identity<mongo::BSONElement>, mongo::BSONElementCmpWithoutField, std::allocator<mongo::BSONElement> >::_M_clone_node(std::_Rb_tree_node<mongo::BSONElement> const*) /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/stl_tree.h:429
    #5 0x14b70a3 in std::_Rb_tree<mongo::BSONElement, mongo::BSONElement, std::_Identity<mongo::BSONElement>, mongo::BSONElementCmpWithoutField, std::allocator<mongo::BSONElement> >::_M_copy(std::_Rb_tree_node<mongo::BSONElement> const*, std::_Rb_tree_node<mongo::BSONElement>*) /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/stl_tree.h:1087
    #6 0x14b0408 in std::_Rb_tree<mongo::BSONElement, mongo::BSONElement, std::_Identity<mongo::BSONElement>, mongo::BSONElementCmpWithoutField, std::allocator<mongo::BSONElement> >::operator=(std::_Rb_tree<mongo::BSONElement, mongo::BSONElement, std::_Identity<mongo::BSONElement>, mongo::BSONElementCmpWithoutField, std::allocator<mongo::BSONElement> > const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/stl_tree.h:997
    #7 0x14b0408 in std::set<mongo::BSONElement, mongo::BSONElementCmpWithoutField, std::allocator<mongo::BSONElement> >::operator=(std::set<mongo::BSONElement, mongo::BSONElementCmpWithoutField, std::allocator<mongo::BSONElement> > const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/stl_set.h:235
    #8 0x14b0408 in mongo::ArrayFilterEntries::copyTo(mongo::ArrayFilterEntries&) const /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/matcher/expression_leaf.cpp:497
    #9 0x14b39c3 in mongo::InMatchExpression::copyTo(mongo::InMatchExpression*) const /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/matcher/expression_leaf.cpp:606
    #10 0x14b35a0 in mongo::InMatchExpression::shallowClone() const /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/matcher/expression_leaf.cpp:597
    #11 0x14e9b85 in mongo::OrMatchExpression::shallowClone() const /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/matcher/expression_tree.h:111
    #12 0x192c214 in mongo::QueryPlannerAccess::makeCollectionScan(mongo::CanonicalQuery const&, bool, mongo::QueryPlannerParams const&) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/planner_access.cpp:72
    #13 0x1977699 in mongo::QueryPlanner::plan(mongo::CanonicalQuery const&, mongo::QueryPlannerParams const&, std::vector<mongo::QuerySolution*, std::allocator<mongo::QuerySolution*> >*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/query_planner.cpp:921
    #14 0x1274b61 in mongo::SubplanStage::choosePlanWholeQuery(mongo::PlanYieldPolicy*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/exec/subplan.cpp:371
    #15 0x12778a9 in mongo::SubplanStage::pickBestPlan(mongo::PlanYieldPolicy*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/exec/subplan.cpp:441
    #16 0x191e3ae in boost::scoped_ptr<mongo::PlanYieldPolicy>::get() const /home/andrew/Documents/10gen/dev/src/mongodb/src/third_party/boost/boost/smart_ptr/scoped_ptr.hpp:103
    #17 0x191e3ae in mongo::PlanExecutor::pickBestPlan(mongo::PlanExecutor::YieldPolicy) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:173
    #18 0x191e3ae in mongo::PlanExecutor::make(mongo::OperationContext*, mongo::WorkingSet*, mongo::PlanStage*, mongo::QuerySolution*, mongo::CanonicalQuery*, mongo::Collection const*, std::string const&, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:125
    #19 0x191ed19 in mongo::PlanExecutor::make(mongo::OperationContext*, mongo::WorkingSet*, mongo::PlanStage*, mongo::QuerySolution*, mongo::CanonicalQuery*, mongo::Collection const*, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:109
    #20 0x18575d7 in mongo::getExecutor(mongo::OperationContext*, mongo::Collection*, mongo::CanonicalQuery*, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**, unsigned long) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/get_executor.cpp:407
    #21 0x18d265c in mongo::newRunQuery(mongo::OperationContext*, mongo::Message&, mongo::QueryMessage&, mongo::CurOp&, mongo::Message&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/new_find.cpp:598
    #22 0x14137d4 in mongo::receivedQuery(mongo::OperationContext*, mongo::Client&, mongo::DbResponse&, mongo::Message&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/instance.cpp:272
    #23 0x14137d4 in mongo::assembleResponse(mongo::OperationContext*, mongo::Message&, mongo::DbResponse&, mongo::HostAndPort const&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/instance.cpp:445
    #24 0x9618f9 in mongo::MyMessageHandler::process(mongo::Message&, mongo::AbstractMessagingPort*, mongo::LastError*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/db.cpp:184
    #25 0x26481f8 in mongo::PortMessageServer::handleIncomingMsg(void*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/util/net/message_server_port.cpp:234
    #26 0x7f53cd3d5181 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x8181)
 
Indirect leak of 192 byte(s) in 4 object(s) allocated from:
    #0 0x92ab79 in operator new(unsigned long) (/home/andrew/Documents/10gen/dev/src/mongodb/mongod+0x92ab79)
    #1 0x14b70a3 in __gnu_cxx::new_allocator<std::_Rb_tree_node<mongo::BSONElement> >::allocate(unsigned long, void const*) /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/ext/new_allocator.h:104
    #2 0x14b70a3 in std::_Rb_tree<mongo::BSONElement, mongo::BSONElement, std::_Identity<mongo::BSONElement>, mongo::BSONElementCmpWithoutField, std::allocator<mongo::BSONElement> >::_M_get_node() /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/stl_tree.h:370
    #3 0x14b70a3 in std::_Rb_tree_node<mongo::BSONElement>* std::_Rb_tree<mongo::BSONElement, mongo::BSONElement, std::_Identity<mongo::BSONElement>, mongo::BSONElementCmpWithoutField, std::allocator<mongo::BSONElement> >::_M_create_node<mongo::BSONElement const&>(mongo::BSONElement const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/stl_tree.h:403
    #4 0x14b70a3 in std::_Rb_tree<mongo::BSONElement, mongo::BSONElement, std::_Identity<mongo::BSONElement>, mongo::BSONElementCmpWithoutField, std::allocator<mongo::BSONElement> >::_M_clone_node(std::_Rb_tree_node<mongo::BSONElement> const*) /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/stl_tree.h:429
    #5 0x14b70a3 in std::_Rb_tree<mongo::BSONElement, mongo::BSONElement, std::_Identity<mongo::BSONElement>, mongo::BSONElementCmpWithoutField, std::allocator<mongo::BSONElement> >::_M_copy(std::_Rb_tree_node<mongo::BSONElement> const*, std::_Rb_tree_node<mongo::BSONElement>*) /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/stl_tree.h:1087
    #6 0x14b7264 in std::_Rb_tree<mongo::BSONElement, mongo::BSONElement, std::_Identity<mongo::BSONElement>, mongo::BSONElementCmpWithoutField, std::allocator<mongo::BSONElement> >::_M_copy(std::_Rb_tree_node<mongo::BSONElement> const*, std::_Rb_tree_node<mongo::BSONElement>*) /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/stl_tree.h:1093
    #7 0x14b0408 in std::_Rb_tree<mongo::BSONElement, mongo::BSONElement, std::_Identity<mongo::BSONElement>, mongo::BSONElementCmpWithoutField, std::allocator<mongo::BSONElement> >::operator=(std::_Rb_tree<mongo::BSONElement, mongo::BSONElement, std::_Identity<mongo::BSONElement>, mongo::BSONElementCmpWithoutField, std::allocator<mongo::BSONElement> > const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/stl_tree.h:997
    #8 0x14b0408 in std::set<mongo::BSONElement, mongo::BSONElementCmpWithoutField, std::allocator<mongo::BSONElement> >::operator=(std::set<mongo::BSONElement, mongo::BSONElementCmpWithoutField, std::allocator<mongo::BSONElement> > const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/stl_set.h:235
    #9 0x14b0408 in mongo::ArrayFilterEntries::copyTo(mongo::ArrayFilterEntries&) const /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/matcher/expression_leaf.cpp:497
    #10 0x14b39c3 in mongo::InMatchExpression::copyTo(mongo::InMatchExpression*) const /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/matcher/expression_leaf.cpp:606
    #11 0x14b35a0 in mongo::InMatchExpression::shallowClone() const /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/matcher/expression_leaf.cpp:597
    #12 0x14e9b85 in mongo::OrMatchExpression::shallowClone() const /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/matcher/expression_tree.h:111
    #13 0x192c214 in mongo::QueryPlannerAccess::makeCollectionScan(mongo::CanonicalQuery const&, bool, mongo::QueryPlannerParams const&) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/planner_access.cpp:72
    #14 0x1977699 in mongo::QueryPlanner::plan(mongo::CanonicalQuery const&, mongo::QueryPlannerParams const&, std::vector<mongo::QuerySolution*, std::allocator<mongo::QuerySolution*> >*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/query_planner.cpp:921
    #15 0x1274b61 in mongo::SubplanStage::choosePlanWholeQuery(mongo::PlanYieldPolicy*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/exec/subplan.cpp:371
    #16 0x12778a9 in mongo::SubplanStage::pickBestPlan(mongo::PlanYieldPolicy*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/exec/subplan.cpp:441
    #17 0x191e3ae in boost::scoped_ptr<mongo::PlanYieldPolicy>::get() const /home/andrew/Documents/10gen/dev/src/mongodb/src/third_party/boost/boost/smart_ptr/scoped_ptr.hpp:103
    #18 0x191e3ae in mongo::PlanExecutor::pickBestPlan(mongo::PlanExecutor::YieldPolicy) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:173
    #19 0x191e3ae in mongo::PlanExecutor::make(mongo::OperationContext*, mongo::WorkingSet*, mongo::PlanStage*, mongo::QuerySolution*, mongo::CanonicalQuery*, mongo::Collection const*, std::string const&, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:125
    #20 0x191ed19 in mongo::PlanExecutor::make(mongo::OperationContext*, mongo::WorkingSet*, mongo::PlanStage*, mongo::QuerySolution*, mongo::CanonicalQuery*, mongo::Collection const*, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:109
    #21 0x18575d7 in mongo::getExecutor(mongo::OperationContext*, mongo::Collection*, mongo::CanonicalQuery*, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**, unsigned long) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/get_executor.cpp:407
    #22 0x18d265c in mongo::newRunQuery(mongo::OperationContext*, mongo::Message&, mongo::QueryMessage&, mongo::CurOp&, mongo::Message&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/new_find.cpp:598
    #23 0x14137d4 in mongo::receivedQuery(mongo::OperationContext*, mongo::Client&, mongo::DbResponse&, mongo::Message&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/instance.cpp:272
    #24 0x14137d4 in mongo::assembleResponse(mongo::OperationContext*, mongo::Message&, mongo::DbResponse&, mongo::HostAndPort const&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/instance.cpp:445
    #25 0x9618f9 in mongo::MyMessageHandler::process(mongo::Message&, mongo::AbstractMessagingPort*, mongo::LastError*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/db.cpp:184
    #26 0x26481f8 in mongo::PortMessageServer::handleIncomingMsg(void*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/util/net/message_server_port.cpp:234
    #27 0x7f53cd3d5181 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x8181)
 
Indirect leak of 104 byte(s) in 4 object(s) allocated from:
    #0 0x92ab79 in operator new(unsigned long) (/home/andrew/Documents/10gen/dev/src/mongodb/mongod+0x92ab79)
    #1 0x7f53cc73f3b8 (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xba3b8)
    #2 0x14f4f15 in mongo::ElementPath::init(mongo::StringData const&) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/matcher/path.cpp:44
    #3 0x14b392b in mongo::LeafMatchExpression::initPath(mongo::StringData const&) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/matcher/expression_leaf.cpp:49
    #4 0x14b392b in mongo::InMatchExpression::init(mongo::StringData const&) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/matcher/expression_leaf.cpp:531
    #5 0x14b392b in mongo::InMatchExpression::copyTo(mongo::InMatchExpression*) const /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/matcher/expression_leaf.cpp:605
    #6 0x14b35a0 in mongo::InMatchExpression::shallowClone() const /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/matcher/expression_leaf.cpp:597
    #7 0x14e9b85 in mongo::OrMatchExpression::shallowClone() const /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/matcher/expression_tree.h:111
    #8 0x192c214 in mongo::QueryPlannerAccess::makeCollectionScan(mongo::CanonicalQuery const&, bool, mongo::QueryPlannerParams const&) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/planner_access.cpp:72
    #9 0x1977699 in mongo::QueryPlanner::plan(mongo::CanonicalQuery const&, mongo::QueryPlannerParams const&, std::vector<mongo::QuerySolution*, std::allocator<mongo::QuerySolution*> >*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/query_planner.cpp:921
    #10 0x1274b61 in mongo::SubplanStage::choosePlanWholeQuery(mongo::PlanYieldPolicy*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/exec/subplan.cpp:371
    #11 0x12778a9 in mongo::SubplanStage::pickBestPlan(mongo::PlanYieldPolicy*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/exec/subplan.cpp:441
    #12 0x191e3ae in boost::scoped_ptr<mongo::PlanYieldPolicy>::get() const /home/andrew/Documents/10gen/dev/src/mongodb/src/third_party/boost/boost/smart_ptr/scoped_ptr.hpp:103
    #13 0x191e3ae in mongo::PlanExecutor::pickBestPlan(mongo::PlanExecutor::YieldPolicy) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:173
    #14 0x191e3ae in mongo::PlanExecutor::make(mongo::OperationContext*, mongo::WorkingSet*, mongo::PlanStage*, mongo::QuerySolution*, mongo::CanonicalQuery*, mongo::Collection const*, std::string const&, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:125
    #15 0x191ed19 in mongo::PlanExecutor::make(mongo::OperationContext*, mongo::WorkingSet*, mongo::PlanStage*, mongo::QuerySolution*, mongo::CanonicalQuery*, mongo::Collection const*, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:109
    #16 0x18575d7 in mongo::getExecutor(mongo::OperationContext*, mongo::Collection*, mongo::CanonicalQuery*, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**, unsigned long) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/get_executor.cpp:407
    #17 0x18d265c in mongo::newRunQuery(mongo::OperationContext*, mongo::Message&, mongo::QueryMessage&, mongo::CurOp&, mongo::Message&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/new_find.cpp:598
    #18 0x14137d4 in mongo::receivedQuery(mongo::OperationContext*, mongo::Client&, mongo::DbResponse&, mongo::Message&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/instance.cpp:272
    #19 0x14137d4 in mongo::assembleResponse(mongo::OperationContext*, mongo::Message&, mongo::DbResponse&, mongo::HostAndPort const&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/instance.cpp:445
    #20 0x9618f9 in mongo::MyMessageHandler::process(mongo::Message&, mongo::AbstractMessagingPort*, mongo::LastError*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/db.cpp:184
    #21 0x26481f8 in mongo::PortMessageServer::handleIncomingMsg(void*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/util/net/message_server_port.cpp:234
    #22 0x7f53cd3d5181 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x8181)
 
Indirect leak of 96 byte(s) in 2 object(s) allocated from:
    #0 0x92ab79 in operator new(unsigned long) (/home/andrew/Documents/10gen/dev/src/mongodb/mongod+0x92ab79)
    #1 0x14e9a57 in mongo::OrMatchExpression::shallowClone() const /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/matcher/expression_tree.h:109
    #2 0x192c214 in mongo::QueryPlannerAccess::makeCollectionScan(mongo::CanonicalQuery const&, bool, mongo::QueryPlannerParams const&) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/planner_access.cpp:72
    #3 0x1977699 in mongo::QueryPlanner::plan(mongo::CanonicalQuery const&, mongo::QueryPlannerParams const&, std::vector<mongo::QuerySolution*, std::allocator<mongo::QuerySolution*> >*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/query_planner.cpp:921
    #4 0x1274b61 in mongo::SubplanStage::choosePlanWholeQuery(mongo::PlanYieldPolicy*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/exec/subplan.cpp:371
    #5 0x12778a9 in mongo::SubplanStage::pickBestPlan(mongo::PlanYieldPolicy*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/exec/subplan.cpp:441
    #6 0x191e3ae in boost::scoped_ptr<mongo::PlanYieldPolicy>::get() const /home/andrew/Documents/10gen/dev/src/mongodb/src/third_party/boost/boost/smart_ptr/scoped_ptr.hpp:103
    #7 0x191e3ae in mongo::PlanExecutor::pickBestPlan(mongo::PlanExecutor::YieldPolicy) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:173
    #8 0x191e3ae in mongo::PlanExecutor::make(mongo::OperationContext*, mongo::WorkingSet*, mongo::PlanStage*, mongo::QuerySolution*, mongo::CanonicalQuery*, mongo::Collection const*, std::string const&, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:125
    #9 0x191ed19 in mongo::PlanExecutor::make(mongo::OperationContext*, mongo::WorkingSet*, mongo::PlanStage*, mongo::QuerySolution*, mongo::CanonicalQuery*, mongo::Collection const*, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:109
    #10 0x18575d7 in mongo::getExecutor(mongo::OperationContext*, mongo::Collection*, mongo::CanonicalQuery*, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**, unsigned long) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/get_executor.cpp:407
    #11 0x18d265c in mongo::newRunQuery(mongo::OperationContext*, mongo::Message&, mongo::QueryMessage&, mongo::CurOp&, mongo::Message&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/new_find.cpp:598
    #12 0x14137d4 in mongo::receivedQuery(mongo::OperationContext*, mongo::Client&, mongo::DbResponse&, mongo::Message&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/instance.cpp:272
    #13 0x14137d4 in mongo::assembleResponse(mongo::OperationContext*, mongo::Message&, mongo::DbResponse&, mongo::HostAndPort const&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/instance.cpp:445
    #14 0x9618f9 in mongo::MyMessageHandler::process(mongo::Message&, mongo::AbstractMessagingPort*, mongo::LastError*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/db.cpp:184
    #15 0x26481f8 in mongo::PortMessageServer::handleIncomingMsg(void*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/util/net/message_server_port.cpp:234
    #16 0x7f53cd3d5181 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x8181)
 
Indirect leak of 48 byte(s) in 1 object(s) allocated from:
    #0 0x92ab79 in operator new(unsigned long) (/home/andrew/Documents/10gen/dev/src/mongodb/mongod+0x92ab79)
    #1 0x7f53cc73f3b8 (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xba3b8)
    #2 0x61900006cc93 (+0x6cc93)
 
Indirect leak of 48 byte(s) in 1 object(s) allocated from:
    #0 0x92ab79 in operator new(unsigned long) (/home/andrew/Documents/10gen/dev/src/mongodb/mongod+0x92ab79)
    #1 0x7f53cc73f3b8 (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xba3b8)
    #2 0x619000003293 (+0x3293)
 
Indirect leak of 48 byte(s) in 2 object(s) allocated from:
    #0 0x92ab79 in operator new(unsigned long) (/home/andrew/Documents/10gen/dev/src/mongodb/mongod+0x92ab79)
    #1 0x19776c7 in mongo::QueryPlanner::plan(mongo::CanonicalQuery const&, mongo::QueryPlannerParams const&, std::vector<mongo::QuerySolution*, std::allocator<mongo::QuerySolution*> >*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/query_planner.cpp:924
    #2 0x1274b61 in mongo::SubplanStage::choosePlanWholeQuery(mongo::PlanYieldPolicy*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/exec/subplan.cpp:371
    #3 0x12778a9 in mongo::SubplanStage::pickBestPlan(mongo::PlanYieldPolicy*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/exec/subplan.cpp:441
    #4 0x191e3ae in boost::scoped_ptr<mongo::PlanYieldPolicy>::get() const /home/andrew/Documents/10gen/dev/src/mongodb/src/third_party/boost/boost/smart_ptr/scoped_ptr.hpp:103
    #5 0x191e3ae in mongo::PlanExecutor::pickBestPlan(mongo::PlanExecutor::YieldPolicy) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:173
    #6 0x191e3ae in mongo::PlanExecutor::make(mongo::OperationContext*, mongo::WorkingSet*, mongo::PlanStage*, mongo::QuerySolution*, mongo::CanonicalQuery*, mongo::Collection const*, std::string const&, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:125
    #7 0x191ed19 in mongo::PlanExecutor::make(mongo::OperationContext*, mongo::WorkingSet*, mongo::PlanStage*, mongo::QuerySolution*, mongo::CanonicalQuery*, mongo::Collection const*, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:109
    #8 0x18575d7 in mongo::getExecutor(mongo::OperationContext*, mongo::Collection*, mongo::CanonicalQuery*, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**, unsigned long) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/get_executor.cpp:407
    #9 0x18d265c in mongo::newRunQuery(mongo::OperationContext*, mongo::Message&, mongo::QueryMessage&, mongo::CurOp&, mongo::Message&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/new_find.cpp:598
    #10 0x14137d4 in mongo::receivedQuery(mongo::OperationContext*, mongo::Client&, mongo::DbResponse&, mongo::Message&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/instance.cpp:272
    #11 0x14137d4 in mongo::assembleResponse(mongo::OperationContext*, mongo::Message&, mongo::DbResponse&, mongo::HostAndPort const&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/instance.cpp:445
    #12 0x9618f9 in mongo::MyMessageHandler::process(mongo::Message&, mongo::AbstractMessagingPort*, mongo::LastError*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/db.cpp:184
    #13 0x26481f8 in mongo::PortMessageServer::handleIncomingMsg(void*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/util/net/message_server_port.cpp:234
    #14 0x7f53cd3d5181 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x8181)
 
Indirect leak of 32 byte(s) in 2 object(s) allocated from:
    #0 0x92ab79 in operator new(unsigned long) (/home/andrew/Documents/10gen/dev/src/mongodb/mongod+0x92ab79)
    #1 0x14e62c7 in __gnu_cxx::new_allocator<mongo::MatchExpression*>::allocate(unsigned long, void const*) /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/ext/new_allocator.h:104
    #2 0x14e62c7 in std::_Vector_base<mongo::MatchExpression*, std::allocator<mongo::MatchExpression*> >::_M_allocate(unsigned long) /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/stl_vector.h:168
    #3 0x14e62c7 in void std::vector<mongo::MatchExpression*, std::allocator<mongo::MatchExpression*> >::_M_emplace_back_aux<mongo::MatchExpression* const&>(mongo::MatchExpression* const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/vector.tcc:404
    #4 0x14e62c7 in std::vector<mongo::MatchExpression*, std::allocator<mongo::MatchExpression*> >::push_back(mongo::MatchExpression* const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/stl_vector.h:911
    #5 0x14e62c7 in mongo::ListOfMatchExpression::add(mongo::MatchExpression*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/matcher/expression_tree.cpp:51
    #6 0x14e9b90 in mongo::OrMatchExpression::shallowClone() const /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/matcher/expression_tree.h:111
    #7 0x192c214 in mongo::QueryPlannerAccess::makeCollectionScan(mongo::CanonicalQuery const&, bool, mongo::QueryPlannerParams const&) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/planner_access.cpp:72
    #8 0x1977699 in mongo::QueryPlanner::plan(mongo::CanonicalQuery const&, mongo::QueryPlannerParams const&, std::vector<mongo::QuerySolution*, std::allocator<mongo::QuerySolution*> >*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/query_planner.cpp:921
    #9 0x1274b61 in mongo::SubplanStage::choosePlanWholeQuery(mongo::PlanYieldPolicy*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/exec/subplan.cpp:371
    #10 0x12778a9 in mongo::SubplanStage::pickBestPlan(mongo::PlanYieldPolicy*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/exec/subplan.cpp:441
    #11 0x191e3ae in boost::scoped_ptr<mongo::PlanYieldPolicy>::get() const /home/andrew/Documents/10gen/dev/src/mongodb/src/third_party/boost/boost/smart_ptr/scoped_ptr.hpp:103
    #12 0x191e3ae in mongo::PlanExecutor::pickBestPlan(mongo::PlanExecutor::YieldPolicy) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:173
    #13 0x191e3ae in mongo::PlanExecutor::make(mongo::OperationContext*, mongo::WorkingSet*, mongo::PlanStage*, mongo::QuerySolution*, mongo::CanonicalQuery*, mongo::Collection const*, std::string const&, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:125
    #14 0x191ed19 in mongo::PlanExecutor::make(mongo::OperationContext*, mongo::WorkingSet*, mongo::PlanStage*, mongo::QuerySolution*, mongo::CanonicalQuery*, mongo::Collection const*, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/plan_executor.cpp:109
    #15 0x18575d7 in mongo::getExecutor(mongo::OperationContext*, mongo::Collection*, mongo::CanonicalQuery*, mongo::PlanExecutor::YieldPolicy, mongo::PlanExecutor**, unsigned long) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/get_executor.cpp:407
    #16 0x18d265c in mongo::newRunQuery(mongo::OperationContext*, mongo::Message&, mongo::QueryMessage&, mongo::CurOp&, mongo::Message&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/query/new_find.cpp:598
    #17 0x14137d4 in mongo::receivedQuery(mongo::OperationContext*, mongo::Client&, mongo::DbResponse&, mongo::Message&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/instance.cpp:272
    #18 0x14137d4 in mongo::assembleResponse(mongo::OperationContext*, mongo::Message&, mongo::DbResponse&, mongo::HostAndPort const&, bool) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/instance.cpp:445
    #19 0x9618f9 in mongo::MyMessageHandler::process(mongo::Message&, mongo::AbstractMessagingPort*, mongo::LastError*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/db/db.cpp:184
    #20 0x26481f8 in mongo::PortMessageServer::handleIncomingMsg(void*) /home/andrew/Documents/10gen/dev/src/mongodb/src/mongo/util/net/message_server_port.cpp:234
    #21 0x7f53cd3d5181 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x8181)
 
SUMMARY: AddressSanitizer: 2334 byte(s) leaked in 30 allocation(s).



 Comments   
Comment by Githook User [ 03/Nov/14 ]

Author:

{u'username': u'dstorch', u'name': u'David Storch', u'email': u'david.storch@10gen.com'}

Message: SERVER-15758 fix leak of single query solution in SubplanStage
Branch: master
https://github.com/mongodb/mongo/commit/1c8267751f86ff74e350dad67cec018f4f9a7851

Generated at Thu Feb 08 03:38:53 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.