Обсуждение: postmaster dies on EOF?

Поиск
Список
Период
Сортировка

postmaster dies on EOF?

От
"Denis A. Doroshenko"
Дата:
Hello,

i really don't know if this is already known issue, unfortunatelly i
was unable to find any relevant information on the web. The problem is
very simple, and doesn not seem to be too important, i really amn't sure
whether i should report it with the tool...

one day i decided to switch password authetntication in pg_hba.conf
for local tcp/unix connection as well, ran psql and saw 'Password:' for
the first time :-) But, when i pressed ^D in answer it showed many
lines with 'Password:' at the begining and then postmaster died. I
wondered much being unable to find postmaster amongst the list of
processes... it looked like:

cyxob [12] $ psql -h localhost template1
Password:^D
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
Password:
psql: pqReadData() -- backend closed the channel unexpectedly.
    This probably means the backend terminated abnormally
    before or while processing the request.

Later, when i ran it with no -S and with -s 10 flag and looked at its
output, it seemed to permorm read/write op on fdescriptor, and file
descriptor number were increasing up to 63 (well, my ulimit on number
of open files seems to be 64). it looked like:

FindExec: found "/usr/local/pgsql/bin/postgres" using argv[0]
binding ShmemCreate(key=52e2c1, size=1104896)
DEBUG:  Data Base System is starting up at Wed Oct 18 10:13:10 2000
DEBUG:  Data Base System was interrupted being in production at Wed Oct 18 10:11:45 2000
DEBUG:  Data Base System is in production state at Wed Oct 18 10:13:10 2000
proc_exit(0)
shmem_exit(0)
exit(0)
/usr/local/pgsql/bin/postmaster: reaping dead processes...
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 5
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 5
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 5
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 6
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 6
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 6
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 7
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 7
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 7
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 8
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 8
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 8
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 9
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 9
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 9
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 10
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 10
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 10
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 11
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 11
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 11
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 12
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 12
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 12
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 13
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 13
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 13
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 14
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 14
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 14
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 15
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 15
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 15
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 16
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 16
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 16
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 17
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 17
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 17
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 18
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 18
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 18
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 19
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 19
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 19
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 20
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 20
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 20
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 21
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 21
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 21
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 22
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 22
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 22
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 23
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 23
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 23
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 24
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 24
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 24
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 25
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 25
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 25
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 26
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 26
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 26
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 27
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 27
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 27
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 28
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 28
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 28
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 29
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 29
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 29
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 30
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 30
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 30
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 31
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 31
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 31
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 32
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 32
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 32
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 33
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 33
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 33
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 34
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 34
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 34
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 35
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 35
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 35
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 36
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 36
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 36
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 37
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 37
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 37
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 38
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 38
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 38
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 39
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 39
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 39
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 40
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 40
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 40
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 41
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 41
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 41
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 42
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 42
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 42
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 43
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 43
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 43
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 44
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 44
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 44
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 45
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 45
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 45
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 46
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 46
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 46
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 47
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 47
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 47
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 48
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 48
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 48
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 49
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 49
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 49
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 50
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 50
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 50
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 51
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 51
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 51
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 52
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 52
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 52
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 53
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 53
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 53
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 54
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 54
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 54
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 55
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 55
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 55
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 56
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 56
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 56
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 57
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 57
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 57
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 58
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 58
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 58
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 59
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 59
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 59
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 60
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 60
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 60
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 61
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 61
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 61
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 62
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 62
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling writing 62
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 63
/usr/local/pgsql/bin/postmaster: ServerLoop:        handling reading 63
FATAL 1:  ReleaseLruFile: No open files available to be closed
proc_exit(0)
shmem_exit(0)
exit(0)

i'm running:

pgsql [30] $ psql -c 'select version();' template1
                               version
---------------------------------------------------------------------
 PostgreSQL 7.0.2 on i386-unknown-openbsd2.6, compiled by gcc 2.95.1
(1 row)
pgsql [31] $

configuration options were:

./configure \
    --with-tcl \
    --prefix=/usr/local/pgsql \
    --with-template=openbsd \
    --with-includes=/usr/local/include \
    --with-libraries=/usr/local/lib \
    --with-tkconfig=/usr/local/lib/tk8.0

Thanks!

--
Denis A. Doroshenko -- VAS/IN group engineer
[Address: Omnitel Ltd., T.Sevcenkos 25, Vilnius 2600, Lithuania]
[Phone: +370 98 63207] [E-mail: mailto:d.doroshenko@omnitel.net]

Re: postmaster dies on EOF?

От
Tom Lane
Дата:
"Denis A. Doroshenko" <d.doroshenko@omnitel.net> writes:
> one day i decided to switch password authetntication in pg_hba.conf
> for local tcp/unix connection as well, ran psql and saw 'Password:' for
> the first time :-) But, when i pressed ^D in answer it showed many
> lines with 'Password:' at the begining and then postmaster died.

This is a previously reported bug in psql.  It gets into a loop wherein
it keeps opening new connections to the postmaster and then leaving them
hanging at the postmaster's demand for password.  That part is fixed in
current sources; also the postmaster doesn't elog(FATAL) on running out
of open file slots anymore.

But there's still a potential for denial of service by a broken client,
because the postmaster will just sit there waiting for password
responses on all these open connections, and there'll be no way for
other clients to get in.  There's been some talk of instituting a
timeout on the connection request protocol to fix that, but nothing's
been done about it yet AFAIK.

            regards, tom lane