On 23/01/2026 14:13, Fujii Masao wrote:
> Hi,
>
> While reviewing the patch [1], I found that WalSndShutdown() calls abort()
> with the comment "keep the compiler quiet" just after proc_exit(0).
>
> static void
> WalSndShutdown(void)
> {
> /*
> * Reset whereToSendOutput to prevent ereport from attempting to send any
> * more messages to the standby.
> */
> if (whereToSendOutput == DestRemote)
> whereToSendOutput = DestNone;
>
> proc_exit(0);
> abort(); /* keep the compiler quiet */
> }
>
> This may have been necessary in the past, but is it still required?
> Other functions, such as CheckpointerMain(), simply call proc_exit(0)
> without an abort(), which doesn't seem to cause compiler warnings.
> That made me wonder whether the abort() in WalSndShutdown() is
> still needed, or which compiler would actually warn if WalSndLoop()
> does not end with an abort().
Seems useless to me. Looking at the git history, long time ago the
proc_exit(0) call was in a function that returned "int", and I can see
how the compiler would complain about that if it didn't know that the
function doesn't return. But WalSendShutdown() returns void these days,
so you should not get a compiler warning, whether or not the compiler
understands that proc_exit(0) doesn't return.
- Heikki