[SCIP] [GCG] Uninitialised value pricerdata->nartificialvars
Lukas Eveborn
lukas.eveborn at liu.se
Wed Aug 9 10:56:22 CEST 2023
Dear Erik,
Thanks for the quick answer. That helps, thank you!
Best regards
Lukas
Från: Erik Mühmer <muehmer at or.rwth-aachen.de>
Skickat: den 9 augusti 2023 10:50
Till: Lukas Eveborn <lukas.eveborn at liu.se>; scip at zib.de
Ämne: Re: [SCIP] [GCG] Uninitialised value pricerdata->nartificialvars
Dear Lukas,
I am sorry that you encountered this bug. It looks like a known bug and should be fixed in the next release. As of today, we have a public mirror repository on GitHub. You can access the current bugfix branch here: https://github.com/scipopt/gcg/tree/v35-bugfix
I hope this helps.
Best regards,
Erik
On 08.08.23 14:02, Lukas Eveborn wrote:
Hello,
I'm working on solving a EVRPTW with GCG, but for some instances I sometimes get a segmentation fault.
Running it with valgrind: valgrind --tool=memcheck --leak-check=full --track-origins=yes bin/gcg -f model.cip leads to the following
A Dantzig-Wolfe reformulation is applied to solve the original problem.
Chosen structure has 2 blocks and 11 linking constraints.
This decomposition has a maxwhite score of 0.486146.
Warning: Discretization with continuous variables is only an experimental feature.
Matrix has 2 blocks, using 1 aggregated pricing problem.
time | node | left |SLP iter|MLP iter|LP it/n| mem |mdpt |ovars|mvars|ocons|mcons|mcuts| dualbound | primalbound | deg | gap
17.0s| 1 | 0 | 0 | 0 | - |4600k| 0 | 262 | 0 | 397 | 0 | 0 | 1.804966e+02 | -- | -- | Inf
==55482== Conditional jump or move depends on uninitialised value(s)
==55482== at 0xB77BD9: GCGmasterIsSolValid (pricer_gcg.cpp:5196)
==55482== by 0xAEDAF2: GCGtransformMastersolToOrigsol (misc.c:164)
==55482== by 0x85C625: consCheckIntegralOrig (cons_integralorig.c:296)
==55482== by 0x505467D: SCIPconshdlrCheck (cons.c:3781)
==55482== by 0x5360741: checkSolOrig (scip_sol.c:173)
==55482== by 0x5369AD9: SCIPtrySol (scip_sol.c:3181)
==55482== by 0x4D8E9A7: heurExecTrivial (heur_trivial.c:184)
==55482== by 0x50C9D6B: SCIPheurExec (heur.c:1312)
==55482== by 0x53E7A55: SCIPprimalHeuristics (solve.c:363)
==55482== by 0x537081C: presolve (scip_solve.c:1318)
==55482== by 0x5377171: SCIPpresolve (scip_solve.c:2493)
==55482== by 0x5377FD1: SCIPsolve (scip_solve.c:2731)
==55482== Uninitialised value was created by a heap allocation
==55482== at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==55482== by 0x491893A: BMSallocMemory_call (memory.c:411)
==55482== by 0xB6C36E: SCIPincludePricerGcg (pricer_gcg.cpp:4120)
==55482== by 0xBD3CEF: SCIPincludeRelaxGcg (relax_gcg.c:3234)
==55482== by 0x963D9B: SCIPincludeGcgPlugins (gcgplugins.c:448)
==55482== by 0x639A10: SCIPrunGCGShell (main.c:416)
==55482== by 0x639BB0: main (main.c:445)
==55482==
This is seen even the times when a segmentation fault isn't thrown but then it just continues as normal.
Looking at GCGmasterIsSolValid (pricer_gcg.cpp:5196):
for( i = 0; i < pricerdata->nartificialvars; ++i )
it seems probable that nartificialvars is the uninitialized value.
One workaround to this problem I've used is to initialize nartificialvars in SCIPincludePricerGcg() by adding pricerdata->nartificialvars = 0; to row 4132 in pricer_gcg.cpp
However, this do not feel exactly right, so I wonder if there is something else that can be done to avoid this? I have GCG 3.5.3 and SCIP 8.03 installed on ubuntu WSL. The model that caused the above fault is attached.
Thanks in advance,
Best Regards
Lukas Eveborn
_______________________________________________
Scip mailing list
Scip at zib.de<mailto:Scip at zib.de>
https://listserv.zib.de/mailman/listinfo/scip
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.zib.de/pipermail/scip/attachments/20230809/628295c6/attachment.html>
More information about the Scip
mailing list