[Cbc] "Index out of bounds" when pre-processing problems with SOSes
John Forrest
john.forrest at fastercoin.com
Tue May 13 08:25:33 EDT 2014
Dirk,
SOS with pre-processing is a bit delicate - I attach a modified driver
which resets the SOS indices after preprocessing.
I used a const_cast which is a bit naughty (but safe).
John
On 13/05/14 09:17, Dirk Eßer wrote:
> Hi John,
>
> the driver attached to this mail fails (when fed the "test3.mps") with
> the following stacktrace:
>
> #0 0x00007ffff4c43849 in raise () from /lib64/libc.so.6
> #1 0x00007ffff4c44cd8 in abort () from /lib64/libc.so.6
> #2 0x00007ffff553c655 in __gnu_cxx::__verbose_terminate_handler()
> () from /usr/lib64/libstdc++.so.6
> #3 0x00007ffff553a7c6 in ?? () from /usr/lib64/libstdc++.so.6
> #4 0x00007ffff553a7f3 in std::terminate() () from
> /usr/lib64/libstdc++.so.6
> #5 0x00007ffff553aa1e in __cxa_throw () from
> /usr/lib64/libstdc++.so.6
> #6 0x00007ffff6c77185 in indexError (index=2,
> methodName="isInteger") at OsiClpSolverInterface.cpp:1447
> #7 0x00007ffff6c7d02f in OsiClpSolverInterface::isInteger
> (this=0x64d5e0, colNumber=2) at OsiClpSolverInterface.cpp:2756
> #8 0x00007ffff7b86dd1 in CbcSOS::CbcSOS (this=0x629530,
> model=0x7fffffffd860, numberMembers=2, which=0x64ce90,
> weights=0x6488b0, identifier=0, type=1) at CbcSOS.cpp:67
> #9 0x00007ffff7b4e0a0 in CbcModel::findIntegers
> (this=0x7fffffffd860, startAgain=false, type=0) at CbcModel.cpp:10949
> #10 0x00007ffff7b28f30 in CbcModel::branchAndBound
> (this=0x7fffffffd860, doStatistics=0) at CbcModel.cpp:1920
> #11 0x0000000000403e4e in main (argc=1, argv=0x7fffffffde88) at
> user_driver.cpp:328
>
> on
>
> SMP x86_64 x86_64 x86_64 GNU/Linux
> g++ (SUSE Linux) 4.8.1 20130909 [gcc-4_8-branch revision 202388]
> compiled against 2.8 of the CBC library
>
> We also observe this behaviour from within our main application, which
> creates the problem instance programmatically (but whose actual
> processing step is pretty close to what the driver does). Inspecting
> the variables in frame #7, we find, that the number of columns is
> reported to be 0. I am not sure, how this should be interpreted...
>
> There was a similar problem with integer declarations (which we
> formerly did by adding OsiSimpleInteger objects), where the program
> triggered an assertion from time to time. After switching the
> declaration code to calls to "setInteger" on the
> "OsiClpSolverInterface", that problem went away. Not sure, whether it
> was related; IIRC, when this tended to happen, the reported column
> count after pre-processing was not 0.
>
> Any help appreciated.
>
> Dirk
>
>
>
>
> _______________________________________________
> Cbc mailing list
> Cbc at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/cbc
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/cbc/attachments/20140513/a136148b/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: user_driver.cpp
Type: text/x-c++src
Size: 12124 bytes
Desc: not available
URL: <http://list.coin-or.org/pipermail/cbc/attachments/20140513/a136148b/attachment-0001.bin>
More information about the Cbc
mailing list