Re: [PATCH] Prevent hanging on unreachable hosts on startup - Mailing list pgsql-bugs

From Tom Lane
Subject Re: [PATCH] Prevent hanging on unreachable hosts on startup
Date
Msg-id 14892.1346117688@sss.pgh.pa.us
Whole thread Raw
In response to Re: [PATCH] Prevent hanging on unreachable hosts on startup  (Bruce Momjian <bruce@momjian.us>)
Responses Re: [PATCH] Prevent hanging on unreachable hosts on startup  (Ryan Kelly <rpkelly22@gmail.com>)
List pgsql-bugs
Bruce Momjian <bruce@momjian.us> writes:
> Tom, can you comment on this patch because you commented on the previous
> version?  Thanks.

Doesn't that provoke a pile of compiler warnings about local variables
potentially being altered during longjmp?  It sure looks pretty unsafe
from here.  It also fails to print any error message if a connection
attempt is canceled.

A bigger-picture question is just how safe it is to longjmp out of libpq
partway through a connection attempt.  At the very least, that's likely
to leak an open socket and some memory.  Maybe that doesn't matter too
much for psql, but I'm not convinced.  It seems fairly likely that
internal state for libc (malloc), openssl, etc, could be left in a
corrupt state if the interrupt happens at just the wrong time.  (This
didn't matter so much for the original proposal, where we'd just have
been exiting psql anyway on failure.  But if it's in \c then we want
psql to still be operational after a failure.)

We could perhaps dodge the longjmp safety question by using a
PQconnectStartParams/PQconnectPoll loop.  I'm not sure that provides
100% the same functionality --- in particular, I think it wouldn't allow
interrupting out of a DNS name resolution delay.  But it'd be less
likely to result in strange crashes.

            regards, tom lane

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: Minor inheritance/check bug: Inconsistent behavior
Next
From: Bruce Momjian
Date:
Subject: Re: BUG #6489: Alter table with composite type/table