Opened 7 years ago

Closed 7 weeks ago

#121 closed defect (migrated)

Problem in CoinFactorization::pivotOneOtherRow when adding a constraint that contains a variable more than once

Reported by: falk Owned by: tkr
Priority: major Component: Cbc
Version: trunk Keywords:
Cc:

Description

(I posted this on the mailing list before)

$ cat test.cc
#include <coin/OsiClpSolverInterface.hpp>
#include <coin/CbcModel.hpp>

int main() {
  CbcModel model = CbcModel(OsiClpSolverInterface());
  model.solver()->readLp("/dev/stdin");
  model.branchAndBound();
  return 0;
}


$ cat crash3.lp                                                                                                                                                                          
\Problem name: 

Minimize
obj: - x0
Subject To
cons0:  x0 + x0 <= 1
cons1:  x1 <= 1
Bounds
End


$ g++ -g -O3 -W -Wall -I /home/hueffner/opt/cbc-2.7/include test.cc -L/home/hueffner/opt/cbc-2.7/lib -lCbc -lCbcSolver -lCgl -lClp -lCoinUtils -lOsiClp -lOsi -lz -lrt && ./a.out < crash3.lp
Cbc3007W No integer variables - nothing to do
Clp0006I 0  Obj 0 Dual inf 0.9999999 (1)
Clp0006I 0  Obj 0 Dual inf 0.9999999 (1)
zsh: segmentation fault  ./a.out < crash3.lp

This is with cbc 2.7 from svn. The segfault sometimes disappears
depending on surrounding code. valgrind reports an invalid read in
CoinFactorization::pivotOneOtherRow. With 2.5.0, I get:

Cbc3007W No integer variables - nothing to do
Clp0006I 0  Obj 0 Dual inf 1 (1)
a.out: CoinFactorization1.cpp:2108: bool CoinFactorization::pivotOneOtherRow(int, int): Assertion `where < end' failed.
zsh: abort      ./a.out < crash3.lp

Maybe this is not a valid .lp file, but cbc probably shouldn't crash.

Change History (1)

comment:1 Changed 7 weeks ago by stefan

  • Resolution set to migrated
  • Status changed from new to closed

This ticket has been migrated to GitHub and will be resolved there: https://github.com/coin-or/Cbc/issues/121

Note: See TracTickets for help on using tickets.