[SERVER-16101] ~DeleteExecutor accesses the cursor cache via a Collection pointer without a DBlock Created: 11/Nov/14  Updated: 11/Jul/16  Resolved: 04/Dec/14

Status: Closed
Project: Core Server
Component/s: Querying, Write Ops
Affects Version/s: None
Fix Version/s: 2.8.0-rc3

Type: Bug Priority: Major - P3
Reporter: Eric Milkie Assignee: David Storch
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate
is duplicated by SERVER-16090 del1.js fails deregistering from coll... Closed
Operating System: ALL
Steps To Reproduce:

2014-11-11T19:27:44.460+0000 I COMMANDS [conn115] dropDatabase fooa starting
 
	
 
2014-11-11T19:27:44.461+0000 I CONTROL  [conn117] *** C runtime error: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\vector(1201) : Assertion failed: vector subscript out of range, terminating
 
	
 
2014-11-11T19:27:44.462+0000 I -        [conn117] Fatal Assertion 17006
 
	
 
2014-11-11T19:27:44.463+0000 I COMMANDS [conn115] dropDatabase fooa finished
 
	
 
2014-11-11T19:27:44.469+0000 I COMMANDS [conn115] dropDatabase foob starting
 
	
 
2014-11-11T19:27:44.471+0000 I COMMANDS [conn115] dropDatabase foob finished
 
	
 
2014-11-11T19:27:45.305+0000 I CONTROL  [conn117] mongod.exe    ...\src\mongo\util\stacktrace_win.cpp(175)                                   mongo::printStackTrace+0x43
 
	
 
2014-11-11T19:27:45.305+0000 I CONTROL  [conn117] mongod.exe    ...\src\mongo\util\log.cpp(136)                                              mongo::logContext+0xd7
 
	
 
2014-11-11T19:27:45.305+0000 I CONTROL  [conn117] mongod.exe    ...\src\mongo\util\assert_util.cpp(153)                                      mongo::fassertFailed+0xbb
 
	
 
2014-11-11T19:27:45.305+0000 I CONTROL  [conn117] mongod.exe    ...\src\mongo\util\stacktrace_win.cpp(291)                                   mongo::crtDebugCallback+0x186
 
	
 
2014-11-11T19:27:45.305+0000 I CONTROL  [conn117] mongod.exe    f:\dd\vctools\crt\crtw32\misc\dbgrptt.c(609)                                 _VCrtDbgReportW+0x7c1
 
	
 
2014-11-11T19:27:45.305+0000 I CONTROL  [conn117] mongod.exe    f:\dd\vctools\crt\crtw32\misc\dbgrpt.c(263)                                  _CrtDbgReportWV+0x50
 
	
 
2014-11-11T19:27:45.305+0000 I CONTROL  [conn117] mongod.exe    f:\dd\vctools\crt\crtw32\misc\dbgrpt.c(279)                                  _CrtDbgReportW+0x60
 
	
 
2014-11-11T19:27:45.305+0000 I CONTROL  [conn117] mongod.exe    f:\dd\vctools\crt\crtw32\stdcpp\stdthrow.cpp(13)                             std::_Debug_message+0x40
 
	
 
2014-11-11T19:27:45.305+0000 I CONTROL  [conn117] mongod.exe    c:\program files (x86)\microsoft visual studio 12.0\vc\include\vector(1202)  std::vector<std::_List_unchecked_const_iterator<std::_List_val<std::_List_simple_types<mongo::PlanExecutor * __ptr64> >,std::_Iterator_base0>,std::_Wrap_alloc<std::allocator<std::_List_unchecked_const_iterator<std::_List_val<std::_List_simple_types<mongo::PlanExecutor * __ptr64> >,std::_Iterator_base0> > > >::operator[]+0x3a
 
	
 
2014-11-11T19:27:45.305+0000 I CONTROL  [conn117] mongod.exe    c:\program files (x86)\microsoft visual studio 12.0\vc\include\xhash(786)    std::_Hash<std::_Uset_traits<mongo::PlanExecutor * __ptr64,std::_Uhash_compare<mongo::PlanExecutor * __ptr64,std::hash<mongo::PlanExecutor * __ptr64>,std::equal_to<mongo::PlanExecutor * __ptr64> >,std::allocator<mongo::PlanExecutor * __ptr64>,0> >::equal_range+0x4d
 
	
 
2014-11-11T19:27:45.305+0000 I CONTROL  [conn117] mongod.exe    c:\program files (x86)\microsoft visual studio 12.0\vc\include\xhash(708)    std::_Hash<std::_Uset_traits<mongo::PlanExecutor * __ptr64,std::_Uhash_compare<mongo::PlanExecutor * __ptr64,std::hash<mongo::PlanExecutor * __ptr64>,std::equal_to<mongo::PlanExecutor * __ptr64> >,std::allocator<mongo::PlanExecutor * __ptr64>,0> >::erase+0x2d
 
	
 
2014-11-11T19:27:45.306+0000 I CONTROL  [conn117] mongod.exe    ...\src\mongo\db\catalog\collection_cursor_cache.cpp(405)                    mongo::CollectionCursorCache::deregisterExecutor+0x3c
 
	
 
2014-11-11T19:27:45.306+0000 I CONTROL  [conn117] mongod.exe    ...\src\mongo\db\query\plan_executor.cpp(190)                                mongo::PlanExecutor::~PlanExecutor+0x4e
 
	
 
2014-11-11T19:27:45.306+0000 I CONTROL  [conn117] mongod.exe    ...\src\mongo\db\ops\delete_executor.cpp(55)                                 mongo::DeleteExecutor::~DeleteExecutor+0x2c
 
	
 
2014-11-11T19:27:45.306+0000 I CONTROL  [conn117] mongod.exe    ...\src\mongo\db\instance.cpp(677)                                           mongo::receivedDelete+0x57d
 
	
 
2014-11-11T19:27:45.306+0000 I CONTROL  [conn117] mongod.exe    ...\src\mongo\db\instance.cpp(456)                                           mongo::assembleResponse+0x876
 
	
 
2014-11-11T19:27:45.306+0000 I CONTROL  [conn117] mongod.exe    ...\src\mongo\db\db.cpp(185)                                                 mongo::MyMessageHandler::process+0xd4
 
	
 
2014-11-11T19:27:45.306+0000 I CONTROL  [conn117] mongod.exe    ...\src\mongo\util\net\message_server_port.cpp(235)                          mongo::PortMessageServer::handleIncomingMsg+0x7df
 
	
 
2014-11-11T19:27:45.306+0000 I CONTROL  [conn117] mongod.exe    ...\src\third_party\boost\libs\thread\src\win32\thread.cpp(185)              boost::`anonymous namespace'::thread_start_function+0x21
 
	
 
2014-11-11T19:27:45.306+0000 I CONTROL  [conn117] mongod.exe    f:\dd\vctools\crt\crtw32\startup\threadex.c(376)                             _callthreadstartex+0x25
 
	
 
2014-11-11T19:27:45.306+0000 I CONTROL  [conn117] mongod.exe    f:\dd\vctools\crt\crtw32\startup\threadex.c(359)                             _threadstartex+0xe7
 
	
 
2014-11-11T19:27:45.306+0000 I CONTROL  [conn117] kernel32.dll 

Participants:

 Description   

This can cause a crash if the Collection or database is dropped right before the DeleteExecutor destructs.

http://buildlogs.mongodb.org/MCI_windows-64-2k8-debug/builds/296848/test/parallel_compatibility_WT_0/del.js



 Comments   
Comment by Githook User [ 04/Dec/14 ]

Author:

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

Message: SERVER-16101 replace DeleteExecutor with ParsedDelete
Branch: master
https://github.com/mongodb/mongo/commit/367810995073e01ee58159deb1bb5b878882632f

Comment by Githook User [ 04/Dec/14 ]

Author:

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

Message: SERVER-16101 replace UpdateExecutor with ParsedUpdate
Branch: master
https://github.com/mongodb/mongo/commit/5080932a79ce0152535169ec3b42edde2951bdcd

Comment by David Storch [ 13/Nov/14 ]

The UpdateExecutor is affected by a similar problem, namely that the PlanExecutor destructor can be invoked after the database lock has been released.

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