I finally had time to test this further on a variety of systems, and was unable to reproduce on any non-Windows platform. The dump even works fine on Windows XP; just not Windows 7.
This prompted me to do a little more research, and this time I found this thread from Sept. 2011:
From Tom Lane in the above thread:
Hmm. I can see how that would happen if you're using one of the Windows
environments wherein malloc's done inside libpq have to be free'd inside
libpq. (The PQExpBuffer support code is in libpq...)
However, the flaw in that explanation is that it would basically mean
pg_dump doesn't work at all on Windows, at least not if you have any
user-defined functions, and probably some other cases too because there
seem to be multiple instances of the dubious coding. It's a bit hard to
believe that nobody's noticed that before.
This appears to describe exactly the issue I'm encountering, and my build is in fact linked against the static runtime. I guess the reason this hasn't come up sooner is because most Windows users either use the 'official' binaries rather than compiling from source, or link against the dynamic runtime.
Is this something I could expect to be fixed in the near future, or is it enough of an edge case that I should come up with some solution or work-around on my own? Thanks,
David
On Mon, Nov 28, 2011 at 8:00 PM, Tom Lane <tgl@xxxxxxxxxxxxx> wrote:
Hmph. I still can't reproduce this here, which seems to mean one ofthree things:
1. We fixed this since 8.3.15 (still doesn't seem likely).
2. It's specific to Windows.
3. It's specific to the pg_dump build you are using.