mapbox / mapnik-vector-tile

Mapnik implemention of Mapbox Vector Tile specification
BSD 3-Clause "New" or "Revised" License
553 stars 117 forks source link

Segfault in ClipperLib::Clipper::FindIntersectLoop #199

Closed springmeyer closed 7 years ago

springmeyer commented 8 years ago
size: 12
ASAN:DEADLYSIGNAL
=================================================================
==6139==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000020 (pc 0x000104e6dc05 bp 0x7fff5ae2d310 sp 0x7fff5ae2c3e0 T0)
    #0 0x104e6dc04 in ClipperLib::Clipper::FindIntersectLoop(std::__1::unordered_multimap<int, ClipperLib::OutPtIntersect, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, ClipperLib::OutPtIntersect> > >&, std::__1::list<std::__1::pair<int, ClipperLib::OutPtIntersect>, std::__1::allocator<std::__1::pair<int, ClipperLib::OutPtIntersect> > >&, ClipperLib::OutRec*, int, int, std::__1::set<int, std::__1::less<int>, std::__1::allocator<int> >&, ClipperLib::OutPt*, ClipperLib::OutPt*) (/Users/dane/projects/mapnik-vector-tile/./build/Debug/vtile-fuzz+0x1000a6c04)
    #1 0x104e6e004 in ClipperLib::Clipper::FindIntersectLoop(std::__1::unordered_multimap<int, ClipperLib::OutPtIntersect, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, ClipperLib::OutPtIntersect> > >&, std::__1::list<std::__1::pair<int, ClipperLib::OutPtIntersect>, std::__1::allocator<std::__1::pair<int, ClipperLib::OutPtIntersect> > >&, ClipperLib::OutRec*, int, int, std::__1::set<int, std::__1::less<int>, std::__1::allocator<int> >&, ClipperLib::OutPt*, ClipperLib::OutPt*) (/Users/dane/projects/mapnik-vector-tile/./build/Debug/vtile-fuzz+0x1000a7004)
    #2 0x104e73088 in ClipperLib::Clipper::FixIntersects(std::__1::unordered_multimap<int, ClipperLib::OutPtIntersect, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, ClipperLib::OutPtIntersect> > >&, ClipperLib::OutPt*, ClipperLib::OutPt*, ClipperLib::OutRec*, ClipperLib::OutRec*) (/Users/dane/projects/mapnik-vector-tile/./build/Debug/vtile-fuzz+0x1000ac088)
    #3 0x104e2c057 in ClipperLib::Clipper::DoSimplePolygons() (/Users/dane/projects/mapnik-vector-tile/./build/Debug/vtile-fuzz+0x100065057)
    #4 0x104e135f1 in ClipperLib::Clipper::ExecuteInternal() (/Users/dane/projects/mapnik-vector-tile/./build/Debug/vtile-fuzz+0x10004c5f1)
    #5 0x104e0eef3 in ClipperLib::Clipper::Execute(ClipperLib::ClipType, ClipperLib::PolyTree&, ClipperLib::PolyFillType, ClipperLib::PolyFillType) (/Users/dane/projects/mapnik-vector-tile/./build/Debug/vtile-fuzz+0x100047ef3)
    #6 0x104dce995 in mapnik::vector_tile_impl::geometry_clipper<noop_process>::operator()(mapnik::geometry::polygon<long long, mapnik::geometry::rings_container>&) (/Users/dane/projects/mapnik-vector-tile/./build/Debug/vtile-fuzz+0x100007995)
    #7 0x104dc8e6c in main (/Users/dane/projects/mapnik-vector-tile/./build/Debug/vtile-fuzz+0x100001e6c)
    #8 0x7fff97fc15ac in start (/usr/lib/system/libdyld.dylib+0x35ac)
    #9 0x0  (<unknown module>)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV (/Users/dane/projects/mapnik-vector-tile/./build/Debug/vtile-fuzz+0x1000a6c04) in ClipperLib::Clipper::FindIntersectLoop(std::__1::unordered_multimap<int, ClipperLib::OutPtIntersect, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, ClipperLib::OutPtIntersect> > >&, std::__1::list<std::__1::pair<int, ClipperLib::OutPtIntersect>, std::__1::allocator<std::__1::pair<int, ClipperLib::OutPtIntersect> > >&, ClipperLib::OutRec*, int, int, std::__1::set<int, std::__1::less<int>, std::__1::allocator<int> >&, ClipperLib::OutPt*, ClipperLib::OutPt*)
==6139==ABORTING
./setup.sh: line 6:  6139 Abort trap: 6           ./build/Debug/vtile-fuzz