BUG #11095: quickdie() calls syslog() in a signal handler leading to deadlock

Поиск
Список
Период
Сортировка
От craig@tintri.com
Тема BUG #11095: quickdie() calls syslog() in a signal handler leading to deadlock
Дата
Msg-id 20140730233328.2696.87275@wrigleys.postgresql.org
обсуждение исходный текст
Ответы Re: BUG #11095: quickdie() calls syslog() in a signal handler leading to deadlock  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
The following bug has been logged on the website:

Bug reference:      11095
Logged by:          Craig Robson
Email address:      craig@tintri.com
PostgreSQL version: Unsupported/Unknown
Operating system:   Linux
Description:

We are using log_destination='syslog'.

We found one of our Postgresql processes deadlocked with this backtrace.  It
is not safe to call syslog() in a signal handler on Linux.  We are using
version 8.4.20.  I looked at newer versions sourcecode and I believe they
have the same problem.

> #0  0x00007fe357ee3a7e in __lll_lock_wait_private () from
/lib64/libc.so.6
> #1  0x00007fe357e71e29 in _L_lock_10462 () from /lib64/libc.so.6
> #2  0x00007fe357e6fa52 in malloc () from /lib64/libc.so.6
> #3  0x00007fe357e64648 in open_memstream () from /lib64/libc.so.6
> #4  0x00007fe357ed10bb in __vsyslog_chk () from /lib64/libc.so.6
> #5  0x00007fe357ed1693 in __syslog_chk () from /lib64/libc.so.6
> #6  0x000000000069a2a3 in syslog (__fmt=0x7e08ce "[%lu-%d] %s", __pri=5)
at /usr/include/bits/syslog.h:32
> #7  write_syslog (level=5, line=0xbe2ac0 "WARNING:  terminating connection
because of crash of another server process\nDETAIL:  The postmaster has
commanded this server process to roll back the current transaction and exit,
because another ser"...) at elog.c:1592
> #8  0x000000000069c6d7 in send_message_to_server_log (edata=0xac9bc0) at
elog.c:2238
> #9  EmitErrorReport () at elog.c:1204
> #10 0x000000000069cd80 in errfinish (dummy=<optimized out>) at elog.c:457
> #11 0x00000000005ea19d in quickdie (postgres_signal_arg=<optimized out>)
at postgres.c:2502
> #12 <signal handler called>
> #13 0x00007fe357e6eae6 in _int_malloc () from /lib64/libc.so.6
> #14 0x00007fe357e6fa5d in malloc () from /lib64/libc.so.6
... Rest of stack trace removed.

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Davide Gonnella
Дата:
Сообщение: Is this a bug?
Следующее
От: desmodemone
Дата:
Сообщение: Re: Is this a bug?