Skip to content

CGAL asserts when calling approximate on a polygon #23

@Willem3141

Description

@Willem3141
 wsonke   SimplificationBranch  ~  Git  cartocrow  ./build-debug/frontend/cartocrow data/europe-population-necklace.json
terminate called after throwing an instance of 'CGAL::Precondition_exception'
  what():  CGAL ERROR: precondition violation!
Expr: (m_traits.compare_y_at_x_2_object()(p, cv) == EQUAL) && compare_xy(cv.left(), p) == SMALLER && compare_xy(cv.right(), p) == LARGER
File: /usr/include/CGAL/Arr_segment_traits_2.h
Line: 608
fish: Job 1, './build-debug/frontend/cartocro…' terminated by signal SIGABRT (Abort)
(gdb) bt
#0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=140737276269120) at ./nptl/pthread_kill.c:44
#1  __pthread_kill_internal (signo=6, threadid=140737276269120) at ./nptl/pthread_kill.c:78
#2  __GI___pthread_kill (threadid=140737276269120, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
#3  0x00007ffff6369476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#4  0x00007ffff634f7f3 in __GI_abort () at ./stdlib/abort.c:79
#5  0x00007ffff66f8bbe in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
#6  0x00007ffff670424c in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
#7  0x00007ffff67042b7 in std::terminate() () from /lib/x86_64-linux-gnu/libstdc++.so.6
#8  0x00007ffff6704518 in __cxa_throw () from /lib/x86_64-linux-gnu/libstdc++.so.6
#9  0x0000555555577ddd in CGAL::precondition_fail (
    expr=0x555555981cc8 "(m_traits.compare_y_at_x_2_object()(p, cv) == EQUAL) && compare_xy(cv.left(), p) == SMALLER && compare_xy(cv.right(), p) == LARGER", file=0x5555559711f8 "/usr/include/CGAL/Arr_segment_traits_2.h", line=608, 
    msg=0x55555596f11c "") at /usr/include/CGAL/assertions_impl.h:195
#10 0x00005555556f5069 in CGAL::Arr_segment_traits_2<CGAL::Epick>::Split_2::operator() (this=0x7fffffffcd98, cv=..., p=..., c1=..., c2=...) at /usr/include/CGAL/Arr_segment_traits_2.h:608
#11 0x00005555556e95b2 in CGAL::Surface_sweep_2::Surface_sweep_2<CGAL::Gps_polygon_validation_visitor<CGAL::Gps_segment_traits_2<CGAL::Epick, std::vector<CGAL::Point_2<CGAL::Epick>, std::allocator<CGAL::Point_2<CGAL::Epick> > >, CGAL::Arr_segment_traits_2<CGAL::Epick> >, std::allocator<int> > >::_handle_left_curves (this=0x7fffffffcf10) at /usr/include/CGAL/Surface_sweep_2/Surface_sweep_2_impl.h:167
#12 0x0000555555621c96 in CGAL::Surface_sweep_2::No_intersection_surface_sweep_2<CGAL::Gps_polygon_validation_visitor<CGAL::Gps_segment_traits_2<CGAL::Epick, std::vector<CGAL::Point_2<CGAL::Epick>, std::allocator<CGAL::Point_2<CGAL::Epick> > >, CGAL::Arr_segment_traits_2<CGAL::Epick> >, std::allocator<int> > >::_sweep (this=0x7fffffffcf10) at /usr/include/CGAL/Surface_sweep_2/No_intersection_surface_sweep_2_impl.h:160
#13 0x000055555560bf04 in CGAL::Surface_sweep_2::No_intersection_surface_sweep_2<CGAL::Gps_polygon_validation_visitor<CGAL::Gps_segment_traits_2<CGAL::Epick, std::vector<CGAL::Point_2<CGAL::Epick>, std::allocator<CGAL::Point_2<CGAL::Epick> > >, CGAL::Arr_segment_traits_2<CGAL::Epick> >, std::allocator<int> > >::sweep<std::_List_iterator<CGAL::Arr_segment_2<CGAL::Epick> > > (this=0x7fffffffcf10, curves_begin={<CGAL::Arr_segment_traits_2<CGAL::Epick>::_Segment_cached_2> = {m_l = {<CGAL::LineC2<CGAL::Epick>> = {base = {_M_elems = {9.8813129168249309e-324, 4.6355715365405525e-310, 4.6355705443059468e-310}}}, <No data fields>}, m_ps = {<CGAL::PointC2<CGAL::Epick>> = {base = {<CGAL::VectorC2<CGAL::Epick>> = {base = {_M_elems = {337.12700000000001, 321.51400000000001}}}, <No data fields>}}, <No data fields>}, m_pt = {<CGAL::PointC2<CGAL::Epick>> = {base = {<CGAL::VectorC2<CGAL::Epick>> = {base = {_M_elems = {336.899, 321.96899999999999}}}, <No data fields>}}, <No data fields>}, m_is_directed_right = false, m_is_vert = false, m_is_computed = false, m_is_degen = false}, <No data fields>}, curves_end={<CGAL::Arr_segment_traits_2<CGAL::Epick>::_Segment_cached_2> = {m_l = {<CGAL::LineC2<CGAL::Epick>> = {base = {_M_elems = {3.0632070042157286e-322, -2.4031191350563669e+138, 4.635570854654468e-310}}}, <No data fields>}, m_ps = {<CGAL::PointC2<CGAL::Epick>> = {base = {<CGAL::VectorC2<CGAL::Epick>> = {base = {_M_elems = {6.9533558072160389e-310, 2.1219634123731721e-314}}}, <No data fields>}}, <No data fields>}, m_pt = {<CGAL::PointC2<CGAL::Epick>> = {base = {<CGAL::VectorC2<CGAL::Epick>> = {base = {_M_elems = {4.6355705676261911e-310, 6.9533558072832318e-310}}}, <No data fields>}}, <No data fields>}, m_is_directed_right = 96, m_is_vert = 212, m_is_computed = 255, m_is_degen = 255}, <No data fields>}) at /usr/include/CGAL/No_intersection_surface_sweep_2.h:252
#14 0x0000555555600093 in CGAL::Gps_polygon_validation_visitor<CGAL::Gps_segment_traits_2<CGAL::Epick, std::vector<CGAL::Point_2<CGAL::Epick>, std::allocator<CGAL::Point_2<CGAL::Epick> > >, CGAL::Arr_segment_traits_2<CGAL::Epick> >, std::allocator<int> >::sweep<std::_List_iterator<CGAL::Arr_segment_2<CGAL::Epick> > > (this=0x7fffffffcec0, begin={<CGAL::Arr_segment_traits_2<CGAL::Epick>::_Segment_cached_2> = {m_l = {<CGAL::LineC2<CGAL::Epick>> = {base = {_M_elems = {9.8813129168249309e-324, 4.6355715365405525e-310, 4.6355705443059468e-310}}}, <No data fields>}, m_ps = {<CGAL::PointC2<CGAL::Epick>> = {base = {<CGAL::VectorC2<CGAL::Epick>> = {base = {_M_elems = {337.12700000000001, 321.51400000000001}}}, <No data fields>}}, <No data fields>}, m_pt = {<CGAL::PointC2<CGAL::Epick>> = {base = {<CGAL::VectorC2<CGAL::Epick>> = {base = {_M_elems = {336.899, 321.96899999999999}}}, <No data fields>}}, <No data fields>}, m_is_directed_right = false, m_is_vert = false, m_is_computed = false, m_is_degen = false}, <No data fields>}, end={<CGAL::Arr_segment_traits_2<CGAL::Epick>::_Segment_cached_2> = {m_l = {<CGAL::LineC2<CGAL::Epick>> = {base = {_M_elems = {3.0632070042157286e-322, -2.4031191350563669e+138, 4.635570854654468e-310}}}, <No data fields>}, m_ps = {<CGAL::PointC2<CGAL::Epick>> = {base = {<CGAL::VectorC2<CGAL::Epick>> = {base = {_M_elems = {6.9533558072160389e-310, 2.1219634123731721e-314}}}, <No data fields>}}, <No data fields>}, m_pt = {<CGAL::PointC2<CGAL::Epick>> = {base = {<CGAL::VectorC2<CGAL::Epick>> = {base = {_M_elems = {4.6355705676261911e-310, 6.9533558072832318e-310}}}, <No data fields>}}, <No data fields>}, m_is_directed_right = 96, m_is_vert = 212, m_is_computed = 255, m_is_degen = 255}, <No data fields>}) at /usr/include/CGAL/Boolean_set_operations_2/Gps_polygon_validation.h:125
#15 0x00005555555f7794 in CGAL::is_relatively_simple_polygon<CGAL::Gps_segment_traits_2<CGAL::Epick, std::vector<CGAL::Point_2<CGAL::Epick>, std::allocator<CGAL::Point_2<CGAL::Epick> > >, CGAL::Arr_segment_traits_2<CGAL::Epick> > > (pgn=..., traits=...) at /usr/include/CGAL/Boolean_set_operations_2/Gps_polygon_validation.h:498
#16 0x00005555555f2b3f in CGAL::is_relatively_simple_polygon_with_holes<CGAL::Gps_segment_traits_2<CGAL::Epick, std::vector<CGAL::Point_2<CGAL::Epick>, std::allocator<CGAL::Point_2<CGAL::Epick> > >, CGAL::Arr_segment_traits_2<CGAL::Epick> > > (pgn=..., traits=...) at /usr/include/CGAL/Boolean_set_operations_2/Gps_polygon_validation.h:529
#17 0x00005555555f027c in CGAL::is_valid_polygon_with_holes<CGAL::Gps_segment_traits_2<CGAL::Epick, std::vector<CGAL::Point_2<CGAL::Epick>, std::allocator<CGAL::Point_2<CGAL::Epick> > >, CGAL::Arr_segment_traits_2<CGAL::Epick> > > (pgn=..., traits=...) at /usr/include/CGAL/Boolean_set_operations_2/Gps_polygon_validation.h:778
#18 0x00005555555ee4a6 in CGAL::is_valid_unknown_polygon<CGAL::Gps_segment_traits_2<CGAL::Epick, std::vector<CGAL::Point_2<CGAL::Epick>, std::allocator<CGAL::Point_2<CGAL::Epick> > >, CGAL::Arr_segment_traits_2<CGAL::Epick> > > (pgn=..., traits=...) at /usr/include/CGAL/Boolean_set_operations_2/Gps_polygon_validation.h:803
#19 0x00005555555ec992 in CGAL::Boolean_set_operation_2_internal::PreconditionValidationPolicy::is_valid<CGAL::Polygon_with_holes_2<CGAL::Epick, std::vector<CGAL::Point_2<CGAL::Epick>, std::allocator<CGAL::Point_2<CGAL::Epick> > > >, CGAL::Gps_segment_traits_2<CGAL::Epick, std::vector<CGAL::Point_2<CGAL::Epick>, std::allocator<CGAL::Point_2<CGAL::Epick> > >, CGAL::Arr_segment_traits_2<CGAL::Epick> > > (p=..., t=...) at /usr/include/CGAL/General_polygon_set_on_surface_2.h:39
#20 0x00005555555eb135 in CGAL::Gps_on_surface_base_2<CGAL::Gps_segment_traits_2<CGAL::Epick, std::vector<CGAL::Point_2<CGAL::Epick>, std::allocator<CGAL::Point_2<CGAL::Epick> > >, CGAL::Arr_segment_traits_2<CGAL::Epick> >, CGAL::Arr_bounded_planar_topology_traits_2<CGAL::Gps_segment_traits_2<CGAL::Epick, std::vector<CGAL::Point_2<CGAL::Epick>, std::allocator<CGAL::Point_2<CGAL::Epick> > >, CGAL::Arr_segment_traits_2<CGAL::Epick> >, CGAL::Gps_default_dcel<CGAL::Gps_segment_traits_2<CGAL::Epick, std::vector<CGAL::Point_2<CGAL::Epick>, std::allocator<CGAL::Point_2<CGAL::Epick> > >, CGAL::Arr_segment_traits_2<CGAL::Epick> > > >, CGAL::Boolean_set_operation_2_internal::PreconditionValidationPolicy>::insert (this=0x7fffffffd540, pgn_with_holes=...) at /usr/include/CGAL/Boolean_set_operations_2/Gps_on_surface_base_2.h:277
#21 0x00005555555e7ee9 in cartocrow::approximate (p=...) at /home/wsonke/Git/cartocrow/cartocrow/core/core.cpp:68
#22 0x0000555555901a62 in cartocrow::necklace_map::ComputeFeasibleInterval::operator() (this=0x555556898e20, bead=std::shared_ptr<cartocrow::necklace_map::Bead> (use count 1, weak count 0) = {...}, necklace=...) at /home/wsonke/Git/cartocrow/cartocrow/necklace_map/feasible_interval/compute_feasible_interval.cpp:64
#23 0x00005555558fbbe6 in cartocrow::necklace_map::NecklaceMap::compute (this=0x555556898d50) at /home/wsonke/Git/cartocrow/cartocrow/necklace_map/necklace_map.cpp:54
#24 0x00005555555722d0 in main (argc=2, argv=0x7fffffffddb8) at /home/wsonke/Git/cartocrow/frontend/cartocrow.cpp:91

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions