Thread: PQerrorMessage() bug?
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
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