[SERVER-6045] aggregate cmd crashes server with empty pipeline argument Created: 08/Jun/12  Updated: 11/Jul/16  Resolved: 11/Jun/12

Status: Closed
Project: Core Server
Component/s: Aggregation Framework
Affects Version/s: 2.1.1
Fix Version/s: 2.1.2

Type: Bug Priority: Major - P3
Reporter: Daniel Pasette (Inactive) Assignee: Matt Dannenberg
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Backwards Compatibility: Fully Compatible
Operating System: ALL
Participants:

 Description   

Run cmd:

db.agg.runCommand("aggregate", {  pipeline:[{}] } )

mongod output:

mongod: src/third_party/boost/boost/smart_ptr/intrusive_ptr.hpp:161: T* boost::intrusive_ptr<T>::operator->() const [with T = mongo::DocumentSource]: Assertion `px != 0' failed.
Fri Jun  8 11:35:24 Got signal: 6 (Aborted).
 
Fri Jun  8 11:35:24 Backtrace:
0x7b3913 0x57ad90 0x7f575fc38420 0x7f575fc383a5 0x7f575fc3bb0b 0x7f575fc30d4d 0x5670b4 0x6639aa 0x8bdc95 0x64f92f 0x650480 0x651554 0x9b915a 0x9bbd5f 0x80b8c5 0x58a18d 0x92cdf5 0x7f576074befc 0x7f575fce559d 
 ./mongod(_ZN5mongo15printStackTraceERSo+0x23) [0x7b3913]
 ./mongod(_ZN5mongo10abruptQuitEi+0x350) [0x57ad90]
 /lib/x86_64-linux-gnu/libc.so.6(+0x36420) [0x7f575fc38420]
 /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x35) [0x7f575fc383a5]
 /lib/x86_64-linux-gnu/libc.so.6(abort+0x17b) [0x7f575fc3bb0b]
 /lib/x86_64-linux-gnu/libc.so.6(__assert_fail+0xdd) [0x7f575fc30d4d]
 ./mongod() [0x5670b4]
 ./mongod(_ZN5mongo8Pipeline12parseCommandERSsRNS_7BSONObjERKN5boost13intrusive_ptrINS_17ExpressionContextEEE+0xb5a) [0x6639aa]
 ./mongod(_ZN5mongo15PipelineCommand3runERKSsRNS_7BSONObjEiRSsRNS_14BSONObjBuilderEb+0x55) [0x8bdc95]
 ./mongod(_ZN5mongo12_execCommandEPNS_7CommandERKSsRNS_7BSONObjEiRNS_14BSONObjBuilderEb+0x3f) [0x64f92f]
 ./mongod(_ZN5mongo11execCommandEPNS_7CommandERNS_6ClientEiPKcRNS_7BSONObjERNS_14BSONObjBuilderEb+0x7b0) [0x650480]
 ./mongod(_ZN5mongo12_runCommandsEPKcRNS_7BSONObjERNS_11_BufBuilderINS_16TrivialAllocatorEEERNS_14BSONObjBuilderEbi+0x264) [0x651554]
 ./mongod(_ZN5mongo11runCommandsEPKcRNS_7BSONObjERNS_5CurOpERNS_11_BufBuilderINS_16TrivialAllocatorEEERNS_14BSONObjBuilderEbi+0x3a) [0x9b915a]
 ./mongod(_ZN5mongo8runQueryERNS_7MessageERNS_12QueryMessageERNS_5CurOpES1_+0x70f) [0x9bbd5f]
 ./mongod(_ZN5mongo16assembleResponseERNS_7MessageERNS_10DbResponseERKNS_11HostAndPortE+0xab5) [0x80b8c5]
 ./mongod(_ZN5mongo16MyMessageHandler7processERNS_7MessageEPNS_21AbstractMessagingPortEPNS_9LastErrorE+0x7d) [0x58a18d]
 ./mongod(_ZN5mongo3pms9threadRunEPNS_13MessagingPortE+0x2c5) [0x92cdf5]
 /lib/x86_64-linux-gnu/libpthread.so.0(+0x7efc) [0x7f576074befc]
 /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7f575fce559d]



 Comments   
Comment by auto [ 11/Jun/12 ]

Author:

{u'login': u'dannenberg', u'name': u'Matt Dannenberg', u'email': u'dannenberg.matt@gmail.com'}

Message: SERVER-6045 check for valid pipeline elements

added an aggregation/bugs jstest

Signed-off-by: Spencer T Brody <spencer@10gen.com>
Branch: master
https://github.com/mongodb/mongo/commit/629e6583fa56b5689fb80192896a050e85f3edba

Comment by Tad Marshall [ 08/Jun/12 ]

Windows stack trace:

>Debug.ListCallStack
 Index  Function
--------------------------------------------------------------------------------
*1      mongod.exe!_NMSG_WRITE(int rterrnum=0x0000000a) 
 2      mongod.exe!abort() 
 3      mongod.exe!_wassert(const wchar_t * expr=0x00000001404ac500, const wchar_t * filename=0x00000001404d29a0, unsigned int lineno=0x000000a1) 
 4      mongod.exe!boost::intrusive_ptr<mongo::DocumentSource>::operator->() 
 5      mongod.exe!mongo::Pipeline::parseCommand(std::basic_string<char,std::char_traits<char>,std::allocator<char> > & errmsg="", mongo::BSONObj & cmdObj={...}, const boost::intrusive_ptr<mongo::ExpressionContext> & pCtx={...}) 
 6      mongod.exe!mongo::PipelineCommand::run(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & db="test", mongo::BSONObj & cmdObj={...}, int options=0x00000000, std::basic_string<char,std::char_traits<char>,std::allocator<char> > & errmsg="", mongo::BSONObjBuilder & result={...}, bool fromRepl=false) 
 7      mongod.exe!mongo::_execCommand(mongo::Command * c=0x00000001409a77e0, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & dbname="test", mongo::BSONObj & cmdObj={...}, int queryOptions=0x00000000, mongo::BSONObjBuilder & result={...}, bool fromRepl=false) 
 8      mongod.exe!mongo::execCommand(mongo::Command * c=0x00000001409a77e0, mongo::Client & client={...}, int queryOptions=0x00000000, const char * cmdns=0x000000000074ebe4, mongo::BSONObj & cmdObj={...}, mongo::BSONObjBuilder & result={...}, bool fromRepl=false) 
 9      mongod.exe!mongo::_runCommands(const char * ns=0x000000000074ebe4, mongo::BSONObj & _cmdobj={...}, mongo::_BufBuilder<mongo::TrivialAllocator> & b={...}, mongo::BSONObjBuilder & anObjBuilder={...}, bool fromRepl=false, int queryOptions=0x00000000) 
 10     mongod.exe!mongo::runCommands(const char * ns=0x000000000074ebe4, mongo::BSONObj & jsobj={...}, mongo::CurOp & curop={...}, mongo::_BufBuilder<mongo::TrivialAllocator> & b={...}, mongo::BSONObjBuilder & anObjBuilder={...}, bool fromRepl=false, int queryOptions=0x00000000) 
 11     mongod.exe!mongo::runQuery(mongo::Message & m={...}, mongo::QueryMessage & q={...}, mongo::CurOp & curop={...}, mongo::Message & result={...}) 
 12     mongod.exe!mongo::receivedQuery(mongo::Client & c={...}, mongo::DbResponse & dbresponse={...}, mongo::Message & m={...}) 
 13     mongod.exe!mongo::assembleResponse(mongo::Message & m={...}, mongo::DbResponse & dbresponse={...}, const mongo::HostAndPort & remote={...}) 
 14     mongod.exe!mongo::MyMessageHandler::process(mongo::Message & m={...}, mongo::AbstractMessagingPort * port=0x000000000071dfc0, mongo::LastError * le=0x000000000071eab0) 
 15     mongod.exe!mongo::pms::threadRun(mongo::MessagingPort * inPort=0x000000000071dfc0) 
 16     mongod.exe!boost::_bi::list1<boost::_bi::value<mongo::MessagingPort * __ptr64> >::operator()<void (__cdecl*)(mongo::MessagingPort * __ptr64),boost::_bi::list0>(boost::_bi::type<void> __formal={...}, void (mongo::MessagingPort *)* & f=0x000000013f7442a9, boost::_bi::list0 & a={...}, boost::_bi::type<void> __formal={...}) 
 17     mongod.exe!boost::_bi::bind_t<void,void (__cdecl*)(mongo::MessagingPort * __ptr64),boost::_bi::list1<boost::_bi::value<mongo::MessagingPort * __ptr64> > >::operator()() 
 18     mongod.exe!boost::detail::thread_data<boost::_bi::bind_t<void,void (__cdecl*)(mongo::MessagingPort * __ptr64),boost::_bi::list1<boost::_bi::value<mongo::MessagingPort * __ptr64> > > >::run() 
 19     mongod.exe!boost::`anonymous namespace'::thread_start_function(void * param=0x0000000000096ff0) 
 20     mongod.exe!_callthreadstartex() 
 21     mongod.exe!_threadstartex(void * ptd=0x000000000071e5c0) 
 22     kernel32.dll!BaseThreadInitThunk() 
 23     ntdll.dll!RtlUserThreadStart() 

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