[Couenne] Bug in reformulation?

Pietro Belotti pbelott at clemson.edu
Tue Jun 14 06:52:36 EDT 2011


Francois,

I have just submitted a trunk revision that doesn't eliminate but only 
postpones that segfault. The problem, apparently, lied in at least one 
variable not pointing to the same CouenneDomain as the others. I'll 
investigate this further, but at least now Couenne finishes the BB and 
gets a .sol file with value in accordance with the best known solution. 
The segfault still occurs in one of the destructors.

Regards,
Pietro

--
Pietro Belotti
Dept. of Mathematical Sciences
Clemson University
email: pbelott at clemson.edu
phone: 864-656-6765
web:   myweb.clemson.edu/~pbelott

On Sun, 29 May 2011, Francois Margot wrote:

> Running trunk on st_e32.nl, valgrind finds an error in the reformulation
> before crashing. See below.
>
> Francois
>
> ---------------------
>
> ==26003== Invalid read of size 8
> ==26003==    at 0x44FFA5:
> Couenne::compExpr::operator()(Couenne::exprAux*, Couen
> ne::exprAux*) const (CouenneExprAux.hpp:212)
> ==26003==    by 0x450AF8: std::_Rb_tree<Couenne::exprAux*,
> Couenne::exprAux*, st
> d::_Identity<Couenne::exprAux*>, Couenne::compExpr,
> std::allocator<Couenne::expr
> Aux*> >::_M_lower_bound(std::_Rb_tree_node<Couenne::exprAux*>*,
> std::_Rb_tree_no
> de<Couenne::exprAux*>*, Couenne::exprAux* const&) (stl_tree.h:1004)
> ==26003==    by 0x4503A9: std::_Rb_tree<Couenne::exprAux*,
> Couenne::exprAux*, st
> d::_Identity<Couenne::exprAux*>, Couenne::compExpr,
> std::allocator<Couenne::expr
> Aux*> >::find(Couenne::exprAux* const&) (stl_tree.h:1519)
> ==26003==    by 0x4501F0: std::set<Couenne::exprAux*, Couenne::compExpr,
> std::al
> locator<Couenne::exprAux*> >::find(Couenne::exprAux* const&)
> (stl_set.h:585)
> ==26003==    by 0x457DA8:
> Couenne::CouenneConstraint::standardize(Couenne::Couen
> neProblem*) (constrStandardize.cpp:166)
> ==26003==    by 0x4548CB: Couenne::CouenneProblem::standardize()
> (standardize.cp
> p:193)
> ==26003==    by 0x44AFA3:
> Couenne::CouenneProblem::reformulate(Couenne::CouenneC
> utGenerator*) (reformulate.cpp:79)
> ==26003==    by 0x40C0CC:
> Couenne::CouenneSetup::InitializeCouenne(char**, Couen
> ne::CouenneProblem*, Ipopt::SmartPtr<Bonmin::TMINLP>,
> Couenne::CouenneInterface*
> , Bonmin::Bab*) (BonCouenneSetup.cpp:235)
> ==26003==    by 0x405F4D: main (BonCouenne.cpp:117)
> ==26003==  Address 0x58098b0 is 0 bytes inside a block of size 72 free'd
> ==26003==    at 0x4A04E99: operator delete(void*)
> (vg_replace_malloc.c:346)
> ==26003==    by 0x47E07D: Couenne::exprAux::~exprAux() (exprAux.cpp:105)
> ==26003==    by 0x45C4C7: Couenne::CouenneProblem::splitAux(double,
> Couenne::exp
> ression*, Couenne::expression*&, bool*, Couenne::expression::auxSign&)
> (splitAux
> .cpp:502)
> ==26003==    by 0x45788E:
> Couenne::CouenneConstraint::standardize(Couenne::Couen
> neProblem*) (constrStandardize.cpp:79)
> ==26003==    by 0x4548CB: Couenne::CouenneProblem::standardize()
> (standardize.cp
> p:193)
> ==26003==    by 0x44AFA3:
> Couenne::CouenneProblem::reformulate(Couenne::CouenneC
> utGenerator*) (reformulate.cpp:79)
> ==26003==    by 0x40C0CC:
> Couenne::CouenneSetup::InitializeCouenne(char**, Couen
> ne::CouenneProblem*, Ipopt::SmartPtr<Bonmin::TMINLP>,
> Couenne::CouenneInterface*
> , Bonmin::Bab*) (BonCouenneSetup.cpp:235)
> ==26003==    by 0x405F4D: main (BonCouenne.cpp:117)
> ==26003==
> ==26003== Invalid read of size 8
> ==26003==    at 0x44FFBB:
> Couenne::compExpr::operator()(Couenne::exprAux*, Couen
> ne::exprAux*) const (CouenneExprAux.hpp:212)
> ==26003==    by 0x450AF8: std::_Rb_tree<Couenne::exprAux*,
> Couenne::exprAux*, st
> d::_Identity<Couenne::exprAux*>, Couenne::compExpr,
> std::allocator<Couenne::expr
> Aux*> >::_M_lower_bound(std::_Rb_tree_node<Couenne::exprAux*>*,
> std::_Rb_tree_no
> de<Couenne::exprAux*>*, Couenne::exprAux* const&) (stl_tree.h:1004)
> ==26003==    by 0x4503A9: std::_Rb_tree<Couenne::exprAux*,
> Couenne::exprAux*, st
> d::_Identity<Couenne::exprAux*>, Couenne::compExpr,
> std::allocator<Couenne::expr
> Aux*> >::find(Couenne::exprAux* const&) (stl_tree.h:1519)
> ==26003==    by 0x4501F0: std::set<Couenne::exprAux*, Couenne::compExpr,
> std::al
> locator<Couenne::exprAux*> >::find(Couenne::exprAux* const&)
> (stl_set.h:585)
> ==26003==    by 0x457DA8:
> Couenne::CouenneConstraint::standardize(Couenne::Couen
> neProblem*) (constrStandardize.cpp:166)
> ==26003==    by 0x4548CB: Couenne::CouenneProblem::standardize()
> (standardize.cp
> p:193)
> ==26003==    by 0x44AFA3:
> Couenne::CouenneProblem::reformulate(Couenne::CouenneC
> utGenerator*) (reformulate.cpp:79)
> ==26003==    by 0x40C0CC:
> Couenne::CouenneSetup::InitializeCouenne(char**, Couen
> ne::CouenneProblem*, Ipopt::SmartPtr<Bonmin::TMINLP>,
> Couenne::CouenneInterface*
> , Bonmin::Bab*) (BonCouenneSetup.cpp:235)
> ==26003==    by 0x405F4D: main (BonCouenne.cpp:117)
> ==26003==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
> ==26003==
> ==26003==
> ==26003== Process terminating with default action of signal 11 (SIGSEGV)
> ==26003==  Access not within mapped region at address 0x0
>
>
>
>
>
> _______________________________________________
> Couenne mailing list
> Couenne at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/couenne
>



More information about the Couenne mailing list