On 2016-01-02 12:05, Amit Kapila wrote:
On Sat, Jan 2, 2016 at 3:16 PM, Andres Freund <and...@anarazel.de
<mailto:and...@anarazel.de>> wrote:

    Hi Petr,

    On 2016-01-02 09:17:02 +0100, Petr Jelinek wrote:
    > so the commit which triggers this issue is
    > 387da18874afa17156ee3af63766f17efb53c4b9 , not sure why yet (wanted to 
    > heads up early since multiple people are looking at this). Note that the
    > compilation around this commit is made harder by the fact that commit
    > 91fa7b4719ac583420d9143132ba4ccddefbc5b2 breaks linking and fix is few
    > commits later.

    Thanks for bisecting! What exactly did you use to reproduce? Shay's
    npgsql binary? Or a plain psql session where you killed the client?
    Given that Amit couldn't reproduce with the latter that seems an
    interesting difference.

I am also able to reproduce now. The reason was that I didn't have
latest .Net framework and Visual Studio, which is must for the recent
version of Npgsql.

One probable reason of the problem seems to be that now for windows, we
are emulating non-blocking behaviour by setting pgwin32_noblock = true
which makes function pgwin32_recv() return EWOULDBLOCK and it would
wait using WaitLatchOrSocket() instead of pgwin32_waitforsinglesocket().
There are some differences in the way both the API's (WaitLatchOrSocket()
and pgwin32_waitforsinglesocket()) do wait, now may be that is the reason
for this behaviour.  One thing I have tried is that if I don't
set pgwin32_noblock
in secure_raw_read(), then this problem won't occur which lead to above
reasoning.  I am still investigating.

Well, without pgwin32_noblock = true we never enter the code block which calls WaitLatchOrSocket and hangs as in my testing this was always called because of EWOULDBLOCK.

 Petr Jelinek                  http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services

Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:

Reply via email to