<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>We did close an infinite loop issue on ST_MaximumInscribedCircle recently, but given the latest GEOS 3.11.2 seems to be hanging on this (I also tested my few months old 3.12 branch) and this is not with infinite coordinates, I suppose it’s yet another issue of<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><a href="https://github.com/libgeos/geos/pull/843">https://github.com/libgeos/geos/pull/843</a><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><a href="https://github.com/libgeos/geos/issues/821">https://github.com/libgeos/geos/issues/821</a><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>I think it’s worth a ticket both on GEOS and PostGIS.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'>From:</span></b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'> postgis-devel [mailto:postgis-devel-bounces@lists.osgeo.org] <b>On Behalf Of </b>Rémi Cura<br><b>Sent:</b> Thursday, April 20, 2023 5:38 PM<br><b>To:</b> PostGIS Development Discussion <postgis-devel@lists.osgeo.org><br><b>Subject:</b> [postgis-devel] ST_MaximumInscribedCircle madness<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-family:"Courier New"'>Hello dear Postgis devs!<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'>I have a strange case to submit to you.<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'>In a nutshell, trying to compute <o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'>```SQL<br>SELECT ST_MaximumInscribedCircle( 'POLYGON ((59.3 100.00000000000001, 99.7 100.00000000000001, 99.7 100, 59.3 100, 59.3 100.00000000000001))') ;<br>```<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'>causes it to run for many minutes until it eventually errors.<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'>Worst, running this kind of computing on 12M geoms in parallel x6 created a postgres **segfault** and crashed my server (16 cores, 64GB).<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'>(many more geoms are making this function unhappy).<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'><br>/!\ Once this query starts, it can't be stopped by `pg_cancel_backend(pid)` or even `pg_terminate_backend(pid)`<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'>--> This is pretty dangerous in my opinion.<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'>The geometry is simple, it is a rectangle.<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'>I obtained it through other geometry operations<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'>It must be some kind of precision issue, I'm wondering if there is some kind of infinite loop going on or something.<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'>My full code is something like that:<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'>```SQL<br>SELECT env, diff, ST_MaximumInscribedCircle(diff)<br>FROM CAST ('some_polygon'as text ) as g<br>    , ST_Envelope(g) as env<br>    , ST_MakeEnvelope(0,0,100,100) as bound<br>    , ST_Difference(env, bound) as diff;<br>```<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'>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.<o:p></o:p></span></p></div><p class=MsoNormal> <o:p></o:p></p><div><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'>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<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'>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<o:p></o:p></span></p></div></div></div></div></body></html>