<div dir="ltr"><div><div><div><div>Hey,<br></div>it'n not about geometry, I'm thinking more of a memory bug.<br><br></div>Here is an example of the statement producing the alternate crash (first execution : ok, second : crahs).<br>
<br></div>The funny thing is : in the minmax CTE, il I use the other select, it works 100% of time. Even more stranger, If I execute only the CTE (no raster creation), results are also always correct.<br></div><div><br></div>
<div>The bug seems to happen when <br></div><div>1. using setvalues(addband(makeempty))<br></div><div>2. using a variable value for position in makeempty<br><br></div><div>Because it works once then crash, I would say that setvalues / gdal use some kind of cache where clean up has been forgotten?<br>
</div><div><br></div>Cheers,<br>Rémi-C<br><div><div><br>WITH patch  AS (<br>        SELECT gid,patch AS pa<br>        FROM acquisition_tmob_012013.riegl_pcpatch_space<br>        WHERE gid = 361783 --big patch<br>        --WHERE gid = 360004 --little patch<br>
    )<br>    ,minmax AS (<br>        SELECT rc_round(ST_XMin(pa::geometry), 0.02::double precision)-1*0.02/2 AS ulx, rc_round(ST_YMin (pa::geometry), 0.02::double precision)-1*0.02/2 AS uly<br>    --    SELECT rc_round(1913.5,0.02) AS ulx,  rc_round(20887.5,0.02) AS uly<br>
        FROM patch<br>    )    <br>    ,agg AS (<br>        SELECT array_agg((geom,val)::geomval) AS arr<br>        FROM test_crash_raster_setvalues.geomval<br>    )<br>    SELECT -- o_r <br>        ST_SetValues(<br>            ST_AddBand(rast:= <br>
                ST_MakeEmptyRaster( <br>                    51,51  --we round and make sure we always include any points<br>                    ,upperleftx:=ulx<br>                    ,upperlefty:=uly<br>                        --translating of pixel_size/2 to have the point in center of pixels<br>
                    ,scalex:=0.02 , scaley:=0.02 <br>                    , skewx:=0 ,skewy:=0 <br>                    , srid:=932011 )<br>            ,index:=1<br>            ,pixeltype:='32BF'<br>            , initialvalue:='NaN'<br>
            , nodataval:='NaN')<br>            <br>        ,1, arr,FALSE) <br>    FROM agg, patch,minmax<br></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-03-10 19:51 GMT+01:00 Bborie Park <span dir="ltr"><<a href="mailto:dustymugs@gmail.com" target="_blank">dustymugs@gmail.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Can't say for certain. ST_SetValues() itself doesn't use GDAL but the geometry in geomval would be rasterized using GDAL. Can you isolate the geometry causing the crash?<div>
<br></div><div>-bborie</div>

</div><div class="gmail_extra"><br><br><div class="gmail_quote"><div><div class="h5">On Mon, Mar 10, 2014 at 10:50 AM, Rémi Cura <span dir="ltr"><<a href="mailto:remi.cura@gmail.com" target="_blank">remi.cura@gmail.com</a>></span> wrote:<br>


</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><div dir="ltr"><div><div><div><div><div><div>Hey List,<br></div>I encountered another annoying problem :<br>
</div>I can reproduce it 100%, but I failed to produce an isolated test case.<br>

</div><br>Problem occurs when using the ST_SetValues function to populate a freshly created raster band. It works the first time, then crashes the server (see stack, log only says : segfault)<br>
<br></div>Strange point is : It is a plpgsql I wrote wrapping st_setvalues that crashes, and the same code doesn't crash outside a plpgsql function.<br><br></div>Somebody would have any idea about that?<br><br></div>


Cheers,<br>
Rémi-C<br><div><div><div><div><div><div><div><br><div><div><div><br>#0  0xb7216424 in __kernel_vsyscall ()<br>#1  0xb6b811df in raise () from /lib/i386-linux-gnu/libc.so.6<br>#2  0xb6b84825 in abort () from /lib/i386-linux-gnu/libc.so.6<br>



#3  0x7355279f in CPLEmergencyError (pszMessage=0x73993800 "CPLGetTLSList(): pthread_setspecific() failed!") at cpl_error.cpp:314<br>#4  0x7355f8e6 in CPLGetTLSList () at cpl_multiproc.cpp:1582<br>#5  CPLGetTLSList () at cpl_multiproc.cpp:1563<br>



#6  0x73560358 in CPLGetTLS (nIndex=5) at cpl_multiproc.cpp:1598<br>#7  0x735527b6 in CPLEmergencyError (pszMessage=0x73993800 "CPLGetTLSList(): pthread_setspecific() failed!") at cpl_error.cpp:298<br>#8  0x7355f8e6 in CPLGetTLSList () at cpl_multiproc.cpp:1582<br>



#9  CPLGetTLSList () at cpl_multiproc.cpp:1563<br>#10 0x73560358 in CPLGetTLS (nIndex=14) at cpl_multiproc.cpp:1598<br>#11 0x7354fa62 in CPLGetConfigOption (pszKey=0x73992681 "GDAL_DISABLE_CPLLOCALEC", pszDefault=0x739bb70d "NO") at cpl_conv.cpp:1552<br>



#12 0x73550f58 in CPLLocaleC::CPLLocaleC (this=0xbfbdddcc) at cpl_conv.cpp:2405<br>#13 0x73513542 in GDALDriver::Create (this=0xb9227790, pszFilename=0x73c33f2a "", nXSize=2, nYSize=2, nBands=0, eType=GDT_Byte, papszOptions=0x0) at gdaldriver.cpp:128<br>



#14 0x7351412f in GDALCreate (hDriver=0xb9227790, pszFilename=0x73c33f2a "", nXSize=2, nYSize=2, nBands=0, eBandType=GDT_Byte, papszOptions=0x0) at gdaldriver.cpp:254<br>#15 0x73c05d04 in rt_raster_gdal_rasterize (wkb=0xb916a858 "\001\001", wkb_len=21, srs=0x0, num_bands=0, pixtype=0x0, init=0x0, value=0x0, nodata=0x0, hasnodata=0x0, width=0x0, <br>



    height=0x0, scale_x=0xbfbde068, scale_y=0xbfbde088, ul_xw=0x0, ul_yw=0x0, grid_xw=0xbfbde060, grid_yw=0xbfbde078, skew_x=0xbfbde070, skew_y=0xbfbde080, options=0x0)<br>    at rt_api.c:11313<br>#16 0x73bd37e8 in RASTER_setPixelValuesGeomval (fcinfo=0xb9295644) at rt_pg.c:3729<br>



#17 0xb73f3f90 in ?? ()<br>#18 0x73c85dd7 in ?? () from /usr/lib/postgresql/9.3/lib/plpgsql.so<br>#19 0x73c89be9 in ?? () from /usr/lib/postgresql/9.3/lib/plpgsql.so<br>#20 0x73c8b708 in ?? () from /usr/lib/postgresql/9.3/lib/plpgsql.so<br>



#21 0x73c8c371 in plpgsql_exec_function () from /usr/lib/postgresql/9.3/lib/plpgsql.so<br>#22 0x73c80334 in plpgsql_call_handler () from /usr/lib/postgresql/9.3/lib/plpgsql.so<br>#23 0xb73f3f90 in ?? ()<br>#24 0xb73f8919 in ExecProject ()<br>



#25 0xb73f8cec in ExecScan ()<br>#26 0xb740c45f in ExecCteScan ()<br>#27 0xb73f10b0 in ExecProcNode ()<br>#28 0xb73edfbe in standard_ExecutorRun ()<br>#29 0xb73ee07d in ExecutorRun ()<br>#30 0xb74e8013 in ?? ()<br>#31 0xb74e949e in PortalRun ()<br>



#32 0xb74e5242 in PostgresMain ()<br>#33 0xb7298be8 in ?? ()<br>#34 0xb7499058 in PostmasterMain ()<br>#35 0xb7299bb9 in main ()<br><br><br><br><br></div></div></div></div></div></div></div></div></div></div></div>
<br></div></div>_______________________________________________<br>
postgis-devel mailing list<br>
<a href="mailto:postgis-devel@lists.osgeo.org" target="_blank">postgis-devel@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-devel" target="_blank">http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-devel</a><br></blockquote></div><br></div>
<br>_______________________________________________<br>
postgis-devel mailing list<br>
<a href="mailto:postgis-devel@lists.osgeo.org">postgis-devel@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-devel" target="_blank">http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-devel</a><br></blockquote></div><br></div>