[Re] Re: [Re] Re: [Re] Re: Winsock error 10035 while trying to upgrade from 8.0 to 8.2 - Mailing list pgsql-general

From Cyril VELTER
Subject [Re] Re: [Re] Re: [Re] Re: Winsock error 10035 while trying to upgrade from 8.0 to 8.2
Date
Msg-id 0-39226827517-2674-1818551@CFGEM
Whole thread Raw
In response to Re: [Re] Re: [Re] Re: Winsock error 10035 while trying to upgrade from 8.0 to 8.2  (Magnus Hagander <magnus@hagander.net>)
List pgsql-general
> Cyril VELTER wrote:
> >> Cyril VELTER wrote:
> >>>     No I'm not. It's not even complied in the server nor in the pg_dump
> > binary.
> >>>     The server is built on windows using MSYS simply with ./configure &&
make
> > all
> >>> && make install
> >>>
> >>>
> >>>     I've been able to reproduce the problem 6 times (at random points in the

> >>> process, but it never complete successfully). Is there any test I can do
to
> >
> >>> help investigate the problem ?
> >> Sorry I haven't gotten back to you for a while.
> >>
> >> Yeah, if you can attach a debugger to the backend (assuming you have a
> >> predictable backend it happens to - but if you're loading, you are using
> >> a single session, I assume?), add a breakpoint around the area of the
> >> problem, and get a backtrace from exactly where it shows up, that would
> >> help.
> >
> >
> >     Thanks for your reply. I'll try to do this. I've installed gdb on the
> > problematic machine and recompiled postgres with debug symbols (configure
> > --enable-debug)
> >
> >     I'm not very familiar with gdb. Could you give some direction on setting
the
> > breakpoint. After running gdb on the postgres.exe file, I'm not able to set
the
> > breakpoint (b socket.c:574 give me an error).
>
> Hmm, I keep forgetting that. There is some serious black magic required
> to get gdb to even approach working state on win32. I'm too used to
> working with the msvc build now. I've never actually got it working
> myself, but I know others have. Hopefully someone can speak up here? :-)
>

    I don't have msvc available.

>
> >     Searching the source files, it seems the error message is generated in
> > port/win32/socket.c line 594.
>
> Right, but the important thing is which path down to that function is it
> generated in. Which is why a backtrace would help.

    Yes, I understand that.

>
> Looking at the code, the problem is probably somewhere in
> pgwin32_recv(). Now, it really shouldn't end up doing what you're
> seeing, but obviously it is.


    After looking at the code of pgwin32_recv(), I don't understand why
pgwin32_waitforsinglesocket() is called with the FD_ACCEPT argument.

>
> Perhaps we just need to have it retry if it gets the WSAEWOULDBLOCK?
> Thoughts?

    I've modified pgwin32_recv() to do that (repeat the
pgwin32_waitforsinglesocket() / WSARecv while the error is WSAEWOULDBLOCK and
not raising this error. I've an upgrade running right now (I will have the
result in the next hours).


    cyril


pgsql-general by date:

Previous
From: "Thomas F. O'Connell"
Date:
Subject: Large Database \d: ERROR: cache lookup failed for relation ...
Next
From: Tom Lane
Date:
Subject: Re: Large Database \d: ERROR: cache lookup failed for relation ...