Thread: BUG #16774: PostgreSQL clean build MINGW64 gcc but initdb fails, cannot find startadress CreateProcessAsUserA

The following bug has been logged on the website:

Bug reference:      16774
Logged by:          Mats Stenfeldt
Email address:      mats.stenfeldt@gmail.com
PostgreSQL version: 13.0
Operating system:   Windows 7 64-bit
Description:

Build environment: MINGW64, GCC (Rev6, Built by MSYS2 project) 10.2.0
REL=REL_13_STABLE
Build Steps:
1. git clone git://git.postgresql.org/git/postgresql.git source
2. rel=REL_13_STABLE
3. git checkout $rel
4. source=/y/builds/postgres/source/
5. dist=/y/builds/postgres/dist/REL_13_STABLE/
6. $source/configure --host=x86_64-w64-mingw32 --prefix=$dist && make &&
make install

Clean build without errors. But when i try to run the following command:
initdb --pgdata=Y:\data\pgsqlgw --username=postgres --auth=trust
A messagebox pops up (translated from Swedish), Cannot find
procedurestartadress CreateProcessAsUserA in DLL-file KERNEL32.DLL.
and the program exits.
I have checked INITDB.EXE with Dependency Walker there is a call for:
CreateProcessAsUserA in KERNEL32.DLL [hint 235 (0x00EB)].
Maybe the call should be for CreateProcessWithLogonW instead of
CreateProcessAsUserA?


Hello Mats,

14.12.2020 23:47, PG Bug reporting form wrote:
> The following bug has been logged on the website:
>
> Bug reference:      16774
> ...
>
> Build environment: MINGW64, GCC (Rev6, Built by MSYS2 project) 10.2.0
> REL=REL_13_STABLE
> ...
> 6. $source/configure --host=x86_64-w64-mingw32 --prefix=$dist && make &&
> make install
>
> Clean build without errors. But when i try to run the following command:
> initdb --pgdata=Y:\data\pgsqlgw --username=postgres --auth=trust
> A messagebox pops up (translated from Swedish), Cannot find
> procedurestartadress CreateProcessAsUserA in DLL-file KERNEL32.DLL.
> and the program exits.
> I have checked INITDB.EXE with Dependency Walker there is a call for:
> CreateProcessAsUserA in KERNEL32.DLL [hint 235 (0x00EB)].
> Maybe the call should be for CreateProcessWithLogonW instead of
> CreateProcessAsUserA?
The CreateProcessAsUserA function is located in advapi32 now, so you
should link with that library. For example:
CFLAGS="-D WINVER=0x0600 -D _WIN32_WINNT=0x0600" LIBS="-ladvapi32"
./configure --host=x86_64-w64-mingw32 ...

Best regards,
Alexander