Skip to content

CGAL asserts when calling approximate on a polygon #23

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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