Open qtothec opened 6 years ago
Moved from TRAC as part of COIN fORgery: https://projects.coin-or.org/Clp/ticket/33
[E] ABR: Array bounds read in ClpSimplex::deleteRim(int) {6 occurrences} Reading 8 bytes from 0x03fb0cd0 (8 bytes at 0x03fb0cd0 illegal) Address 0x03fb0cd0 is 1 byte past the end of a 520 byte block at 0x03fb0ac8 Address 0x03fb0cd0 points to a C++ new block in heap 0x03f70000 Thread ID: 0x1ae0 Error location ClpSimplex::deleteRim(int) [c:\cygwin\home\magala\coin\coin-decomp\clp\src\clpsimplex.cpp:4322] reducedCost_[i] = reducedCostWork_[i]; } for (i=0;i<numberRows;i++) { => double value = rowActivityWork_[i]; double lower = rowLowerWork_[i]; double upper = rowUpperWork_[i]; if (lower>-1.0e20||upper<1.0e20) { ClpSimplex::finish(int) [c:\cygwin\home\magala\coin\coin-decomp\clp\src\clpsimplex.cpp:8125] } else { whatsChanged_ &= ~0xffff; } => deleteRim(getRidOfData); // Skip message if changing algorithms if (problemStatus_!=10) { if (problemStatus_==-1) OsiClpSolverInterface::disableSimplexInterface(void) [c:\cygwin\home\magala\coin\coin-decomp\osi\src\osiclp\osiclpsolverinterface.cpp:5331] // message will not appear anyway int saveMessageLevel=modelPtr_->messageHandler()->logLevel(); modelPtr_->messageHandler()->setLogLevel(0); => modelPtr_->finish(); modelPtr_->messageHandler()->setLogLevel(saveMessageLevel); modelPtr_->restoreData(saveData_); modelPtr_->scaling(saveData_.scalingFlag_); OsiClpSolverInterface::resolve(void) [c:\cygwin\home\magala\coin\coin-decomp\osi\src\osiclp\osiclpsolverinterface.cpp:851] int saveSolveType=modelPtr_->solveType(); bool doingPrimal = modelPtr_->algorithm()>0; if (saveSolveType==2) { => disableSimplexInterface(); } int saveOptions = modelPtr_->specialOptions(); int startFinishOptions=0; DecompAlgo::solutionUpdate(DecompPhase,int,int) [c:\cygwin\home\magala\coin\coin-decomp\decomp\src\decompalgo.cpp:1846] DecompAlgo::processNode(int,double,double) [c:\cygwin\home\magala\coin\coin-decomp\decomp\src\decompalgo.cpp:1452] AlpsDecompTreeNode::process(bool,bool) [c:\cygwin\home\magala\coin\coin-decomp\decomp\src\alpsdecomptreenode.cpp:220] AlpsSubTree::exploreUnitWork(bool,int,double,AlpsExitStatus&,int&,int&,int&,int&,bool&) [c:\cygwin\home\magala\coin\coin-decomp\alps\src\alpssubtree.cpp:1288] AlpsSubTree::exploreSubTree(AlpsTreeNode *,int,double,int&,int&,int&,int&) [c:\cygwin\home\magala\coin\coin-decomp\alps\src\alpssubtree.cpp:495] AlpsKnowledgeBrokerSerial::rootSearch(AlpsTreeNode *) [c:\cygwin\home\magala\coin\coin-decomp\alps\src\alpsknowledgebrokerserial.cpp:226] Allocation location new(UINT) [f:\dd\vctools\crt_bld\self_x86\crt\src\new.cpp:57] <>=(UINT) [f:\dd\vctools\crt_bld\self_x86\crt\src\newaop.cpp:7] ClpSimplex::createRim(int,bool,int) [c:\cygwin\home\magala\coin\coin-decomp\clp\src\clpsimplex.cpp:3257] delete [] dj_; dj_ = new double[numberTotal]; delete [] solution_; => solution_ = new double[numberTotal]; } reducedCostWork_ = dj_; rowReducedCost_ = dj_+numberColumns_; ClpSimplex::startup(int,int) [c:\cygwin\home\magala\coin\coin-decomp\clp\src\clpsimplex.cpp:7962] // put in standard form (and make row copy) // create modifiable copies of model rim and do optional scaling => bool goodMatrix=createRim(7+8+16+32,true,startFinishOptions); if (goodMatrix) { // switch off factorization if bad OsiClpSolverInterface::enableSimplexInterface(bool) [c:\cygwin\home\magala\coin\coin-decomp\osi\src\osiclp\osiclpsolverinterface.cpp:5312] #ifdef NDEBUG modelPtr_->startup(0); #else => int returnCode=modelPtr_->startup(0); assert (!returnCode||returnCode==2); #endif modelPtr_->specialOptions_=saveOptions; OsiClpSolverInterface::resolve(void) [c:\cygwin\home\magala\coin\coin-decomp\osi\src\osiclp\osiclpsolverinterface.cpp:1219] DecompAlgo::solutionUpdate(DecompPhase,int,int) [c:\cygwin\home\magala\coin\coin-decomp\decomp\src\decompalgo.cpp:1846] DecompAlgo::processNode(int,double,double) [c:\cygwin\home\magala\coin\coin-decomp\decomp\src\decompalgo.cpp:1191] AlpsDecompTreeNode::process(bool,bool) [c:\cygwin\home\magala\coin\coin-decomp\decomp\src\alpsdecomptreenode.cpp:220] AlpsSubTree::exploreUnitWork(bool,int,double,AlpsExitStatus&,int&,int&,int&,int&,bool&) [c:\cygwin\home\magala\coin\coin-decomp\alps\src\alpssubtree.cpp:1288]
Moved from TRAC as part of COIN fORgery: https://projects.coin-or.org/Clp/ticket/33