corrupted double-linked list

From: Maarten Foqué <maarten(dot)foque(at)edchq(dot)com>
To: pgsql-hackers(at)postgresql(dot)org
Subject: corrupted double-linked list
Date: 2009-09-09 15:57:34
Message-ID: 1252511854.2919.35.camel@dornbirn.edch
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hello everyone,

I ran into a problem writing a program using libpq, and after postin on
a forum and asking it on the irc channel I was redirected here.

I'll try to keep it simple so you don't have to read to much to start:

The program is asynchronous using libev, using sockets and notifications
to wake up.
Notifications is done with connection conn_async, queries are done using
conn_block with PQexec.
PGresult *res; is defined global.

When a notification arrives, the callback goes something like:

PGresult *res2;

res2 = PQexec(conn_async, "select stuff"); // yes, this is the only
time I use conn_async for a query

for( i<PQntuples(res2))
{
if(row[i] values of res2)
call function x
}
PQclear(res2)

function x
{
PGresult *resu;

resu = PQexec(conn_block,"select other stuff");

for(i<PQntuples(resu))
send stuff to the clients over the sockets.
PQclear(resu);
}

The program crashes on PQclear(resu) with the following:
*** glibc detected *** ./incident_relay: corrupted double-linked list:
0x09c459c8 ***
======= Backtrace: =========
/lib/libc.so.6[0x63b9aa]
/lib/libc.so.6(cfree+0x90)[0x63f0f0]
/usr/lib/libpq.so.5(PQclear+0x49)[0xae1759]
./incident_relay[0x80507de]
./incident_relay[0x804f5d8]
/usr/local/lib/libev.so.3(ev_loop+0x939)[0x117f89]
./incident_relay[0x8049a4a]
/lib/libc.so.6(__libc_start_main+0xe0)[0x5e8390]
./incident_relay[0x8049311]

I'm no longer using the global res in the function x but resu as I
thought it may have something to do with forgetting a PQclear somewhere
or ... (although I quadripple checked that by now)

Some system info:
Select version() => "PostgreSQL 8.3.4 on x86_64-unknown-linux-gnu,
compiled by GCC gcc (GCC) 4.3.0 20080428 (Red Hat 4.3.0-8)" (Fedora 9)

My system (running the program):
Linux 2.6.26.8-57.fc8 #1 SMP Thu Dec 18 19:19:45 EST 2008 i686 athlon
i386 GNU/Linux

Thanks in advance,
Maarten

P.S.: I'm not subscribed to the list.

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message decibel 2009-09-09 16:30:35 Re: Elementary dependency look-up
Previous Message Marko Kreen 2009-09-09 15:26:59 Re: [rfc] unicode escapes for extended strings