> In a standalone backend, I think there are only 3 ways to get to
> normal shutdown:
>        * SIGTERM
>        * SIGQUIT
>         * EOF on stdin

I debugged a bit more and I see that getc() returns with -1 in
interactive_getc() which is interpreted as EOF:
c = getc(stdin);

I see that errno == EINTR when it happens. This is as much as I can figure
out in C, so I'm leaving it at that. Your advice about debugging the
backend process ("select pg_backend_pid()") instead of running in a
single-user mode worked for me, thank you!

On Tue, Jan 4, 2022 at 1:02 AM Tom Lane <t...@sss.pgh.pa.us> wrote:

> Stanislav Bashkyrtsev <stanislav.bashkirt...@gmail.com> writes:
> >> Why do you think postgres quits?
>
> > The process was running and then it stopped. And in the console I see:
> > 2022-01-03 23:23:29.495 MSK [76717] LOG:  checkpoint starting: shutdown
> > immediate
>
> In a standalone backend, I think there are only 3 ways to get to
> normal shutdown:
>         * SIGTERM
>         * SIGQUIT
>         * EOF on stdin
>
> It's not very clear which of those your setup is triggering.
>
> In any case, debugging standalone mode is very very rarely
> what you should be doing; it's only vaguely related to normal
> operation, plus you lack all the creature comforts of psql.
> The usual thing is to start a normal interactive session, find out
> the PID of its connected backend process ("select pg_backend_pid()"
> is a reliable way), and then attach to that process with GDB or your
> debugger of choice.
>
>                         regards, tom lane
>

Reply via email to