Re: Is abort() still needed in WalSndShutdown()?

From: Heikki Linnakangas <hlinnaka(at)iki(dot)fi>
To: Fujii Masao <masao(dot)fujii(at)gmail(dot)com>
Cc: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is abort() still needed in WalSndShutdown()?
Date: 2026-01-26 12:33:02
Message-ID: a629e6d5-65fa-41dc-83a8-80b0baafcdf3@iki.fi
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 26/01/2026 11:52, Fujii Masao wrote:
> On Fri, Jan 23, 2026 at 9:30 PM Heikki Linnakangas <hlinnaka(at)iki(dot)fi> wrote:
>> On 23/01/2026 14:13, Fujii Masao wrote:
>>> 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.
>
> Thanks! Also WalSndShutdown() and proc_exit() are now marked pg_noreturn,
> so the compiler can see that the function never returns, seems which should
> also eliminate the warning even without abort().

Yeah. Nowadays pg_noreturn is understood by all supported compilers.
There are no guarantees on what the compiler will do with the
information, but I would expect it to silence that warning on any
half-decent compiler. (But as discussed, this is moot anyway because the
returns 'void')

> I'm thinking to remove the abort() call from WalSndShutdown() in the
> attached patch.

+1

- Heikki

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Aleksander Alekseev 2026-01-26 13:06:35 Re: Time to drop RADIUS support?
Previous Message Peter Eisentraut 2026-01-26 12:22:04 Re: AIX support