<div dir="ltr">Not sure if this reveals anything more, but here's the valgrind output. Apparently the segfault is of reading 16 bytes before the memory location malloced in lwgeom_to_wkb, I don't know if that's a coincidence or not.<div>
<br></div><div><div><br></div><div><div><font face="courier new, monospace">$ PGDATA=/mnt/drive2/postgres/main valgrind postgres --single dfuhry</font></div><div><font face="courier new, monospace">==31998== Memcheck, a memory error detector</font></div>
<div><font face="courier new, monospace">==31998== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.</font></div><div><font face="courier new, monospace">==31998== Using Valgrind-3.6.0 and LibVEX; rerun with -h for copyright info</font></div>
<div><font face="courier new, monospace">==31998== Command: postgres --single dfuhry</font></div><div><font face="courier new, monospace">==31998== </font></div><div><font face="courier new, monospace">==31998== Conditional jump or move depends on uninitialised value(s)</font></div>
<div><font face="courier new, monospace">==31998==    at 0x3D85D32EB2: __strspn_sse42 (in /lib64/<a href="http://libc-2.12.so">libc-2.12.so</a>)</font></div><div><font face="courier new, monospace">==31998==    by 0x6FF052: RelationCacheInitFileRemove (relcache.c:4589)</font></div>
<div><font face="courier new, monospace">==31998==    by 0x49B737: StartupXLOG (xlog.c:6195)</font></div><div><font face="courier new, monospace">==31998==    by 0x7140B4: InitPostgres (postinit.c:522)</font></div><div><font face="courier new, monospace">==31998==    by 0x6464E4: PostgresMain (postgres.c:3682)</font></div>
<div><font face="courier new, monospace">==31998==    by 0x5A7ADA: main (main.c:197)</font></div><div><font face="courier new, monospace">==31998== </font></div><div><font face="courier new, monospace">==31998== Conditional jump or move depends on uninitialised value(s)</font></div>
<div><font face="courier new, monospace">==31998==    at 0x6FF061: RelationCacheInitFileRemove (relcache.c:4589)</font></div><div><font face="courier new, monospace">==31998==    by 0x49B737: StartupXLOG (xlog.c:6195)</font></div>
<div><font face="courier new, monospace">==31998==    by 0x7140B4: InitPostgres (postinit.c:522)</font></div><div><font face="courier new, monospace">==31998==    by 0x6464E4: PostgresMain (postgres.c:3682)</font></div><div>
<font face="courier new, monospace">==31998==    by 0x5A7ADA: main (main.c:197)</font></div><div><font face="courier new, monospace">==31998== </font></div><div><font face="courier new, monospace">==31998== Syscall param write(buf) points to uninitialised byte(s)</font></div>
<div><font face="courier new, monospace">==31998==    at 0x3D85CDAE60: __write_nocancel (in /lib64/<a href="http://libc-2.12.so">libc-2.12.so</a>)</font></div><div><font face="courier new, monospace">==31998==    by 0x3D85C71582: _IO_file_write@@GLIBC_2.2.5 (in /lib64/<a href="http://libc-2.12.so">libc-2.12.so</a>)</font></div>
<div><font face="courier new, monospace">==31998==    by 0x3D85C72B34: _IO_do_write@@GLIBC_2.2.5 (in /lib64/<a href="http://libc-2.12.so">libc-2.12.so</a>)</font></div><div><font face="courier new, monospace">==31998==    by 0x3D85C711FC: _IO_file_xsputn@@GLIBC_2.2.5 (in /lib64/<a href="http://libc-2.12.so">libc-2.12.so</a>)</font></div>
<div><font face="courier new, monospace">==31998==    by 0x3D85C6760C: fwrite (in /lib64/<a href="http://libc-2.12.so">libc-2.12.so</a>)</font></div><div><font face="courier new, monospace">==31998==    by 0x6FAD87: write_item (relcache.c:4468)</font></div>
<div><font face="courier new, monospace">==31998==    by 0x6FAF56: write_relcache_init_file (relcache.c:4360)</font></div><div><font face="courier new, monospace">==31998==    by 0x6FDD69: RelationCacheInitializePhase3 (relcache.c:3068)</font></div>
<div><font face="courier new, monospace">==31998==    by 0x71452E: InitPostgres (postinit.c:824)</font></div><div><font face="courier new, monospace">==31998==    by 0x6464E4: PostgresMain (postgres.c:3682)</font></div><div>
<font face="courier new, monospace">==31998==    by 0x5A7ADA: main (main.c:197)</font></div><div><font face="courier new, monospace">==31998==  Address 0x4c0c5d2 is not stack'd, malloc'd or (recently) free'd</font></div>
<div><font face="courier new, monospace">==31998== </font></div><div><font face="courier new, monospace">==31998== Syscall param write(buf) points to uninitialised byte(s)</font></div><div><font face="courier new, monospace">==31998==    at 0x3D85CDAE60: __write_nocancel (in /lib64/<a href="http://libc-2.12.so">libc-2.12.so</a>)</font></div>
<div><font face="courier new, monospace">==31998==    by 0x3D85C71582: _IO_file_write@@GLIBC_2.2.5 (in /lib64/<a href="http://libc-2.12.so">libc-2.12.so</a>)</font></div><div><font face="courier new, monospace">==31998==    by 0x3D85C72B34: _IO_do_write@@GLIBC_2.2.5 (in /lib64/<a href="http://libc-2.12.so">libc-2.12.so</a>)</font></div>
<div><font face="courier new, monospace">==31998==    by 0x3D85C7230F: _IO_file_close_it@@GLIBC_2.2.5 (in /lib64/<a href="http://libc-2.12.so">libc-2.12.so</a>)</font></div><div><font face="courier new, monospace">==31998==    by 0x3D85C660B7: fclose@@GLIBC_2.2.5 (in /lib64/<a href="http://libc-2.12.so">libc-2.12.so</a>)</font></div>
<div><font face="courier new, monospace">==31998==    by 0x627C22: FreeDesc (fd.c:1533)</font></div><div><font face="courier new, monospace">==31998==    by 0x6FAFE7: write_relcache_init_file (relcache.c:4418)</font></div>
<div><font face="courier new, monospace">==31998==    by 0x6FDD70: RelationCacheInitializePhase3 (relcache.c:3069)</font></div><div><font face="courier new, monospace">==31998==    by 0x71452E: InitPostgres (postinit.c:824)</font></div>
<div><font face="courier new, monospace">==31998==    by 0x6464E4: PostgresMain (postgres.c:3682)</font></div><div><font face="courier new, monospace">==31998==    by 0x5A7ADA: main (main.c:197)</font></div><div><font face="courier new, monospace">==31998==  Address 0x4c0c0aa is not stack'd, malloc'd or (recently) free'd</font></div>
<div><font face="courier new, monospace">==31998== </font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">PostgreSQL stand-alone backend 9.2.2</font></div><div><font face="courier new, monospace">backend> select test2();</font></div>
<div><font face="courier new, monospace">[g_serialized.c:gserialized_from_any_size:378] Input type: Point</font></div><div><font face="courier new, monospace">[g_serialized.c:gserialized_from_lwpoint_size:286] point size = 24</font></div>
<div><font face="courier new, monospace">[g_serialized.c:gserialized_from_lwgeom_size:420] g_serialize size = 32</font></div><div><font face="courier new, monospace">[g_serialized.c:gserialized_from_lwgeom_any:677] Input type (1) Point, hasz: 0 hasm: 0</font></div>
<div><font face="courier new, monospace">[g_serialized.c:gserialized_from_lwgeom_any:678] LWGEOM(0x5023290) uint8_t(0x5023608)</font></div><div><font face="courier new, monospace">[g_serialized.c:gserialized_from_lwpoint:445] lwpoint_to_gserialized(0x5023290, 0x5023608) called</font></div>
<div><font face="courier new, monospace">[g_serialized.c:gserialized_set_srid:78] Called with srid = 4326</font></div><div><font face="courier new, monospace"><span class="" style="white-space:pre">        </span> 1: test2<span class="" style="white-space:pre"> </span>(typeid = 16391, len = -1, typmod = -1, byval = f)</font></div>
<div><font face="courier new, monospace"><span class="" style="white-space:pre">        </span>----</font></div><div><font face="courier new, monospace">[g_serialized.c:gserialized_get_type:50] entered</font></div><div><font face="courier new, monospace">[g_serialized.c:lwgeom_from_gserialized:1137] Got type 1 (Point), srid=4326</font></div>
<div><font face="courier new, monospace">[g_serialized.c:lwgeom_from_gserialized_buffer:1091] Got type 1 (Point), hasz=0 hasm=0 geodetic=0 hasbox=0</font></div><div><font face="courier new, monospace">[g_serialized.c:gserialized_get_type:50] entered</font></div>
<div><font face="courier new, monospace">[lwgeom.c:lwgeom_set_srid:1360] entered with srid=4326</font></div><div><font face="courier new, monospace">[lwgeom.c:lwgeom_is_empty:1138] lwgeom_is_empty: got type Point</font></div>
<div><font face="courier new, monospace">[lwout_wkb.c:lwgeom_to_wkb:702] WKB output size: 25</font></div><div><font face="courier new, monospace">[lwout_wkb.c:lwgeom_to_wkb:715] Hex WKB output size: 51</font></div><div><font face="courier new, monospace">[lwgeom.c:lwgeom_is_empty:1138] lwgeom_is_empty: got type Point</font></div>
<div><font face="courier new, monospace">[lwout_wkb.c:lwpoint_to_wkb_buf:385] Entering function, buf = 0xe812590</font></div><div><font face="courier new, monospace">[lwout_wkb.c:lwpoint_to_wkb_buf:387] Endian set, buf = 0xe812592</font></div>
<div><font face="courier new, monospace">[lwout_wkb.c:integer_to_wkb_buf:189] Writing value '536870913'</font></div><div><font face="courier new, monospace">[lwout_wkb.c:lwpoint_to_wkb_buf:390] Type set, buf = 0xe81259a</font></div>
<div><font face="courier new, monospace">[lwout_wkb.c:integer_to_wkb_buf:189] Writing value '4326'</font></div><div><font face="courier new, monospace">[lwout_wkb.c:lwpoint_to_wkb_buf:395] SRID set, buf = 0xe8125a2</font></div>
<div><font face="courier new, monospace">[lwout_wkb.c:ptarray_to_wkb_buf:353] Writing point #0</font></div><div><font face="courier new, monospace">[lwout_wkb.c:ptarray_to_wkb_buf:357] Writing dimension #0 (buf = 0xe8125a2)</font></div>
<div><font face="courier new, monospace">[lwout_wkb.c:ptarray_to_wkb_buf:357] Writing dimension #1 (buf = 0xe8125b2)</font></div><div><font face="courier new, monospace">[lwout_wkb.c:ptarray_to_wkb_buf:361] Done (buf = 0xe8125c2)</font></div>
<div><font face="courier new, monospace">[lwout_wkb.c:lwpoint_to_wkb_buf:399] Pointarray set, buf = 0xe8125c2</font></div><div><font face="courier new, monospace">[lwout_wkb.c:lwgeom_to_wkb:751] buf (0xe8125c3) - wkb_out (0xe812590) = 51</font></div>
<div><font face="courier new, monospace"><span class="" style="white-space:pre">        </span> 1: test2 = "0101000020E610000000000000000000000000000000000000"<span class="" style="white-space:pre">        </span>(typeid = 16391, len = -1, typmod = -1, byval = f)</font></div>
<div><font face="courier new, monospace">==31998== Invalid read of size 8</font></div><div><font face="courier new, monospace">==31998==    at 0x724883: pfree (mcxt.c:659)</font></div><div><font face="courier new, monospace">==31998==    by 0x458FC0: debugtup (printtup.c:549)</font></div>
<div><font face="courier new, monospace">==31998==    by 0x576EA1: standard_ExecutorRun (execMain.c:1418)</font></div><div><font face="courier new, monospace">==31998==    by 0x64956F: PortalRunSelect (pquery.c:944)</font></div>
<div><font face="courier new, monospace">==31998==    by 0x64A87F: PortalRun (pquery.c:788)</font></div><div><font face="courier new, monospace">==31998==    by 0x646B06: PostgresMain (postgres.c:1046)</font></div><div><font face="courier new, monospace">==31998==    by 0x5A7ADA: main (main.c:197)</font></div>
<div><font face="courier new, monospace">==31998==  Address 0xe812580 is 16 bytes before a block of size 51 alloc'd</font></div><div><font face="courier new, monospace">==31998==    at 0x4A05FDE: malloc (vg_replace_malloc.c:236)</font></div>
<div><font face="courier new, monospace">==31998==    by 0xDAC8E8B: lwgeom_to_wkb (lwout_wkb.c:729)</font></div><div><font face="courier new, monospace">==31998==    by 0xDA8D3D3: LWGEOM_out (lwgeom_inout.c:237)</font></div>
<div><font face="courier new, monospace">==31998==    by 0x70CCF2: FunctionCall1Coll (fmgr.c:1300)</font></div><div><font face="courier new, monospace">==31998==    by 0x70E02C: OutputFunctionCall (fmgr.c:1953)</font></div>
<div><font face="courier new, monospace">==31998==    by 0x70E24A: OidOutputFunctionCall (fmgr.c:2056)</font></div><div><font face="courier new, monospace">==31998==    by 0x458F9C: debugtup (printtup.c:545)</font></div><div>
<font face="courier new, monospace">==31998==    by 0x576EA1: standard_ExecutorRun (execMain.c:1418)</font></div><div><font face="courier new, monospace">==31998==    by 0x64956F: PortalRunSelect (pquery.c:944)</font></div>
<div><font face="courier new, monospace">==31998==    by 0x64A87F: PortalRun (pquery.c:788)</font></div><div><font face="courier new, monospace">==31998==    by 0x646B06: PostgresMain (postgres.c:1046)</font></div><div><font face="courier new, monospace">==31998==    by 0x5A7ADA: main (main.c:197)</font></div>
<div><font face="courier new, monospace">==31998== </font></div><div><font face="courier new, monospace">==31998== Invalid read of size 8</font></div><div><font face="courier new, monospace">==31998==    at 0x724887: pfree (mcxt.c:659)</font></div>
<div><font face="courier new, monospace">==31998==    by 0x458FC0: debugtup (printtup.c:549)</font></div><div><font face="courier new, monospace">==31998==    by 0x576EA1: standard_ExecutorRun (execMain.c:1418)</font></div>
<div><font face="courier new, monospace">==31998==    by 0x64956F: PortalRunSelect (pquery.c:944)</font></div><div><font face="courier new, monospace">==31998==    by 0x64A87F: PortalRun (pquery.c:788)</font></div><div><font face="courier new, monospace">==31998==    by 0x646B06: PostgresMain (postgres.c:1046)</font></div>
<div><font face="courier new, monospace">==31998==    by 0x5A7ADA: main (main.c:197)</font></div><div><font face="courier new, monospace">==31998==  Address 0x8 is not stack'd, malloc'd or (recently) free'd</font></div>
<div><font face="courier new, monospace">==31998== </font></div><div><font face="courier new, monospace">==31998== </font></div><div><font face="courier new, monospace">==31998== Process terminating with default action of signal 11 (SIGSEGV)</font></div>
<div><font face="courier new, monospace">==31998==  Access not within mapped region at address 0x8</font></div><div><font face="courier new, monospace">==31998==    at 0x724887: pfree (mcxt.c:659)</font></div><div><font face="courier new, monospace">==31998==    by 0x458FC0: debugtup (printtup.c:549)</font></div>
<div><font face="courier new, monospace">==31998==    by 0x576EA1: standard_ExecutorRun (execMain.c:1418)</font></div><div><font face="courier new, monospace">==31998==    by 0x64956F: PortalRunSelect (pquery.c:944)</font></div>
<div><font face="courier new, monospace">==31998==    by 0x64A87F: PortalRun (pquery.c:788)</font></div><div><font face="courier new, monospace">==31998==    by 0x646B06: PostgresMain (postgres.c:1046)</font></div><div><font face="courier new, monospace">==31998==    by 0x5A7ADA: main (main.c:197)</font></div>
<div><font face="courier new, monospace">==31998==  If you believe this happened as a result of a stack</font></div><div><font face="courier new, monospace">==31998==  overflow in your program's main thread (unlikely but</font></div>
<div><font face="courier new, monospace">==31998==  possible), you can try to increase the size of the</font></div><div><font face="courier new, monospace">==31998==  main thread stack using the --main-stacksize= flag.</font></div>
<div><font face="courier new, monospace">==31998==  The main thread stack size used in this run was 10485760.</font></div><div><font face="courier new, monospace">==31998== </font></div><div><font face="courier new, monospace">==31998== HEAP SUMMARY:</font></div>
<div><font face="courier new, monospace">==31998==     in use at exit: 1,326,373 bytes in 298 blocks</font></div><div><font face="courier new, monospace">==31998==   total heap usage: 740 allocs, 442 frees, 4,165,235 bytes allocated</font></div>
<div><font face="courier new, monospace">==31998== </font></div><div><font face="courier new, monospace">==31998== LEAK SUMMARY:</font></div><div><font face="courier new, monospace">==31998==    definitely lost: 315 bytes in 4 blocks</font></div>
<div><font face="courier new, monospace">==31998==    indirectly lost: 2,211 bytes in 29 blocks</font></div><div><font face="courier new, monospace">==31998==      possibly lost: 0 bytes in 0 blocks</font></div><div><font face="courier new, monospace">==31998==    still reachable: 1,323,847 bytes in 265 blocks</font></div>
<div><font face="courier new, monospace">==31998==         suppressed: 0 bytes in 0 blocks</font></div><div><font face="courier new, monospace">==31998== Rerun with --leak-check=full to see details of leaked memory</font></div>
<div><font face="courier new, monospace">==31998== </font></div><div><font face="courier new, monospace">==31998== For counts of detected and suppressed errors, rerun with: -v</font></div><div><font face="courier new, monospace">==31998== Use --track-origins=yes to see where uninitialised values come from</font></div>
<div><font face="courier new, monospace">==31998== ERROR SUMMARY: 31 errors from 6 contexts (suppressed: 30 from 9)</font></div><div><font face="courier new, monospace">Segmentation fault (core dumped)</font></div></div><div>
<br></div><div><br></div><div style>-Dave</div></div><div style><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jan 14, 2013 at 4:14 AM, Sandro Santilli <span dir="ltr"><<a href="mailto:strk@keybit.net" target="_blank">strk@keybit.net</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Fri, Jan 11, 2013 at 05:20:55PM -0500, David Fuhry wrote:<br>
> I tried statically linking liblwgeom by changing SHLIB_LINK from<br>
> "-L/usr/local/lib -llwgeom" to "/usr/local/lib/liblwgeom.a" but the<br>
> segfault in pfree occurred just as before.<br>
<br>
</div>Try asking valgrind about it ?<br>
<div class="HOEnZb"><div class="h5"><br>
--strk;<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>
</div></div></blockquote></div><br></div>