Re: [Boost-bugs] [Boost C++ Libraries] #11415: crash in processEvent_

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