[postgis-devel] Need some help with memory contexts

Stephen Woodbridge woodbri at swoodbridge.com
Wed Apr 24 12:47:59 PDT 2013


Hi Guys,

I have finished recoding the address standardizer to use a standardizer 
cache mirroring the code for the projection cache.

I've traced the current crash down to a memory context change where I 
need to pstrdup a few strings. There is nothing useful in the server logs.

It is crashing on line 401 of
http://pagc.svn.sourceforge.net/viewvc/pagc/branches/sew-refactor/postgresql/std_pg_hash.c?revision=350&view=markup

My thesis on the memory context change is that the pstrdup strings 
should be allocated in the context of the cache entry so when the cache 
entry is deleted all strings will get freed with it. This also insures 
the the strings have the same lifetime as the cache entry.

Anyway, any thoughts on why it is crashing on line 401?
Is it valid to switch to this memory context?

I has been very hard to find much of any doc on this stuff.

Thanks,
   -Steve

Here is my trace using debug statements:

woodbri at maps:~/work/pagc/branches/sew-refactor/postgresql$ psql -U 
postgres -h localhost test1 -f t.sql
psql:t.sql:1: NOTICE:  Start standardize_address
psql:t.sql:1: NOTICE:  calling RelationNameGetTupleDesc
psql:t.sql:1: NOTICE:  calling GetStdUsingFCInfo(fcinfo, 'lex', 'gaz', 
'rules')
psql:t.sql:1: NOTICE:  GetStdUsingFCInfo: calling GetStdCache(fcinfo)
psql:t.sql:1: NOTICE:  Enter: GetStdPortalCache
psql:t.sql:1: NOTICE:  Allocating STDCache for portal with STD 
MemoryContext (0xb895d8a0)
psql:t.sql:1: NOTICE:  GetStdUsingFCInfo: calling 
IsInStdCache(std_cache, lextab, gaztab, rultab)
psql:t.sql:1: NOTICE:  Enter: IsInStdPortalCache
psql:t.sql:1: NOTICE:  GetStdUsingFCInfo: calling 
AddToStdCache(std_cache, lextab, gaztab, rultab)
psql:t.sql:1: NOTICE:  Enter: AddToStdPortalCache
psql:t.sql:1: NOTICE:  Enter: CreateStd
psql:t.sql:1: NOTICE:  start load_lex

psql:t.sql:1: NOTICE:  Time to read 2938 lexicon records: 13.3 ms.
psql:t.sql:1: NOTICE:  start load_lex

psql:t.sql:1: NOTICE:  Time to read 1074 lexicon records: 5.5 ms.
psql:t.sql:1: NOTICE:  start load_rules

psql:t.sql:1: NOTICE:  Time to read 4368 rule records: 25.7 ms.
psql:t.sql:1: NOTICE:  Adding item to STD cache ('lex', 'gaz', 'rules') 
index 0
psql:t.sql:1: NOTICE:  Check if StdHash exists ((nil))
psql:t.sql:1: NOTICE:  CreateStdHash: created StdHash (0xb89ae3c8)
psql:t.sql:1: NOTICE:  Adding standardizer obj (0xb8836ca0) to hash 
table with MemoryContext key (0xb89999e8)
psql:t.sql:1: NOTICE:  Enter: AddStdHashEntry(mcxt=0xb89999e8, 
std=0xb8836ca0)
psql:t.sql:1: NOTICE:  AddStdHashEntry: he=0xb89aeda0, found=0
psql:t.sql:1: NOTICE:  &he->context=0xb89aeda0
psql:t.sql:1: NOTICE:  &he->std=0xb89aeda4
psql:t.sql:1: NOTICE:  Leaving AddStdHashEntry
psql:t.sql:1: NOTICE:  AddToStdPortalCache: changing memory context to 
0xb89999e8
psql:t.sql:1: NOTICE:    old_context= 0xb895d928
psql:t.sql:1: SSL SYSCALL error: EOF detected
psql:t.sql:1: connection to server was lost



More information about the postgis-devel mailing list