Re: Exceeded maximum lock level - Mailing list pgsql-interfaces

From alexander lunyov
Subject Re: Exceeded maximum lock level
Date
Msg-id 48101BDB.6080501@zato.ru
Whole thread Raw
In response to Re: Exceeded maximum lock level  (Alvaro Herrera <alvherre@commandprompt.com>)
Responses Re: Exceeded maximum lock level  (Alvaro Herrera <alvherre@commandprompt.com>)
List pgsql-interfaces
Alvaro Herrera wrote:
>>  Fatal error 'Exceeded maximum lock level' at line 519 in file  
>> /usr/src/lib/libpthread/thread/thr_mutex.c (errno = 844913743)
> 
> This is clearly not a PG problem -- I'd think there's a bug in your own
> code.

This is very helpful :)

My code is just this:

int SQLLog( PGconn *conn,        struct auth *a,        struct client *c,        struct request *r,        struct data
*d)
 
{    char * str;    char log[256];
    char *request;    unsigned char *esc_bytea;    size_t      length;    PGresult   *res;

    if ((esc_bytea = PQescapeByteaConn(conn,d->data,d->len,&length)) == 
NULL)    {        snprintf(log,256, "Error: %s",PQerrorMessage(conn));        logging(log);        return 0;    }
    request = malloc ( sizeof(a->user) + sizeof(c->src) +            sizeof(r->dst) + sizeof(esc_bytea) + 110);
    sprintf(request, "INSERT INTO raw 
(username,from_addr,to_addr,rawdata,direction) VALUES 
('%s','%s','%s',E'%s',%d)", a->user,c->src,r->dst,esc_bytea,d->dir);
    res = PQexec(conn, request);
    if (PQresultStatus(res) != PGRES_COMMAND_OK)    {        snprintf(log,256,"failed: %s", PQerrorMessage(conn));
 logging(log);    }
 
    free(request);    PQfreemem(esc_bytea);    PQclear(res);
    return 0;
}

int OpenSQL( PGconn **conn )
{    char log[256];    char *conninfo;    conninfo = "host=localhost dbname=db user=user password=password";
    *conn = PQconnectdb(conninfo);    if (PQstatus(*conn) != CONNECTION_OK)    {        snprintf(log,256, "Connection
todatabase failed: %s",                PQerrorMessage(*conn));        logging(log);        return 1;    } else
return0;
 
}

int CloseSQL( PGconn *conn )
{    PQfinish(conn);    return 0;
}


I didn't touch any mutex (i don't even sure about what is mutex). While 
not calling any of sql functions, application works just fine. In 
non-threaded mode it is working with sql functions. Where did i go wrong?

-- 
wbr, alexander


pgsql-interfaces by date:

Previous
From: Alvaro Herrera
Date:
Subject: Re: Exceeded maximum lock level
Next
From: Alvaro Herrera
Date:
Subject: Re: Exceeded maximum lock level