Re: 7.4RC2 regression failur and not running stats collector process on Solaris

From: Kiyoshi Sawada <sawa(at)nagoya2(dot)jrc(dot)or(dot)jp>
To: pgsql-hackers(at)postgresql(dot)org
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Kurt Roeckx <Q(at)ping(dot)be>, Zeugswetter Andreas SB SD <ZeugswetterA(at)spardat(dot)at>
Subject: Re: 7.4RC2 regression failur and not running stats collector process on Solaris
Date: 2003-11-14 05:39:57
Message-ID: 20031114140104.334E.SAWA@nagoya2.jrc.or.jp
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Thanks to Tom Lane, Kurt Roeckx, Zeugswetter Andreas and Shigehiro.

It was solved. It reports.

On Thu, 13 Nov 2003 09:50:59 -0500 Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>
> Hmm ... that's certainly evidence that "localhost" will resolve
> correctly on your machine, but then why is the bind() failing?
>
> If you have strace or ktrace or some other tool for watching the
> kernel calls issued by a particular process, please try tracing
> postmaster startup and look to see exactly what arguments are being
> passed to bind().
>

I was got suggestion from Shigehiro.

On Fri, 14 Nov 2003 02:46:05 +0900 (JST) Shigehiro Honda wrote:
>
> They are x86 and sparc if truss is applied to postmaster,
> It was going to bind on UDP by IPv6.
> It was succeeded to bind on sparc :
> so_socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP, "", 1) = 5
> bind(5, 0x003B6A90, 32, 3) = 0
> It was failed to bind on x86 :
> so_socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP, "", 1) = 4
> bind(4, 0x083301B8, 32, 3) Err#126 EADDRNOTAVAIL

More he wrote :
It seems that this flag has looked at and bind to the address which should be given to localhost.
IPv4 and IPv6 are given to the cause which confirmed IPv6 in the direction of sparc, or lo0, and only IPv4 is given to the direction of x86.
Function called by src/backend/postmaster/pgstat.c I feel fault the library function getaddrinfo() on x86 solaris called from getaddrinfo_all().

The address of IPv4 and IPv6 is stored in /etc/inet/ipnodes file on solaris.
Then, I tried to remove IPv6 localhost address '::1' in /etc/inet/ipnodes.
----------------------------------------------
$ make cheke
======================
All 93 tests passed.
======================

$pg_ctl start ; ps -ef | grep postmaster
postgres 20937 1 1 12:10:40 pts/4 0:00 /usr/local/pgsql/bin/postmaster
postgres 20939 20937 0 12:10:41 pts/4 0:00 /usr/local/pgsql/bin/postmaster
postgres 20940 20939 0 12:10:41 pts/4 0:00 /usr/local/pgsql/bin/postmaster

to show the PIDs and current queries of all backends:
regression=# SELECT pg_stat_get_backend_pid(S.backendid) AS procpid,
pg_stat_get_backend_activity(S.backendid) AS current_query
FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS S;

procpid | current_query
---------+---------------
5482 |
(1 row)
----------------------------------------------

This method may be effective in the environment of only IPv4, and fault the library function getaddrinfo() on solaris .

Thank you.

--
Kiyoshi Sawada

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Joe Conway 2003-11-14 05:49:58 heads up -- subtle change of behavior of new initdb
Previous Message Christopher Kings-Lynne 2003-11-14 05:30:41 unsupported platforms