Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-25314

DBConfig::_dropShardedCollections doesn't use lock_guard for CollectionInfoMap

    • Type: Icon: Bug Bug
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • 3.3.14
    • Affects Version/s: None
    • Component/s: Sharding
    • Labels:
      None
    • Fully Compatible
    • ALL
    • Sharding 2016-08-29, Sharding 2016-09-19, Sharding 2016-10-10
    • 0

      DBConfig::_dropShardedCollections and its caller DBConfig::dropDatabase do not use a lock_guard before accessing _collections.

      I think this is the cause of a crash triggered by the concurrent fuzzer:

      I SHARDING [conn641] distributed lock with ts: 5798f5bc8ca63ab7b5856c00' unlocked.
      I CONTROL  [conn641] *** unhandled exception (access violation) at 0x000007FEFB0CC890, terminating
      I CONTROL  [conn641] *** access violation was a read from 0x000000340031003A
      I CONTROL  [conn641] *** stack trace for unhandled exception:
      I CONTROL  [conn641] VCRUNTIME140.dll                                                                                   memmove+0x60
      I CONTROL  [conn641] MSVCP140.dll                                                                                       std::basic_streambuf<char,std::char_traits<char> >::xsputn+0x5f
      I CONTROL  [conn641] mongos.exe        c:\program files (x86)\microsoft visual studio 14.0\vc\include\string(196)       std::operator<<<char,std::char_traits<char>,std::allocator<char> >+0x115
      I CONTROL  [conn641] mongos.exe        ...\src\mongo\s\config.cpp(666)                                                  mongo::DBConfig::_dropShardedCollections+0x46b
      I CONTROL  [conn641] mongos.exe        ...\src\mongo\s\config.cpp(571)                                                  mongo::DBConfig::dropDatabase+0x59a
      I CONTROL  [conn641] mongos.exe        ...\src\mongo\s\commands\cluster_drop_database_cmd.cpp(112)                      mongo::`anonymous namespace'::DropDatabaseCmd::run+0x220
      I CONTROL  [conn641] mongos.exe        ...\src\mongo\s\s_only.cpp(156)                                                  mongo::Command::execCommandClientBasic+0x63b
      I CONTROL  [conn641] mongos.exe        ...\src\mongo\s\commands\strategy.cpp(110)                                       mongo::`anonymous namespace'::runAgainstRegistered+0x26d
      I CONTROL  [conn641] mongos.exe        ...\src\mongo\s\commands\strategy.cpp(266)                                       mongo::Strategy::clientCommandOp+0x859
      I CONTROL  [conn641] mongos.exe        ...\src\mongo\s\commands\request.cpp(110)                                        mongo::Request::process+0x3e8
      I CONTROL  [conn641] mongos.exe        ...\src\mongo\s\service_entry_point_mongos.cpp(108)                              mongo::ServiceEntryPointMongos::_sessionLoop+0x1a5
      I CONTROL  [conn641] mongos.exe        ...\src\mongo\transport\service_entry_point_utils.cpp(74)                        mongo::`anonymous namespace'::runFunc+0x193
      I CONTROL  [conn641] mongos.exe        c:\program files (x86)\microsoft visual studio 14.0\vc\include\thr\xthread(247)  std::_LaunchPad<std::unique_ptr<std::tuple<std::_Binder<std::_Unforced,void * __ptr64 (__cdecl&)(void * __ptr64),mongo::`anonymous namespace'::Context * __ptr64> >,std::default_delete<std::tuple<std::_Binder<std::_Unforced,void * __ptr64 (__cdecl&)(void * __ptr64),mongo::`anonymous namespace'::Context * __ptr64> > > > >::_Run+0x75
      I CONTROL  [conn641] mongos.exe        c:\program files (x86)\microsoft visual studio 14.0\vc\include\thr\xthread(210)  std::_Pad::_Call_func+0x9
      I CONTROL  [conn641] ucrtbase.DLL                                                                                       crt_at_quick_exit+0x7d
      I CONTROL  [conn641] kernel32.dll                                                                                       BaseThreadInitThunk+0xd
      I -        [conn641]
      I CONTROL  [conn641] writing minidump diagnostic file C:\data\mci\b574bba2245ed393127dcbb0d1720cf7\src\mongos.2016-07-27T17-56-15.mdmp
      I CONTROL  [conn641] *** immediate exit due to unhandled exception
      

            Assignee:
            nathan.myers Nathan Myers
            Reporter:
            kamran.khan Kamran K.
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: