BUG #8461: PostgreSQL 9.3 pg_dump heap corruptions - Mailing list pgsql-bugs

From benny@hegne.de
Subject BUG #8461: PostgreSQL 9.3 pg_dump heap corruptions
Date
Msg-id E1VMEdk-00031c-R3@wrigleys.postgresql.org
Whole thread Raw
Responses Re: BUG #8461: PostgreSQL 9.3 pg_dump heap corruptions  (Benjamin Wassermann <benny@hegne.de>)
List pgsql-bugs
The following bug has been logged on the website:

Bug reference:      8461
Logged by:          Benjamin Wassermann
Email address:      benny@hegne.de
PostgreSQL version: 9.3.0
Operating system:   Windows
Description:

Hi!


We are trying to build our own PostgreSQL 9.3 using Visual Studio 2005 on
Windows XP.


If we use the created pg_dump we get some “Heap Corruptions” and no database
dump will be created.
When we use the precomiled binaries from PostgreSQL 9.3 and use this pg_dump
we do NOT get any heap corruption and it works as expected.


To reproduce the bug you need a Microsoft Visual Studio 2005 with Version
8.0.50727.42.


Buildsteps:
1. Download the postgresql sources 9.3
2. Open a visual studio commandline and change to folder
"postgresql-9.2.3\src\tools\msvc". Execute the command "perl mkvcbuild.pl"
(make sure "ActivePerl" is installed, where using version "5.12.2 Build
1202").
3. In the root folder is now a pgpsql.sln, which u can open in visual
studio
4. Now change the "Build-Target" to Release
5. Now build the Projects in following steps and configuartions
    libpgport:
        General > Use of MFC: "Use MFC in a Static Libary"
        Libarian: Ingore Specific Libary "Nafxcwd.lib" and "Libcmtd.lib"
        -> Build
    libpqtypes:
        General > Use of MFC: "Use MFC in a Static Libary"
        -> Build
    libpq:
        General > Use of MFC: "Use MFC in a Static Libary"
        Linker > Additional Dependencies: "ShFolder.lib" and "Advapi32.lib"
        -> Build
    libecpg:
        General > Use of MFC: "Use MFC in a Static Libary"
        -> Build
    libpgcommon:
        General > Use of MFC: "Use MFC in a Static Libary"
        -> Build
    psql:
        General > Use of MFC: "Use MFC in a Static Libary"
        Linker > Additional Dependencies: "Advapi32.lib"
        Rename the Function _dosmaperr to _test_dosmaperr
        -> Build
            If there is a error like: "ERROR: psqlscan.c could not be found" just do
the following:
            Open a commandline and call "flex.exe "<Path to
sources>\postgresql-9.2.3\src\bin\psql\psqlscan.l"
(http://gnuwin32.sourceforge.net/install.html). Now copy the created file to
"\postgresql-9.2.3\src\bin\psql\psqlscan.c".
        -> Build
    pg_dump:
        General > Use of MFC: "Use MFC in a Static Libary"
        Linker > Additional Dependencies: "Advapi32.lib" and "zlib.lib" (path
example with default installation: "C:\Programme\GnuWin32\lib\zlib.lib")
        C/C++ > Preprocessor Definitions: "HAVE_LIBZ"
        C/C++ > Additional Include Directories: C:\Programme\GnuWin32\include
        -> Build

Now we have installed a PostgreSQL Server 9.3 on the same machine.


In Visual Studio we defined as "Command Arguments" the following:
"-h "localhost" -p 5432 -U postgres -f "C:\test.bak" -F c test"


Now start debugging and u will get the Heap corruption in Visual Studio.


Exactly u will get the following ASSERTION:


---------------------------
Microsoft Visual C++ Debug Library
---------------------------
Debug Assertion Failed!


Program: ...
File: dbgheap.c
Line: 1252


Expression: _CrtIsValidHeapPointer(pUserData)


For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.


(Press Retry to debug the application)
---------------------------
Abbrechen   Wiederholen   Ignorieren
---------------------------


Which is caused from the Function "dumpFunc" at line 9942 ff.


...
    free(funcsig);
...


Hope you can reproduce this Bug.
    Is there a workaround we could use?


Regards


Benjamin

pgsql-bugs by date:

Previous
From: felipe.diefenbach@dbseller.com.br
Date:
Subject: BUG #8462: psql is trying to access the unix socket in wrong directory
Next
From: "Dashputre, Anurag (GE Healthcare)"
Date:
Subject: Known issues for PostgreSQL server 8.1.19