scipopt / scip

SCIP - Solving Constraint Integer Programs
Other
405 stars 66 forks source link

[Bug] SCIPnodeFree() triggers a segmentation fault for certain problems. #99

Open yu961549745 opened 3 months ago

yu961549745 commented 3 months ago

scip version

SCIP version 9.1.0 [precision: 8 byte] [memory: block] [mode: optimized] [LP solver: Soplex 7.0.1] [GitHash: 8cab0278ba]
Copyright (c) 2002-2024 Zuse Institute Berlin (ZIB)

External libraries: 
  Readline 8.2         GNU library for command line editing (gnu.org/s/readline)
  Soplex 7.0.1         Linear Programming Solver developed at Zuse Institute Berlin (soplex.zib.de) [GitHash: 1cc71921]
  CppAD 20180000.0     Algorithmic Differentiation of C++ algorithms developed by B. Bell (github.com/coin-or/CppAD)
  ZLIB 1.2.12          General purpose compression library by J. Gailly and M. Adler (zlib.net)
  GMP 6.3.0            GNU Multiple Precision Arithmetic Library developed by T. Granlund (gmplib.org)
  AMPL/MP 690e9e7      AMPL .nl file reader library (github.com/ampl/mp)
  PaPILO 2.3.0         parallel presolve for integer and linear optimization (github.com/scipopt/papilo) (built with TBB)
  Nauty 2.8.8          Computing Graph Automorphism Groups by Brendan D. McKay (users.cecs.anu.edu.au/~bdm/nauty)
  sassy 1.1            Symmetry preprocessor by Markus Anders (github.com/markusa4/sassy)
  Ipopt 3.14.16        Interior Point Optimizer developed by A. Waechter et.al. (github.com/coin-or/Ipopt)

solving this problem triggers a segmentation fault v1.zip

run in the unzipped folder

scip -b run.sh

output

time | node  | left  |LP iter|LP it/n|mem/heur|mdpt |vars |cons |rows |cuts |sepa|confs|strbr|  dualbound   | primalbound  |  gap   | compl. 
 16.2s| 63300 | 63287 | 77429 |   1.2 |    61M |  61k| 107 | 257 |  61 |  53 |  1 | 443 | 110 | 7.170997e+03 |      --      |    Inf | unknown
 16.2s| 63400 | 63387 | 77529 |   1.2 |    61M |  61k| 107 | 257 |  61 |  53 |  1 | 443 | 110 | 7.170997e+03 |      --      |    Inf | unknown
L16.2s| 63450 | 63437 | 77579 |   1.2 |    alns|  61k| 107 | 257 |  61 |  53 |  1 | 443 | 110 | 7.170997e+03 | 7.261000e+03 |   1.26%| unknown
L16.3s| 63450 |     0 | 77579 |   1.2 |    alns|  61k| 107 | 257 |  61 |  53 |  1 | 443 | 110 | 7.171000e+03 | 7.171000e+03 |   0.00%| 100.00%
zsh: segmentation fault  /usr/local/Cellar/scip/9.1.0/bin/scip

gdb backtrace

#0  0x000000010016de7b in eventExecEstim ()
#1  0x0000000100428fff in SCIPeventhdlrExec ()
#2  0x000000010042b17d in SCIPeventfilterProcess ()
#3  0x000000010042ac30 in SCIPeventProcess ()
#4  0x000000010058108d in SCIPnodeFree ()
#5  0x0000000100581883 in SCIPnodeFree ()
#6  0x0000000100581883 in SCIPnodeFree ()
...
#52396 0x0000000100581883 in SCIPnodeFree ()
#52397 0x000000010058547c in SCIPnodeFocus ()
#52398 0x0000000100567522 in SCIPsolveCIP ()
#52399 0x000000010052edee in SCIPsolve ()
#52400 0x000000010015ccaf in SCIPdialogExecOptimize ()
#52401 0x0000000100426744 in SCIPdialogExec ()
#52402 0x00000001004266c1 in SCIPdialoghdlrExec ()
#52403 0x000000010050ed11 in SCIPstartInteraction ()
#52404 0x000000010054bce3 in SCIPprocessShellArguments ()
#52405 0x000000010054c4df in SCIPrunShell ()
#52406 0x0000000100003bc0 in main ()
svigerske commented 3 months ago

It might be something like a stack overflow due to the immensely big call stack. It seems that SCIP tries to free the tree by recursive function calls, which is a bad idea when you have a very deep tree.