Re: BUG #17391: While using --with-ssl=openssl and PG_TEST_EXTRA='ssl' options, SSL tests fail on OpenBSD 7.0

Daniel Gustafsson <daniel@yesql.se>

From: Daniel Gustafsson <daniel@yesql.se>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Thomas Munro <thomas.munro@gmail.com>, Andres Freund <andres@anarazel.de>, byavuz81@gmail.com, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>, Heikki Linnakangas <heikki.linnakangas@iki.fi>, Michael Paquier <michael@paquier.xyz>
Date: 2022-02-08T15:28:36Z
Lists: pgsql-bugs
> On 8 Feb 2022, at 01:30, Tom Lane <tgl@sss.pgh.pa.us> wrote:

> * If I make my_sock_write ignore EPIPE/ECONNRESET, as per the
> attached entirely-uncommitable patch, the errors go away.

I can confirm that I wasn't able to reproduce the errors with the attached (and
the sleep() removed) running the tests over and over in a loop on Linux and
OpenBSD.  Moreover, I was also unable to reproduce the error when only ignoring
EPIPE.  When only ignoring ECONNRESET it worked intermittently on OpenBSD (but
all the time on Linux as expected).

> ..could we get away with ignoring EPIPE/ECONNRESET in writes during connection
> startup?  We'd notice the failure soon enough on the read side if it's not this
> problem.  (This seems a bit related to libpq's other hacks that postpone
> recognition of write failures.)

Off the cuff I can't think of a case where it would lead to adverse effects
*during startup*.

--
Daniel Gustafsson		https://vmware.com/




Commits

  1. Move libpq's write_failed mechanism down to pqsecure_raw_write().

  2. Fix thinko in PQisBusy().

  3. Set SNI ClientHello extension to localhost in tests

  4. Improve worst-case performance of text_position_get_match_pos()