Open s-c-e opened 5 years ago
(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.
(I posted this on the mailing list before)
Maybe this is not a valid .lp file, but cbc probably shouldn't crash.