jdumas · GitHub

Following @jdumas' suggestion, here is the output from address sanitizer:

=================================================================
==69587==ERROR: AddressSanitizer: heap-use-after-free on address 0x604001b4fc70 at pc 0x000100211fbc bp 0x7ffeefb25e80 sp 0x7ffeefb25e78
READ of size 4 at 0x604001b4fc70 thread T0
    #0 0x100211fbb in CGAL::Handle_for<CGAL::Gmpq_rep, std::__1::allocator<CGAL::Gmpq_rep> >::Handle_for(CGAL::Handle_for<CGAL::Gmpq_rep, std::__1::allocator<CGAL::Gmpq_rep> > const&) Handle_for.h:153
    #1 0x100211eb7 in CGAL::Gmpq::Gmpq(CGAL::Gmpq const&) Gmpq_type.h:72
    #2 0x100210e8c in CGAL::Gmpq::Gmpq(CGAL::Gmpq const&) Gmpq_type.h:72
    #3 0x100296a97 in std::__1::array<CGAL::Gmpq, (1) + (sizeof...(CGAL::Gmpq, CGAL::Gmpq))> CGAL::make_array<CGAL::Gmpq, CGAL::Gmpq, CGAL::Gmpq>(CGAL::Gmpq const&, CGAL::Gmpq const&, CGAL::Gmpq const&) array.h:84
    #4 0x100296a2c in CGAL::VectorC3<CGAL::Simple_cartesian<CGAL::Gmpq> >::VectorC3(CGAL::Gmpq const&, CGAL::Gmpq const&, CGAL::Gmpq const&) Vector_3.h:76
    #5 0x1002969ec in CGAL::VectorC3<CGAL::Simple_cartesian<CGAL::Gmpq> >::VectorC3(CGAL::Gmpq const&, CGAL::Gmpq const&, CGAL::Gmpq const&) Vector_3.h:76
    #6 0x10029695f in CGAL::CartesianKernelFunctors::Construct_vector_3<CGAL::Simple_cartesian<CGAL::Gmpq> >::operator()(CGAL::Return_base_tag, CGAL::Gmpq const&, CGAL::Gmpq const&, CGAL::Gmpq const&) const function_objects.h:3540
    #7 0x1002967ff in CGAL::Vector_3<CGAL::Simple_cartesian<CGAL::Gmpq> >::Vector_3<CGAL::Gmpq, CGAL::Gmpq, CGAL::Gmpq>(CGAL::Gmpq const&, CGAL::Gmpq const&, CGAL::Gmpq const&) Vector_3.h:100
    #8 0x10029668c in CGAL::Vector_3<CGAL::Simple_cartesian<CGAL::Gmpq> >::Vector_3<CGAL::Gmpq, CGAL::Gmpq, CGAL::Gmpq>(CGAL::Gmpq const&, CGAL::Gmpq const&, CGAL::Gmpq const&) Vector_3.h:100
    #9 0x10029664c in CGAL::PointC3<CGAL::Simple_cartesian<CGAL::Gmpq> >::PointC3(CGAL::Gmpq const&, CGAL::Gmpq const&, CGAL::Gmpq const&) Point_3.h:54
    #10 0x10029660c in CGAL::PointC3<CGAL::Simple_cartesian<CGAL::Gmpq> >::PointC3(CGAL::Gmpq const&, CGAL::Gmpq const&, CGAL::Gmpq const&) Point_3.h:54
    #11 0x10029657f in CGAL::CartesianKernelFunctors::Construct_point_3<CGAL::Simple_cartesian<CGAL::Gmpq> >::operator()(CGAL::Return_base_tag, CGAL::Gmpq const&, CGAL::Gmpq const&, CGAL::Gmpq const&) const function_objects.h:3042
    #12 0x1004cc1b9 in CGAL::Lazy_rep_4<CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::CartesianKernelFunctors::Construct_point_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::CartesianKernelFunctors::Construct_point_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > >, CGAL::Return_base_tag, CGAL::Lazy_exact_nt<CGAL::Gmpq>, CGAL::Lazy_exact_nt<CGAL::Gmpq>, CGAL::Lazy_exact_nt<CGAL::Gmpq> >::update_exact() const Lazy.h:455
    #13 0x1004d01ff in CGAL::Lazy_rep<CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >::exact() Lazy.h:276
    #14 0x1004d012c in CGAL::Lazy<CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Gmpq, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >::exact() const Lazy.h:792
    #15 0x1004ce454 in CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Gmpq> > const& CGAL::exact<CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Gmpq, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >(CGAL::Lazy<CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Gmpq, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > > const&) Lazy.h:92
    #16 0x1007bfbbc in CGAL::Lazy_rep_4<CGAL::Plane_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Plane_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::CommonKernelFunctors::Construct_plane_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::CommonKernelFunctors::Construct_plane_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > >, CGAL::Return_base_tag, CGAL::Point_3<CGAL::Epeck>, CGAL::Point_3<CGAL::Epeck>, CGAL::Point_3<CGAL::Epeck> >::update_exact() const Lazy.h:455
    #17 0x100516d5f in CGAL::Lazy_rep<CGAL::Plane_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Plane_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >::exact() Lazy.h:276
    #18 0x100516c8c in CGAL::Lazy<CGAL::Plane_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Plane_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Gmpq, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >::exact() const Lazy.h:792
    #19 0x100516c5b in CGAL::Plane_3<CGAL::Epeck>::ET const& CGAL::Exact_converter<CGAL::Epeck, CGAL::Simple_cartesian<CGAL::Gmpq> >::operator()<CGAL::Plane_3<CGAL::Epeck> >(CGAL::Plane_3<CGAL::Epeck> const&) const Lazy.h:502
    #20 0x1007c1738 in CGAL::Sign CGAL::Filtered_predicate<CGAL::CommonKernelFunctors::Oriented_side_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::CommonKernelFunctors::Oriented_side_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Exact_converter<CGAL::Epeck, CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Approx_converter<CGAL::Epeck, CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, true>::operator()<CGAL::Plane_3<CGAL::Epeck>, CGAL::Point_3<CGAL::Epeck> >(CGAL::Plane_3<CGAL::Epeck> const&, CGAL::Point_3<CGAL::Epeck> const&) const Filtered_predicate.h:176
    #21 0x1007c0f26 in CGAL::Sign CGAL::Static_filtered_predicate<CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Filtered_predicate<CGAL::CommonKernelFunctors::Oriented_side_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::CommonKernelFunctors::Oriented_side_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Exact_converter<CGAL::Epeck, CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Approx_converter<CGAL::Epeck, CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, true>, CGAL::Filtered_predicate<CGAL::CommonKernelFunctors::Oriented_side_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::CommonKernelFunctors::Oriented_side_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Cartesian_converter<CGAL::Type_equality_wrapper<CGAL::Cartesian_base_no_ref_count<double, CGAL::Epick>, CGAL::Epick>, CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::NT_converter<double, CGAL::Gmpq> >, CGAL::Cartesian_converter<CGAL::Type_equality_wrapper<CGAL::Cartesian_base_no_ref_count<double, CGAL::Epick>, CGAL::Epick>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<double, CGAL::Interval_nt<false> > >, true> >::operator()<CGAL::Plane_3<CGAL::Epeck>, CGAL::Point_3<CGAL::Epeck> >(CGAL::Plane_3<CGAL::Epeck> const&, CGAL::Point_3<CGAL::Epeck> const&) const Static_filtered_predicate.h:73
    #22 0x1007bb26a in CGAL::Plane_3<CGAL::Epeck>::oriented_side(CGAL::Point_3<CGAL::Epeck> const&) const Plane_3.h:204
    #23 0x1007a84ad in void igl::copyleft::cgal::order_facets_around_edge<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >(Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, -1, 0, -1, -1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, unsigned long, unsigned long, std::__1::vector<int, std::__1::allocator<int> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, bool) order_facets_around_edge.cpp:136
    #24 0x1007937a6 in unsigned long igl::copyleft::cgal::extract_cells_single_component<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, unsigned long, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, -1, 0, -1, -1> >(Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, -1, 0, -1, -1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, std::__1::vector<std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >, std::__1::allocator<std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > > > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&) extract_cells.cpp:484
    #25 0x1001dcf75 in unsigned long igl::copyleft::cgal::extract_cells<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, unsigned long, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, -1, 0, -1, -1> >(Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, -1, 0, -1, -1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, std::__1::vector<std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >, std::__1::allocator<std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > > > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&) extract_cells.cpp:129
    #26 0x1001cc4cc in bool igl::copyleft::cgal::mesh_boolean<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<unsigned long, 2, 1, 0, 2, 1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<long, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<unsigned long, 2, 1, 0, 2, 1> > const&, std::__1::function<int (Eigen::Matrix<int, 1, -1, 1, 1, -1>)> const&, std::__1::function<int (int, int)> const&, Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<long, -1, 1, 0, -1, 1> >&) mesh_boolean.cpp:253
    #27 0x1001b2991 in bool igl::copyleft::cgal::mesh_boolean<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<long, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, std::__1::function<int (Eigen::Matrix<int, 1, -1, 1, 1, -1>)> const&, std::__1::function<int (int, int)> const&, Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<long, -1, 1, 0, -1, 1> >&) mesh_boolean.cpp:123
    #28 0x1001b0e63 in bool igl::copyleft::cgal::mesh_boolean<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<long, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, igl::MeshBooleanType const&, Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<long, -1, 1, 0, -1, 1> >&) mesh_boolean.cpp:56
    #29 0x1001b0597 in igl::copyleft::cgal::CSGTree::CSGTree(igl::copyleft::cgal::CSGTree const&, igl::copyleft::cgal::CSGTree const&, igl::MeshBooleanType const&) CSGTree.h:98
    #30 0x1001a6dac in igl::copyleft::cgal::CSGTree::CSGTree(igl::copyleft::cgal::CSGTree const&, igl::copyleft::cgal::CSGTree const&, igl::MeshBooleanType const&) CSGTree.h:96
    #31 0x1001446cb in igl::copyleft::cgal::CSGTree::CSGTree(igl::copyleft::cgal::CSGTree const&, igl::copyleft::cgal::CSGTree const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) CSGTree.h:120
    #32 0x1001437e4 in main main.cpp:16
    #33 0x7fff5a255014 in start (libdyld.dylib:x86_64+0x1014)
0x604001b4fc70 is located 32 bytes inside of 40-byte region [0x604001b4fc50,0x604001b4fc78)
freed by thread T0 here:
    #0 0x10181c132 in wrap__ZdlPv (libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x63132)
    #1 0x1001d0f0d in CGAL::Handle_for<CGAL::Gmpq_rep, std::__1::allocator<CGAL::Gmpq_rep> >::~Handle_for() Handle_for.h:207
    #2 0x1001d0ca4 in CGAL::Gmpq::~Gmpq() Gmpq_type.h:247
    #3 0x1001d0c84 in CGAL::Gmpq::~Gmpq() Gmpq_type.h:244
    #4 0x100296b92 in std::__1::array<CGAL::Gmpq, 3ul>::~array() array:121
    #5 0x100296b54 in std::__1::array<CGAL::Gmpq, 3ul>::~array() array:121
    #6 0x100296cc4 in CGAL::VectorC3<CGAL::Simple_cartesian<CGAL::Gmpq> >::~VectorC3() Vector_3.h:36
    #7 0x100296d84 in CGAL::Vector_3<CGAL::Simple_cartesian<CGAL::Gmpq> >::~Vector_3() Vector_3.h:43
    #8 0x100296d64 in CGAL::Vector_3<CGAL::Simple_cartesian<CGAL::Gmpq> >::~Vector_3() Vector_3.h:43
    #9 0x100296d44 in CGAL::PointC3<CGAL::Simple_cartesian<CGAL::Gmpq> >::~PointC3() Point_3.h:34
    #10 0x100296da4 in CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Gmpq> >::~Point_3() Point_3.h:40
    #11 0x1002950b4 in CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Gmpq> >::~Point_3() Point_3.h:40
    #12 0x1002aed62 in std::__1::array<CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, 3ul>::~array() array:121
    #13 0x1002aeb34 in std::__1::array<CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, 3ul>::~array() array:121
    #14 0x1002aeef4 in CGAL::TriangleC3<CGAL::Simple_cartesian<CGAL::Gmpq> >::~TriangleC3() Triangle_3.h:35
    #15 0x1002aef14 in CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Gmpq> >::~Triangle_3() Triangle_3.h:38
    #16 0x1002a5244 in CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Gmpq> >::~Triangle_3() Triangle_3.h:38
    #17 0x1004cef55 in CGAL::Lazy_rep<CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >::~Lazy_rep() Lazy.h:310
    #18 0x1004cf924 in CGAL::Lazy_rep_4<CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::CommonKernelFunctors::Construct_triangle_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::CommonKernelFunctors::Construct_triangle_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > >, CGAL::Return_base_tag, CGAL::Point_3<CGAL::Epeck>, CGAL::Point_3<CGAL::Epeck>, CGAL::Point_3<CGAL::Epeck> >::~Lazy_rep_4() Lazy.h:455
    #19 0x1004cef94 in CGAL::Lazy_rep_4<CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::CommonKernelFunctors::Construct_triangle_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::CommonKernelFunctors::Construct_triangle_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > >, CGAL::Return_base_tag, CGAL::Point_3<CGAL::Epeck>, CGAL::Point_3<CGAL::Epeck>, CGAL::Point_3<CGAL::Epeck> >::~Lazy_rep_4() Lazy.h:455
    #20 0x1004cefb8 in CGAL::Lazy_rep_4<CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::CommonKernelFunctors::Construct_triangle_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::CommonKernelFunctors::Construct_triangle_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > >, CGAL::Return_base_tag, CGAL::Point_3<CGAL::Epeck>, CGAL::Point_3<CGAL::Epeck>, CGAL::Point_3<CGAL::Epeck> >::~Lazy_rep_4() Lazy.h:455
    #21 0x1001b15e1 in CGAL::Handle::~Handle() Handle.h:64
    #22 0x1004d0104 in CGAL::Lazy<CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Gmpq, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >::~Lazy() Lazy.h:727
    #23 0x1004d0a14 in CGAL::Triangle_3<CGAL::Epeck>::~Triangle_3() Triangle_3.h:38
    #24 0x1004c6714 in CGAL::Triangle_3<CGAL::Epeck>::~Triangle_3() Triangle_3.h:38
    #25 0x100735251 in std::__1::__vector_base<CGAL::Triangle_3<CGAL::Epeck>, std::__1::allocator<CGAL::Triangle_3<CGAL::Epeck> > >::~__vector_base() vector:441
    #26 0x100734fc4 in std::__1::vector<CGAL::Triangle_3<CGAL::Epeck>, std::__1::allocator<CGAL::Triangle_3<CGAL::Epeck> > >::~vector() iterator:1407
    #27 0x1004c6114 in std::__1::vector<CGAL::Triangle_3<CGAL::Epeck>, std::__1::allocator<CGAL::Triangle_3<CGAL::Epeck> > >::~vector() iterator:1407
    #28 0x1007354f4 in igl::copyleft::cgal::SelfIntersectMesh<CGAL::Epeck, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<long, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >::~SelfIntersectMesh() SelfIntersectMesh.h:49
    #29 0x1001f4ce4 in igl::copyleft::cgal::SelfIntersectMesh<CGAL::Epeck, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<long, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >::~SelfIntersectMesh() SelfIntersectMesh.h:49
previously allocated by thread T2645 here:
    #0 0x10181bb32 in wrap__Znwm (libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x62b32)
    #1 0x1001d11a1 in CGAL::Handle_for<CGAL::Gmpq_rep, std::__1::allocator<CGAL::Gmpq_rep> >::Handle_for() Handle_for.h:76
    #2 0x100216d09 in CGAL::Gmpq::Gmpq(double) Gmpq_type.h:171
    #3 0x100216bde in CGAL::Gmpq::Gmpq(double) Gmpq_type.h:172
    #4 0x1002168b0 in CGAL::Lazy_exact_Cst<CGAL::Gmpq, double>::update_exact() const Lazy_exact_nt.h:153
    #5 0x1002106af in CGAL::Lazy_rep<CGAL::Interval_nt<false>, CGAL::Gmpq, CGAL::To_interval<CGAL::Gmpq> >::exact() Lazy.h:276
    #6 0x10020fbcc in CGAL::Lazy<CGAL::Interval_nt<false>, CGAL::Gmpq, CGAL::Lazy_exact_nt<CGAL::Gmpq>, CGAL::To_interval<CGAL::Gmpq> >::exact() const Lazy.h:792
    #7 0x1004cb114 in CGAL::Gmpq const& CGAL::exact<CGAL::Interval_nt<false>, CGAL::Gmpq, CGAL::Lazy_exact_nt<CGAL::Gmpq>, CGAL::To_interval<CGAL::Gmpq> >(CGAL::Lazy<CGAL::Interval_nt<false>, CGAL::Gmpq, CGAL::Lazy_exact_nt<CGAL::Gmpq>, CGAL::To_interval<CGAL::Gmpq> > const&) Lazy.h:92
    #8 0x1004cc178 in CGAL::Lazy_rep_4<CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::CartesianKernelFunctors::Construct_point_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::CartesianKernelFunctors::Construct_point_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > >, CGAL::Return_base_tag, CGAL::Lazy_exact_nt<CGAL::Gmpq>, CGAL::Lazy_exact_nt<CGAL::Gmpq>, CGAL::Lazy_exact_nt<CGAL::Gmpq> >::update_exact() const Lazy.h:455
    #9 0x1004d01ff in CGAL::Lazy_rep<CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >::exact() Lazy.h:276
    #10 0x1004d012c in CGAL::Lazy<CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Gmpq, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >::exact() const Lazy.h:792
    #11 0x1004ce454 in CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Gmpq> > const& CGAL::exact<CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Gmpq, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >(CGAL::Lazy<CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Gmpq, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > > const&) Lazy.h:92
    #12 0x1004cf21f in CGAL::Lazy_rep_4<CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::CommonKernelFunctors::Construct_triangle_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::CommonKernelFunctors::Construct_triangle_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > >, CGAL::Return_base_tag, CGAL::Point_3<CGAL::Epeck>, CGAL::Point_3<CGAL::Epeck>, CGAL::Point_3<CGAL::Epeck> >::update_exact() const Lazy.h:455
    #13 0x1004d5d22 in CGAL::Lazy_rep<CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >::exact() Lazy.h:276
    #14 0x1004d5c4c in CGAL::Lazy<CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Gmpq, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >::exact() const Lazy.h:792
    #15 0x1004d8214 in CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Gmpq> > const& CGAL::exact<CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Gmpq, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >(CGAL::Lazy<CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Triangle_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Gmpq, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > > const&) Lazy.h:92
    #16 0x100517c7c in CGAL::Lazy_rep_1<CGAL::Plane_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Plane_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::CommonKernelFunctors::Construct_supporting_plane_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::CommonKernelFunctors::Construct_supporting_plane_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > >, CGAL::Triangle_3<CGAL::Epeck> >::update_exact() const Lazy.h:379
    #17 0x100516d5f in CGAL::Lazy_rep<CGAL::Plane_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Plane_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >::exact() Lazy.h:276
    #18 0x100516c8c in CGAL::Lazy<CGAL::Plane_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Plane_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Gmpq, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >::exact() const Lazy.h:792
    #19 0x100516c5b in CGAL::Plane_3<CGAL::Epeck>::ET const& CGAL::Exact_converter<CGAL::Epeck, CGAL::Simple_cartesian<CGAL::Gmpq> >::operator()<CGAL::Plane_3<CGAL::Epeck> >(CGAL::Plane_3<CGAL::Epeck> const&) const Lazy.h:502
    #20 0x10051541e in bool CGAL::Filtered_predicate<CGAL::CommonKernelFunctors::Equal_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::CommonKernelFunctors::Equal_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Exact_converter<CGAL::Epeck, CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Approx_converter<CGAL::Epeck, CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, true>::operator()<CGAL::Plane_3<CGAL::Epeck>, CGAL::Plane_3<CGAL::Epeck> >(CGAL::Plane_3<CGAL::Epeck> const&, CGAL::Plane_3<CGAL::Epeck> const&) const Filtered_predicate.h:176
    #21 0x100513b1e in bool CGAL::Static_filtered_predicate<CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Filtered_predicate<CGAL::CommonKernelFunctors::Equal_3<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::CommonKernelFunctors::Equal_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Exact_converter<CGAL::Epeck, CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Approx_converter<CGAL::Epeck, CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, true>, CGAL::internal::Static_filters_predicates::Equal_3<CGAL::Filtered_kernel_base<CGAL::Type_equality_wrapper<CGAL::Cartesian_base_no_ref_count<double, CGAL::Epick>, CGAL::Epick> > > >::operator()<CGAL::Plane_3<CGAL::Epeck>, CGAL::Plane_3<CGAL::Epeck> >(CGAL::Plane_3<CGAL::Epeck> const&, CGAL::Plane_3<CGAL::Epeck> const&) const Static_filtered_predicate.h:73
    #22 0x10051388f in CGAL::Epeck::Boolean CGAL::operator==<CGAL::Epeck>(CGAL::Plane_3<CGAL::Epeck> const&, CGAL::Plane_3<CGAL::Epeck> const&) global_functions_3.h:796
    #23 0x1005123ac in CGAL::Epeck::Boolean CGAL::operator!=<CGAL::Epeck>(CGAL::Plane_3<CGAL::Epeck> const&, CGAL::Plane_3<CGAL::Epeck> const&) global_functions_3.h:802
    #24 0x10050cc1f in igl::copyleft::cgal::SelfIntersectMesh<CGAL::Epeck, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<long, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >::double_shared_vertex(CGAL::Triangle_3<CGAL::Epeck> const&, CGAL::Triangle_3<CGAL::Epeck> const&, long, long, std::__1::vector<std::__1::pair<long, long>, std::__1::allocator<std::__1::pair<long, long> > >) SelfIntersectMesh.h:640
    #25 0x100508b3c in igl::copyleft::cgal::SelfIntersectMesh<CGAL::Epeck, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<long, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >::process_intersecting_boxes()::'lambda'(unsigned long, unsigned long)::operator()(unsigned long, unsigned long) const SelfIntersectMesh.h:894
    #26 0x10050bfb1 in void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, igl::copyleft::cgal::SelfIntersectMesh<CGAL::Epeck, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<long, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >::process_intersecting_boxes()::'lambda'(unsigned long, unsigned long), unsigned long, unsigned long> >(void*) thread:352
    #27 0x7fff5a56d660 in _pthread_body (libsystem_pthread.dylib:x86_64+0x3660)
    #28 0x7fff5a56d50c in _pthread_start (libsystem_pthread.dylib:x86_64+0x350c)
    #29 0x7fff5a56cbf8 in thread_start (libsystem_pthread.dylib:x86_64+0x2bf8)
Thread T2645 created by T0 here:
    #0 0x101807e1d in wrap_pthread_create (libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x4ee1d)
    #1 0x10050b0ec in std::__1::thread::thread<igl::copyleft::cgal::SelfIntersectMesh<CGAL::Epeck, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<long, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >::process_intersecting_boxes()::'lambda'(unsigned long, unsigned long)&, unsigned long, unsigned long, void>(igl::copyleft::cgal::SelfIntersectMesh<CGAL::Epeck, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<long, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >::process_intersecting_boxes()::'lambda'(unsigned long, unsigned long)&&&, unsigned long&&, unsigned long&&) thread:368
    #2 0x10050a1fc in std::__1::thread::thread<igl::copyleft::cgal::SelfIntersectMesh<CGAL::Epeck, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<long, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >::process_intersecting_boxes()::'lambda'(unsigned long, unsigned long)&, unsigned long, unsigned long, void>(igl::copyleft::cgal::SelfIntersectMesh<CGAL::Epeck, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<long, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >::process_intersecting_boxes()::'lambda'(unsigned long, unsigned long)&&&, unsigned long&&, unsigned long&&) thread:360
    #3 0x1004b3d3e in igl::copyleft::cgal::SelfIntersectMesh<CGAL::Epeck, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<long, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >::process_intersecting_boxes() SelfIntersectMesh.h:927
    #4 0x1004af72c in igl::copyleft::cgal::SelfIntersectMesh<CGAL::Epeck, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<long, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >::SelfIntersectMesh(Eigen::MatrixBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, igl::copyleft::cgal::RemeshSelfIntersectionsParam const&, Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<long, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&) SelfIntersectMesh.h:361
    #5 0x1001f4cc3 in igl::copyleft::cgal::SelfIntersectMesh<CGAL::Epeck, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<long, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >::SelfIntersectMesh(Eigen::MatrixBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, igl::copyleft::cgal::RemeshSelfIntersectionsParam const&, Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<long, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&) SelfIntersectMesh.h:307
    #6 0x1001d9678 in void igl::copyleft::cgal::remesh_self_intersections<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<long, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, igl::copyleft::cgal::RemeshSelfIntersectionsParam const&, Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<long, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&) remesh_self_intersections.cpp:79
    #7 0x1001cbd19 in bool igl::copyleft::cgal::mesh_boolean<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<unsigned long, 2, 1, 0, 2, 1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<long, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<unsigned long, 2, 1, 0, 2, 1> > const&, std::__1::function<int (Eigen::Matrix<int, 1, -1, 1, 1, -1>)> const&, std::__1::function<int (int, int)> const&, Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<long, -1, 1, 0, -1, 1> >&) mesh_boolean.cpp:223
    #8 0x1001b2991 in bool igl::copyleft::cgal::mesh_boolean<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<long, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, std::__1::function<int (Eigen::Matrix<int, 1, -1, 1, 1, -1>)> const&, std::__1::function<int (int, int)> const&, Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<long, -1, 1, 0, -1, 1> >&) mesh_boolean.cpp:123
    #9 0x1001b0e63 in bool igl::copyleft::cgal::mesh_boolean<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<long, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, igl::MeshBooleanType const&, Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Lazy_exact_nt<CGAL::Gmpq>, -1, 3, 0, -1, 3> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<long, -1, 1, 0, -1, 1> >&) mesh_boolean.cpp:56
    #10 0x1001b0597 in igl::copyleft::cgal::CSGTree::CSGTree(igl::copyleft::cgal::CSGTree const&, igl::copyleft::cgal::CSGTree const&, igl::MeshBooleanType const&) CSGTree.h:98
    #11 0x1001a6dac in igl::copyleft::cgal::CSGTree::CSGTree(igl::copyleft::cgal::CSGTree const&, igl::copyleft::cgal::CSGTree const&, igl::MeshBooleanType const&) CSGTree.h:96
    #12 0x1001446cb in igl::copyleft::cgal::CSGTree::CSGTree(igl::copyleft::cgal::CSGTree const&, igl::copyleft::cgal::CSGTree const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) CSGTree.h:120
    #13 0x1001437e4 in main main.cpp:16
    #14 0x7fff5a255014 in start (libdyld.dylib:x86_64+0x1014)
SUMMARY: AddressSanitizer: heap-use-after-free Handle_for.h:153 in CGAL::Handle_for<CGAL::Gmpq_rep, std::__1::allocator<CGAL::Gmpq_rep> >::Handle_for(CGAL::Handle_for<CGAL::Gmpq_rep, std::__1::allocator<CGAL::Gmpq_rep> > const&)
Shadow bytes around the buggy address:
  0x1c0800369f30: fa fa 00 00 00 00 00 fa fa fa fd fd fd fd fd fd
  0x1c0800369f40: fa fa fd fd fd fd fd fd fa fa fd fd fd fd fd fa
  0x1c0800369f50: fa fa fd fd fd fd fd fa fa fa fd fd fd fd fd fd
  0x1c0800369f60: fa fa fd fd fd fd fd fd fa fa fd fd fd fd fd fd
  0x1c0800369f70: fa fa fd fd fd fd fd fa fa fa fd fd fd fd fd fa
=>0x1c0800369f80: fa fa fd fd fd fd fd fd fa fa fd fd fd fd[fd]fa
  0x1c0800369f90: fa fa fa fa fa fa fa fa fa fa fd fd fd fd fd fd
  0x1c0800369fa0: fa fa fd fd fd fd fd fd fa fa fa fa fa fa fa fa
  0x1c0800369fb0: fa fa fd fd fd fd fd fd fa fa fd fd fd fd fd fd
  0x1c0800369fc0: fa fa fa fa fa fa fa fa fa fa 00 00 00 00 00 fa
  0x1c0800369fd0: fa fa fd fd fd fd fd fa fa fa 00 00 00 00 00 fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==69587==ABORTING

Read the original on github.com ↗