[Couenne-tickets] [Couenne] #24: segmentation fault in compExpr::operator()

Couenne coin-trac at coin-or.org
Wed Feb 6 11:53:26 EST 2013


#24: segmentation fault in compExpr::operator()
---------------------+----------------------
 Reporter:  stefan   |      Owner:  pbelotti
     Type:  defect   |     Status:  new
 Priority:  major    |  Milestone:
Component:  Couenne  |    Version:
 Keywords:           |
---------------------+----------------------
 I got a new segmentation fault from inside the {{{standardize()}}}
 procedure:

 The problem in printed form is:
 {{{
 objectives:
 min 1
 constraints:
 ((-(100*(x_1+(-(x_1^2)))))+100*x_0) = 0
 variables:
 x_0 [ -1e+50 , 1e+50 ]
 x_1 [ -1e+50 , 1e+50 ]
 end
 }}}

 valgrind says:
 {{{
 ==18675== Invalid read of size 8
 ==18675==    at 0x51BC917:
 Couenne::compExpr::operator()(Couenne::exprAux*, Couenne::exprAux*) const
 (CouenneExprAux.hpp:212)
 ==18675==    by 0x51BF212: std::_Rb_tree<Couenne::exprAux*,
 Couenne::exprAux*, std::_Identity<Couenne::exprAux*>, Couenne::compExpr,
 std::allocator<Couenne::exprAux*>
 >::_M_lower_bound(std::_Rb_tree_node<Couenne::exprAux*>*,
 std::_Rb_tree_node<Couenne::exprAux*>*, Couenne::exprAux* const&)
 (stl_tree.h:1080)
 ==18675==    by 0x51BDDD0: std::_Rb_tree<Couenne::exprAux*,
 Couenne::exprAux*, std::_Identity<Couenne::exprAux*>, Couenne::compExpr,
 std::allocator<Couenne::exprAux*> >::find(Couenne::exprAux* const&)
 (stl_tree.h:1526)
 ==18675==    by 0x51BCE52: std::set<Couenne::exprAux*, Couenne::compExpr,
 std::allocator<Couenne::exprAux*> >::find(Couenne::exprAux* const&)
 (stl_set.h:605)
 ==18675==    by 0x51E9D40:
 Couenne::CouenneConstraint::standardize(Couenne::CouenneProblem*)
 (constrStandardize.cpp:176)
 ==18675==    by 0x51EE631: Couenne::CouenneProblem::standardize()
 (standardize.cpp:273)
 ==18675==    by 0x51D5F20:
 Couenne::CouenneProblem::reformulate(Couenne::CouenneCutGenerator*)
 (reformulate.cpp:77)
 ==18675==    by 0x4E7444E:
 Couenne::CouenneSetup::InitializeCouenne(char**, Couenne::CouenneProblem*,
 Ipopt::SmartPtr<Bonmin::TMINLP>, Couenne::CouenneInterface*, Bonmin::Bab*)
 (BonCouenneSetup.cpp:258)
 ==18675==    by 0x409A80: main (BonCouenne.cpp:195)
 ==18675==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
 }}}

 And indeed, {{{e0 -> Image ()}}} in {{{compExpr::operator()}}} is NULL.

 This time, I modified !BonCouenne.cpp to make this reproducible for you.
 You should get it by just replacing your !BonCouenne.cpp with the attached
 one, then make and ./couenne.

 I'm using stable/0.4 rev941.

-- 
Ticket URL: <https://projects.coin-or.org/ticket/24>
Couenne <https://projects.coin-or.org/Couenne>
Couenne, a solver for non-convex MINLP



More information about the Couenne-tickets mailing list