[Osi] ABR in ClpSimplex:deleteRim using simplexInterface

Matthew Galati Matthew.Galati at sas.com
Wed Sep 9 15:37:57 EDT 2009


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]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/osi/attachments/20090909/e5f7860d/attachment.html>


More information about the Osi mailing list