[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