Opened 12 years ago

Closed 12 years ago

#30 closed defect (fixed)

"cbc -miplib" invalid null pointer error

Reported by: jpfasano Owned by: somebody
Priority: major Component: component1
Version: Keywords:
Cc:

Description (last modified by jpfasano)

When running debug build of

   cbc -miplib

built from trunk on Aug 10 on Windows with MS Visual Studio V8 the code fails with a popup window with message

  Debug Assertion Failed
  Program: File e:\microsoft visual studio 8\vc\include\algorithm Line 667
  Expression: invalid pointer

The messages on the console are:

  processing mps file: gesa2 (15 out of 44)
At line 17 NAME          GESA2
At line 18 ROWS
At line 1412 COLUMNS
At line 4605 RHS
At line 4738 BOUNDS
At line 5459 ENDATA
Problem GESA2 has 1392 rows, 1224 columns and 5064 elements
Coin0008I GESA2 read with 0 errors
Cgl0003I 0 fixed, 25 tightened bounds, 23 strengthened rows, 0 substitutions
Cgl0003I 0 fixed, 3 tightened bounds, 11 strengthened rows, 0 substitutions
Cgl0003I 0 fixed, 0 tightened bounds, 11 strengthened rows, 0 substitutions
Cgl0003I 0 fixed, 0 tightened bounds, 11 strengthened rows, 0 substitutions
Cgl0003I 0 fixed, 0 tightened bounds, 11 strengthened rows, 0 substitutions
Cgl0003I 0 fixed, 0 tightened bounds, 11 strengthened rows, 0 substitutions
Cgl0003I 0 fixed, 0 tightened bounds, 11 strengthened rows, 0 substitutions
Cgl0003I 0 fixed, 0 tightened bounds, 11 strengthened rows, 0 substitutions
Cgl0003I 0 fixed, 0 tightened bounds, 11 strengthened rows, 0 substitutions
Cgl0003I 0 fixed, 0 tightened bounds, 11 strengthened rows, 0 substitutions
Cgl0003I 0 fixed, 0 tightened bounds, 11 strengthened rows, 0 substitutions
Cgl0004I processed model has 1392 rows, 1224 columns (408 integer) and 5064 elements
Clp0000I Optimal - objective value 2.54765e+007
Cbc0038I Pass   1: obj.    1.89860 --> up =     0 , down =     0 -- rand =   10(  13)
Cbc0038I Pass   2: obj.    0.00000 --> up =     0 , down =     0 -- rand =    0(  20)  - solution found of 2.60826e+007 - not improved by mini branch and bound

Cbc0038I No solution found this major pass
Cbc0038I Before mini branch and bound, 354 integers at bound fixed and 616 continuous
Cbc0038I Mini branch and bound improved solution from 2.76675e+007 to 2.58124e+007 (18.50 seconds)
Cbc0038I Freeing continuous variables gives a solution of 2.58124e+007
Cbc0038I Round again with cutoff of 2.58124e+007
Cbc0038I Pass   3: obj.    1.89860 --> up =     0 , down =     0 -- rand =   10(  13)
Cbc0038I Pass   4: obj.    0.00000 --> up =     0 , down =     0 -- rand =    0(  27)  - solution found of 2.58124e+007 - not improved by mini branch and bound

Cbc0038I No solution found this major pass
Cbc0038I Before mini branch and bound, 354 integers at bound fixed and 617 continuous
Cbc0038I Mini branch and bound did not improve solution (21.18 seconds)
Cbc0038I After 21.18 seconds - Feasibility pump exiting - took 14.82 seconds
Cbc0012I Integer solution of 2.58124e+007 found by feasibility pump after 0 iterations and 0 nodes (21.20 seconds)

The call stack is

cbcSolve.exe!std::_Debug_message(const wchar_t * message=0x007e2454, const wchar_t * file=0x007e2678, unsigned int line=667)  Line 24	C++
cbcSolve.exe!std::_Debug_pointer<double>(double * _First=0x00000000, const wchar_t * _File=0x007e2678, unsigned int _Line=667)  Line 1379 + 0x12 bytes	C++
cbcSolve.exe!std::_Transform<double *,double *,std::negate<double>,std::forward_iterator_tag>(double * _First=0x00000000, double * _Last=0x00000000, double * _Dest=0x00000000, std::negate<double> _Func={...}, std::forward_iterator_tag __formal={...}, std::forward_iterator_tag __formal={...})  Line 667 + 0x13 bytes	C++
cbcSolve.exe!std::_Transform<double *,double *,std::negate<double> >(double * _First=0x00000000, double * _Last=0x00000000, double * _Dest=0x00000000, std::negate<double> _Func={...}, std::random_access_iterator_tag __formal={...}, std::random_access_iterator_tag __formal={...})  Line 683 + 0x34 bytes	C++
cbcSolve.exe!std::transform<double *,double *,std::negate<double> >(double * _First=0x00000000, double * _Last=0x00000000, double * _Dest=0x00000000, std::negate<double> _Func={...})  Line 712 + 0x50 bytes	C++
cbcSolve.exe!CglKnapsackCover::deriveAKnapsack(const OsiSolverInterface & si={...}, OsiCuts & cs={...}, CoinPackedVector & krow={...}, bool treatAsLRow=false, double & b=1.7976931348623157e+308, int * complement=0x01661b70, double * xstar=0x012ed018, int rowIndex=408, int numberElements=0, const int * index=0x01250698, const double * element=0x01039f58)  Line 833 + 0x34 bytes	C++
cbcSolve.exe!CglKnapsackCover::generateCuts(const OsiSolverInterface & si={...}, OsiCuts & cs={...}, CglTreeInfo info={...})  Line 417 + 0x4d bytes	C++
cbcSolve.exe!CbcCutGenerator::generateCuts(OsiCuts & cs={...}, bool fullScan=true, OsiSolverInterface * solver=0x0092ece8, CbcNode * node=0x00000000)  Line 216	C++
cbcSolve.exe!CbcModel::solveWithCuts(OsiCuts & cuts={...}, int numberTries=99, CbcNode * node=0x00000000)  Line 4818 + 0x2f bytes	C++
cbcSolve.exe!CbcModel::branchAndBound(int doStatistics=0)  Line 1166 + 0x1b bytes	C++
cbcSolve.exe!CbcClpUnitTest(const CbcModel & saveModel={...})  Line 2032	C++
cbcSolve.exe!main(int argc=2, const char * * argv=0x00333870)  Line 226 + 0xc bytes	C++



The null pointer error is occurring on line 830 of CglKnapsackCover.cpp

std::transform(leMatrixRow.getElements(),
               leMatrixRow.getElements() + leMatrixRow.getNumElements(),
               leMatrixRow.getElements(),
               std::negate<double>());

leMatrixRow has private members indices_ and elements_ which are null. These members were set to null on line 819

CoinPackedVector leMatrixRow(numberElements,index,element); 

because numberElements is zero.

Change History (2)

comment:1 Changed 12 years ago by jpfasano

  • Description modified (diff)

comment:2 Changed 12 years ago by jpfasano

  • Resolution set to fixed
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.