From: selkovjr@mcs.anl.gov
To: Lonnie Cumberland <lonnie_cumberland@yahoo.com>
Cc: pgsql-interfaces@postgresql.org
Subject: Re: backend debug information
Date: Mon, 16 Apr 2001 15:44:32 -0500
Message-ID: <200104162044.PAA00749@selkovjr.xnet.com> (raw)
In-Reply-To: <20010416192226.52764.qmail@web12503.mail.yahoo.com>
References: <20010416192226.52764.qmail@web12503.mail.yahoo.com>
Take it easy, Lonnie! I am still working on your earlier question :)
> I am getting this:
> trdata=# select desdecrypt('a','b');
> pqReadData() -- backend closed the channel unexpectedly.
> This probably means the backend terminated abnormally
> before or while processing the request.
> The connection to the server was lost. Attempting reset: Failed.
> !# \q
You've probably got a segv. There's very little else that can happen
in your code. That in turn could be caused by writing at an overflown
pointer or by returning the wrong type.
As far as debugging, short of being able to run a postgres under gdb
while connecting clients to it (I wish I knew whether that was at all
possible), your options are:
1. (preferred) -- fprintf(stderr, ,) from within your code; then watch
the logs or simply start your postmaster from a shell without
detaching it and see the output.
2. Make a wrapper that walks like a postgres and talks like a postgres
but does nothing except it calls your function and checks the return
value; then run that stuff in gdb.
As a general rule,
3. Slow down. Proceed in small increments. Start with a blank function
and make sure you can pass the desired arguments to it. Return
nothing. Check the values you pass with fprintf. Then add a return
statement and see if you can get away with it. Check it on the outside
with a SELECT. After that, keep adding the code in small logical
units. If it breaks, insert fprintf's to see where. Fprintfs are
almost as good as debugger breakpoints.
I'll be back with more stuff regarding the datatypes shortly.
--Gene
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-interfaces@postgresql.org
Cc: selkovjr@mcs.anl.gov, lonnie_cumberland@yahoo.com
Subject: Re: backend debug information
In-Reply-To: <200104162044.PAA00749@selkovjr.xnet.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox