> 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!
Stanislav Bashkyrtsev <stanislav.bashkirtsev@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