[SERVER-11744] Assert on $mod query with an invalid argument instead of a proper error Created: 16/Nov/13  Updated: 11/Jul/16  Resolved: 09/Mar/14

Status: Closed
Project: Core Server
Component/s: Internal Code
Affects Version/s: 2.4.8
Fix Version/s: 2.5.5

Type: Bug Priority: Minor - P4
Reporter: Roman Kuzmin Assignee: Unassigned
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Operating System: ALL
Participants:

 Description   

The query {$mod : 1} is not valid, indeed. It is expected that MongoDB does not process it and returns a proper error. Instead, an assertion failure happens there and an unfriendly error is returned.

MongoDB shell version: 2.4.8
Example command invoked on a test.test:

> db.test.find({foo : {$mod : 1}})
error: {
        "$err" : "assertion d:\\slave\\windows_32bit_v2.4\\mongo\\src\\mongo\\db\\../bson/bson-inl.h:183"
}

Log:

Sat Nov 16 17:14:15.235 [conn200]  test.test Assertion failure isABSONObj() d:\slave\windows_32bit_v2.4\mongo\src\mongo\db\../bson/bson-inl.h 183
Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\util\assert_util.cpp(113)                               mongo::verifyFailed+0x128
Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\bson\bson-inl.h(184)                                    mongo::BSONElement::embeddedObject+0x4f
Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\matcher.cpp(144)                                     mongo::ElementMatcher::ElementMatcher+0x84
Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\matcher.cpp(330)                                     mongo::Matcher::addOp+0x642
Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\matcher.cpp(504)                                     mongo::Matcher::parseMatchExpressionElement+0x24c
Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\matcher.cpp(544)                                     mongo::Matcher::Matcher+0x126
Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\matcher_covered.cpp(34)                              mongo::CoveredIndexMatcher::CoveredIndexMatcher+0x50
Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\queryoptimizer.cpp(510)                              mongo::QueryPlan::matcher+0x99
Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\queryoptimizercursorimpl.cpp(497)                    mongo::CursorGenerator::singlePlanCursor+0x121
Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\queryoptimizercursorimpl.cpp(525)                    mongo::CursorGenerator::generate+0x80
Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\queryoptimizercursorimpl.cpp(400)                    mongo::NamespaceDetailsTransient::getCursor+0x5d
Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\ops\query.cpp(698)                                   mongo::queryWithQueryOptimizer+0x1f6
Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\ops\query.cpp(1047)                                  mongo::runQuery+0xb2c
Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\instance.cpp(262)                                    mongo::receivedQuery+0x2e2
Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\instance.cpp(401)                                    mongo::assembleResponse+0x351
Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\db.cpp(194)                                          mongo::MyMessageHandler::process+0xe8
Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\util\net\message_server_port.cpp(207)                   mongo::PortMessageServer::handleIncomingMsg+0x457
Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\third_party\boost\boost\thread\detail\thread.hpp(62)          boost::detail::thread_data<boost::_bi::bind_t<void *,void * (__cdecl*)(void *),boost::_bi::list1<boost::_bi::value<mongo::PortMessageServer::HandleIncomingMsgParam *> > > >::run+0x9
Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\third_party\boost\libs\thread\src\win32\thread.cpp(16707566)  boost::`anonymous namespace'::thread_start_function+0x47
Sat Nov 16 17:14:16.097 [conn200] mongod.exe  f:\dd\vctools\crt_bld\self_x86\crt\src\threadex.c(314)                _callthreadstartex+0x1b
Sat Nov 16 17:14:16.097 [conn200] assertion 0 assertion d:\slave\windows_32bit_v2.4\mongo\src\mongo\db\../bson/bson-inl.h:183 ns:test.test query:{ foo: { $mod: 1.0 } }
Sat Nov 16 17:14:16.097 [conn200] query test.test query: { foo: { $mod: 1.0 } } ntoreturn:0 keyUpdates:0 exception: assertion d:\slave\windows_32bit_v2.4\mongo\src\mongo\db\../bson/bson-inl.h:183 locks(micros) r:861847 reslen:115 861ms



 Comments   
Comment by Daniel Pasette (Inactive) [ 09/Mar/14 ]

fixed during query framework refactor.

Comment by Roman Kuzmin [ 24/Feb/14 ]

It seems to be fixed in v2.6.0-rc0

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