Thread: Weird error messages from Windows upon client death
On windows, if the client gets terminated while sending data to the server, in a COPY for example, it results in some rather head-scratcher messages in the server log, for example:
Since the server was reading from the client and never tries to initiate a connection, the %m part of the message is a bit baffling. The errno at this point is 10061.
Googling for "No connection could be made because the target machine actively refused it", I can't find any mentions for it that occur in a context in which a connection is not being attempted, except for from PostgreSQL. So I think we must be doing something wrong but I can't figure out what that would be (no strace, not gdb). Any tips on how to figure out why this is happening?
I run the below, and then terminated it with a ctrl-C. This is with 9.4dev compiled with MinGW, but I've seen (unconfirmed by me) reports of the same %m from the Windows binary distribution for a production version.
perl -le 'print rand() foreach 1..10000000' | psql -c 'copy foo from stdin'
Cheers,
Jeff
On Jan28, 2014, at 19:19 , Jeff Janes <jeff.janes@gmail.com> wrote: > On windows, if the client gets terminated while sending data to the server, in a > COPY for example, it results in some rather head-scratcher messages in the server > log, for example: > > LOG: could not receive data from client: No connection could be made because > the target machine actively refused it. > > Since the server was reading from the client and never tries to initiate a > connection, the %m part of the message is a bit baffling. The errno at this > point is 10061. My guess is that the server received a TCP RST, indicating that the client's socket has gone away, and the the error message is the same for a RST received during connection setup and a RST received later on. During connection setup, it absolutely makes sense to say that the "client has actively refused the connection" if it responds to a SYN packet with RST... best regards, Florian Pflug