Subject: Re: [Boost-bugs] [Boost C++ Libraries] #11415: crash in processEvent_
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2015-06-30 01:10:10
#11415: crash in processEvent_
-------------------------------+-------------------------
Reporter: mhilferink@⦠| Owner: ljsimons
Type: Bugs | Status: new
Milestone: To Be Determined | Component: polygon
Version: Boost 1.56.0 | Severity: Showstopper
Resolution: | Keywords:
-------------------------------+-------------------------
Comment (by mhilferink@â¦):
This crash occurred in polygon_set_data<int>::clean() compiled with MSVC
12.0 with both boost 1.56.0 as well as boost 1.58.0 with a large polygon
resulting from a Minkowski convolution of a many edged polygon with an 8
egded kernel. In trying to reduce to a less sizable case I found a polygon
with 206 edges resulting from a 6 edged polygon convoluted with the same 8
edged kernel ( 6*8*4 + 6 + 8 = 206 ) that causes clean() not to crash but
to result in an unexpected empty geometry. I'll attach a demonstrating
program.
Note that with MSVC, long double is 64 bit with a 53 bit mantissa. When
translating the coordinates such that none is above (1 << 25), both issues
(the original crash and the unexpected empty result) disappears and
results are as expected. I also noticed that the original and translated
cases have a different number of found intersections in validate_scan. It
seems that loss of precision in the calculation of the intersection
coordinates causes an inconsistency in the subsequent sweep.
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/11415#comment:1> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:18 UTC