Thread: PQerrorMessage() bug?

PQerrorMessage() bug?

From
Carlos Hasan
Date:
Hi,

I think that found a weird bug when PQconnectdb() fails because I
haven't started PostgreSQL. The function PQerrorMessage() returns the
message:

could not connect to server: <<<weird garbage here>>
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.

Looks like the error message wasn't properly formatted.

It happens on Debian Linux "sarge" (with kernel 2.6.8) and PostgreSQL
7.4.5 (with libpq linked dynamically).

It works fine under Red Hat Linux 7.3 and PostgreSQL 7.3.4 (ie. instead
of <<weird garbage here>> and "/var/run/postgresql/.s.PGSQL. it says "No
such file or directory" and "/tmp/.s.PGSQL.nnnn"?  where nnnn is an
integer).

Any ideas of what could be the problem?

Thanks,

Carlos




Re: PQerrorMessage() bug?

From
Tom Lane
Date:
Carlos Hasan <chasan@acepta.com> writes:
> I think that found a weird bug when PQconnectdb() fails because I
> haven't started PostgreSQL. The function PQerrorMessage() returns the
> message:

> could not connect to server: <<<weird garbage here>>
> Is the server running locally and accepting
> connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.

> Looks like the error message wasn't properly formatted.

I think this is the known problem with GNU libc having a weird
(non-SUS-spec) strerror_r.  There's a workaround in the 8.0 sources
but it doesn't look like anyone's backported it to 7.4.  You can
drop the pqStrerror() code from CVS tip src/port/thread.c into 7.4
if you like (this will not work in general because 7.4 configure doesn't
set STRERROR_R_INT, but it should work for the case you want).
        regards, tom lane