Details
Description
If you run db_catalog_test with valgrind memcheck, you will experience this:
==642003== Conditional jump or move depends on uninitialised value(s)
|
==642003== at 0x59DC5A0: mongo::ValidateAdaptor::traverseRecordStore(mongo::OperationContext*, mongo::ValidateResults*, mongo::BSONObjBuilder*) (validate_adaptor.cpp:271)
|
==642003== by 0x59A1704: mongo::CollectionValidation::validate(mongo::OperationContext*, mongo::NamespaceString const&, bool, bool, mongo::ValidateResults*, mongo::BSONObjBuilder*) (collection_validation.cpp:445)
|
==642003== by 0x3AC63A: mongo::(anonymous namespace)::foregroundValidate(mongo::OperationContext*, bool, int, int, int) (collection_validation_test.cpp:100)
|
==642003== by 0x3AD5E1: mongo::(anonymous namespace)::backgroundValidate(mongo::OperationContext*, bool, int, int, int, bool) (collection_validation_test.cpp:122)
|
==642003== by 0x3B0146: mongo::(anonymous namespace)::UnitTest_SuiteNameBackgroundCollectionValidationTestTestNameBackgroundValidateError::_doTest() (collection_validation_test.cpp:243)
|
==642003== by 0x6B4495C: mongo::unittest::Test::run() (unittest.cpp:205)
|
==642003== by 0x3AFFC4: mongo::unittest::Test::RegistrationAgent<mongo::(anonymous namespace)::UnitTest_SuiteNameBackgroundCollectionValidationTestTestNameBackgroundValidateError>::RegistrationAgent(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)::{lambda()#1}::operator()() const (unittest.h:510)
|
==642003== by 0x3AFE2C: std::_Function_handler<void (), mongo::unittest::Test::RegistrationAgent<mongo::(anonymous namespace)::UnitTest_SuiteNameBackgroundCollectionValidationTestTestNameBackgroundValidateError>::RegistrationAgent(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)::{lambda()#1}>::_M_invoke(std::_Any_data const&) (std_function.h:297)
|
==642003== by 0x614DBDD: std::function<void ()>::operator()() const (std_function.h:687)
|
==642003== by 0x6B45894: mongo::unittest::Suite::run(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int) (unittest.cpp:313)
|
==642003== by 0x6B466B0: mongo::unittest::Suite::run(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int) (unittest.cpp:374)
|
==642003== by 0x4875B2F: main (unittest_main.cpp:102)
|
==642003== Uninitialised value was created by a stack allocation
|
==642003== at 0x59DBFC4: mongo::ValidateAdaptor::traverseRecordStore(mongo::OperationContext*, mongo::ValidateResults*, mongo::BSONObjBuilder*) (validate_adaptor.cpp:224)
|
|
This appears to be because "validatedSize" is declared on the stack but not initialized.