Building 8.4beta2 on my AIX test machine works fine,
but when I set listen_addresses = '*' in postgresql.conf,
the server fails to start.
This is what I get:
LOG: 00000: could not translate service "5432" to address: Hostname and service name not provided or found
LOCATION: StreamServerPort, pqcomm.c:294
WARNING: 01000: could not create listen socket for "*"
LOCATION: PostmasterMain, postmaster.c:843
FATAL: XX000: could not create any TCP/IP sockets
LOCATION: PostmasterMain, postmaster.c:848
It works fine if listen_addresses is the empty string or the hostname,
only with the asterisk it seems to fail.
These are the relevant entries in postgresql.conf:
listen_addresses = '*'
port = 5432
Relevant parts of pg_config:
CONFIGURE = '--prefix=/postgres/8.4' '--with-includes=/usr/local/include' '--with-libraries=/usr/local/lib'
'--enable-debug''--enable-cassert' '--with-ldap' '--without-readline' '--enable-integer-datetimes' '--without-zlib'
'--enable-thread-safety''CC=gcc -maix64' 'LDFLAGS=-Wl,-bbigtoc'
CC = gcc -maix64
CPPFLAGS = -I/usr/local/include
CFLAGS = -O0 -Wall -Wmissing-prototypes -Wpointer-arith -Wendif-labels -fno-strict-aliasing -g
CFLAGS_SL =
LDFLAGS = -Wl,-bbigtoc -L/usr/local/lib -Wl,-blibpath:/postgres/8.4/lib:/usr/local/lib:/usr/lib:/lib
LDFLAGS_SL = -Wl,-bnoentry -Wl,-H512 -Wl,-bM:SRE
LIBS = -lpgport -lld -lm
VERSION = PostgreSQL 8.4beta2
The operating system is AIX 5.3 ML 03.
This change must have broken the code:
http://archives.postgresql.org/pgsql-committers/2009-01/msg00297.php
If listen_addresses is *, then getaddrinfo() will be called with
NULL for both the first and the second argument, which is not allowed
according to the documentation:
http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.commtechref/doc/commtrf2/getaddrinfo.htm
and should and does return EAI_NONAME = 8.
I guess that the buildfarm did not fail because it does not use '*'.
Yours,
Laurenz Albe