On Tue, 2021-06-15 at 00:25 +0800, Julien Rouhaud wrote:
> Le mar. 15 juin 2021 à 00:15, Laurenz Albe:
> > - Attach to the backend with gdb.
> > - Enter "print ProcessInterrupts()"
> >
> > Of course that will not work if the backend is in uninterruptible
> > sleep (for example, stuck in an I/O operation).
>
> that may be a terrible idea and leave a buffer pinned or something.
> and if it's not it won't tell us where we're missing a CALL_FOR_INTERRUPTS
If there is an error, AbortCurrentTransaction() gets called, which releases
all buffer pins. If you were stuck in an endless loop in a critical
section, you are going to crash anyway.
If you want to investigate where you are stuck, run a backtrace first.
Yours,
Laurenz Albe
--
Cybertec | https://www.cybertec-postgresql.com