[SERVER-26135] Coverity analysis defect 99885: Using invalid iterator Created: 16/Sep/16  Updated: 19/Nov/16  Resolved: 23/Sep/16

Status: Closed
Project: Core Server
Component/s: Sharding
Affects Version/s: None
Fix Version/s: 3.4.0-rc0

Type: Bug Priority: Major - P3
Reporter: Coverity Collector User Assignee: Kaloian Manassiev
Resolution: Done Votes: 0
Labels: coverity
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Backwards Compatibility: Fully Compatible
Operating System: ALL
Sprint: Sharding 2016-10-10
Participants:

 Description   

An invalid or past-the-end iterator is being used

Defect 99885 (STATIC_C)
Checker INVALIDATE_ITERATOR (subcategory none)
File: /src/mongo/s/balancer/migration_manager.cpp
Function mongo::MigrationManager::finishRecovery(mongo::OperationContext *, const mongo::OID &, unsigned long, const mongo::MigrationSecondaryThrottleOptions &, bool)
/src/mongo/s/balancer/migration_manager.cpp, line: 391
"erase" invalidates iterator "std::__cxx11::list<mongo::MigrateInfo, std::allocator<mongo::MigrateInfo> >::const_iterator(itMigrateInfo)".

                    itMigrateInfo = nssAndMigrateInfos.second.erase(itMigrateInfo);

/src/mongo/s/balancer/migration_manager.cpp, line: 391
Using invalid iterator "std::__cxx11::list<mongo::MigrateInfo, std::allocator<mongo::MigrateInfo> >::const_iterator(itMigrateInfo)".

                    itMigrateInfo = nssAndMigrateInfos.second.erase(itMigrateInfo);



 Comments   
Comment by Githook User [ 23/Sep/16 ]

Author:

{u'username': u'kaloianm', u'name': u'Kaloian Manassiev', u'email': u'kaloian.manassiev@mongodb.com'}

Message: SERVER-26135 Rearrange code in finishRecovery to avoid invalid iterator warning
Branch: master
https://github.com/mongodb/mongo/commit/637553798fe8e12a63fa083b1f281880e3ae40be

Comment by Kaloian Manassiev [ 23/Sep/16 ]

This particular Coverity warning is a false positive, because according to the documentation of list::erase it returns the element after the one being erased, which could be the end, but the loop's condition will handle this.

Generated at Thu Feb 08 04:11:14 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.