Issue 26006: 32 bits python ctypes creates 64 bits process from 32 bits executable (original) (raw)

Hi,

I have a 32 bits python on 64 bits Windows and 32 bits executable (compiled from native C). When I do kernel32.CreateProcessA(path_to_exe, ...) python creates a process which is 64 bit (ctypes IsWow64Process returns true). I expect it to be 32 as well. Am I wrong or that is a bug?

I attached testprog.exe but it requires testdll.dll The sources of testprog.c:

#include <stdio.h> #include <windows.h>

int main() {

    Sleep(15000);
    printf("%d", testSum(5,10));
    return 0;

}

testdll.c

#include <stdio.h>

__declspec(dllexport) int __cdecl testSum(int a, int b) { return(a+b); }

compiled as: /usr/bin/i686-pc-mingw32-gcc.exe -c testdll.c /usr/bin/i686-pc-mingw32-gcc.exe --shared -o testdll.dll testdll.o /usr/bin/i686-pc-mingw32-gcc.exe -o testprog testprog.c -L. -ltestdll

Process creation: if kernel32.CreateProcessA(path_to_exe, None, None, None, None, creation_flags, None, None, byref(startupinfo), byref(process_information))

the Wow64Process output parameter is true for a 32-bit process. WOW64 is short for Win32 running on Win64 (i.e. the environment used to run 32-bit programs in 64-bit Windows). Even a 32-bit WOW64 process has some 64-bit modules, such as ntdll.dll, wow64.dll, wow64win.dll, and wow64cpu.dll