From: | Denis Smirnov <sd(at)arenadata(dot)io> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Robert Haas <robertmhaas(at)gmail(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Async-unsafe functions in signal handlers |
Date: | 2021-08-27 20:51:27 |
Message-ID: | 86F918AA-AE0E-4EAB-B6C1-7000043EAB50@arenadata.io |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
> 26 авг. 2021 г., в 23:39, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> написал(а):
>
> (BTW, I think it's pretty silly to imagine that adding backtrace()
> calls inside ereport is making things any more dangerous. ereport
> has pretty much always carried a likelihood of calling malloc(),
> for example.)
I have taken a look through the signal handlers and found out that many of them use malloc() via ereport() and elog(). Here is the list:
SIGUSR1
- procsignal_sigusr1_handler(): autoprewarm, autovacuum, bgworker, bgwriter, checkpointer, pgarch, startup, walwriter, walreciever, walsender
- sigusr1_handler(): postmaster
SIGFPE:
- FloatExceptionHandler(): autovacuum, bgworker, postgres, plperl
SIGHUP:
- SIGHUP_handler(): postmaster
SIGCHLD:
- reaper(): postmaster
SIGQUIT:
- quickdie(): postgres
SIGTERM:
- bgworker_die(): bgworker
SIGALRM:
- handle_sig_alarm(): autovacuum, bgworker, postmaster, startup, walsender, postgres
I suspect there are lots of potential ways to lock on malloc() inside any of this handlers. An interesting question is why there are still no evidence of such locks?
Best regards,
Denis Smirnov | Developer
sd(at)arenadata(dot)io
Arenadata | Godovikova 9-17, Moscow 129085 Russia
From | Date | Subject | |
---|---|---|---|
Next Message | Andres Freund | 2021-08-27 21:05:47 | Re: Async-unsafe functions in signal handlers |
Previous Message | Peter Geoghegan | 2021-08-27 20:35:16 | Re: log_autovacuum in Postgres 14 -- ordering issue |