Re: Undetected Deadlock

Simon Riggs <simon.riggs@enterprisedb.com>

From: Simon Riggs <simon.riggs@enterprisedb.com>
To: Michael Harris <harmic@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Alvaro Herrera <alvherre@alvh.no-ip.org>, pgsql-general@lists.postgresql.org
Date: 2022-02-10T07:00:17Z
Lists: pgsql-general
On Wed, 9 Feb 2022 at 23:50, Michael Harris <harmic@gmail.com> wrote:
>
> On Mon, 7 Feb 2022 at 09:57, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> > Do you want to try this and see if it actually adds any robustness with your buggy code?
>
> Sorry for the delayed response, & thanks for the patch.
>
> I wasn't able to test with our actual application because it could
> take days for it to actually trigger the problem, so I tested it with
> a simulation, which you can find here:
>
> https://github.com/harmic/pg_almloss

Thanks for writing a test case.

Could you specify the licence of that as The PostgreSQL Licence, to
allow it to be used as a permanent test case?
We can add other misbehaviors as well, as needed.

> With that simulation I could attach gdb to the backend and see that
> signal_pending & signal_due_at were being reset in the expected way,
> even when a missed interrupt was triggered.
>
> I'm convinced your patch improves robustness under the scenario we saw.

Cool, thanks


--
Simon Riggs                http://www.EnterpriseDB.com/



Commits

  1. Make timeout.c more robust against missed timer interrupts.

  2. Improve timeout.c's handling of repeated timeout set/cancel.