[postgis-devel] ST_MaximumInscribedCircle madness

Martin Davis mtnclimb at gmail.com
Thu Apr 20 17:31:44 PDT 2023


That geometry is indeed a simple rectangle, but it's very, very, very
narrow.   This is causing the interative algorithm used in
MaximmumInscribedCircle to essentially hunt forever trying to find a point
which lies inside the polygon.

Of course it would be nice to detect this situation and terminate faster,
either with a point which lies actually lies outside the rectangle, or some
other return value.  This will require some thought.

On Thu, Apr 20, 2023 at 2:38 PM Rémi Cura <remi.cura at gmail.com> wrote:

> Hello dear Postgis devs!
>
> I have a strange case to submit to you.
> In a nutshell, trying to compute
> ```SQL
> SELECT ST_MaximumInscribedCircle( 'POLYGON ((59.3 100.00000000000001, 99.7
> 100.00000000000001, 99.7 100, 59.3 100, 59.3 100.00000000000001))') ;
> ```
> causes it to run for many minutes until it eventually errors.
> Worst, running this kind of computing on 12M geoms in parallel x6 created
> a postgres **segfault** and crashed my server (16 cores, 64GB).
> (many more geoms are making this function unhappy).
>
> /!\ Once this query starts, it can't be stopped by
> `pg_cancel_backend(pid)` or even `pg_terminate_backend(pid)`
> --> This is pretty dangerous in my opinion.
>
>
> The geometry is simple, it is a rectangle.
> I obtained it through other geometry operations
> It must be some kind of precision issue, I'm wondering if there is some
> kind of infinite loop going on or something.
>
> My full code is something like that:
> ```SQL
> SELECT env, diff, ST_MaximumInscribedCircle(diff)
> FROM CAST ('some_polygon'as text ) as g
>     , ST_Envelope(g) as env
>     , ST_MakeEnvelope(0,0,100,100) as bound
>     , ST_Difference(env, bound) as diff;
> ```
>
> Not creating a bug ticket as I don't know if I'm simply abusing the
> function / using it in a way it should not.
>
>
> POSTGIS="3.1.7 aafe1ff" [EXTENSION] PGSQL="140" GEOS="3.9.1-CAPI-1.14.2"
> PROJ="8.0.1" GDAL="GDAL 3.4.3, released 2022/04/22" LIBXML="2.9.1"
> LIBJSON="0.15" LIBPROTOBUF="1.3.2" WAGYU="0.5.0 (Internal)" RASTER
>
> PostgreSQL 14.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 7.3.1
> 20180712 (Red Hat 7.3.1-12), 64-bit
> _______________________________________________
> postgis-devel mailing list
> postgis-devel at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/postgis-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-devel/attachments/20230420/5cd86f94/attachment-0001.htm>


More information about the postgis-devel mailing list