]> granicus.if.org Git - postgresql/commitdiff
Remove Windows module-list-dumping code.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 30 Apr 2018 17:20:13 +0000 (13:20 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 30 Apr 2018 17:20:13 +0000 (13:20 -0400)
This code is evidently allocating memory and thus confusing matters
even more.  Let's see whether we can learn anything with
just VirtualQuery.

Discussion: https://postgr.es/m/25495.1524517820@sss.pgh.pa.us

src/backend/Makefile
src/backend/port/win32_shmem.c
src/makefiles/Makefile.win32
src/tools/msvc/Mkvcbuild.pm

index f9215cdbb50e33b934875cd8818ffe23bad75a23..1aaf1ec2f59819f390631fd0b9323430df8a0221 100644 (file)
@@ -79,7 +79,7 @@ libpostgres.a: postgres
 endif # cygwin
 
 ifeq ($(PORTNAME), win32)
-LIBS += -lsecur32 -lpsapi
+LIBS += -lsecur32
 
 postgres: $(OBJS) $(WIN32RES)
        $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_EX) -Wl,--stack=$(WIN32_STACK_RLIMIT) -Wl,--export-all-symbols -Wl,--out-implib=libpostgres.a $(call expand_subsys,$(OBJS)) $(WIN32RES) $(LIBS) -o $@$(X)
index 7402052ce61522ec63168c53b280b731401aa62b..9e42665ed62438f54c136d6c2ddddaf13e928284 100644 (file)
@@ -12,8 +12,6 @@
  */
 #include "postgres.h"
 
-#include <psapi.h>
-
 #include "miscadmin.h"
 #include "storage/dsm.h"
 #include "storage/ipc.h"
@@ -26,32 +24,6 @@ static Size UsedShmemSegSize = 0;
 static bool EnableLockPagesPrivilege(int elevel);
 static void pgwin32_SharedMemoryDelete(int status, Datum shmId);
 
-/* Dump all modules loaded into proc */
-static void
-dumpdlls(HANDLE proc)
-{
-       HMODULE         dll[1024];
-       DWORD           size_used = 1;
-       int                     i,
-                               n;
-
-       if (!EnumProcessModules(proc, dll, sizeof(dll), &size_used))
-       {
-               elog(LOG, "EnumProcessModules failed: %lu", GetLastError());
-               return;
-       }
-       n = (int) (size_used / sizeof(*dll));
-       elog(LOG, "EnumProcessModules: %d modules in process 0x%p", n, proc);
-       for (i = 0; i < n; i++)
-       {
-               char            name[MAXPGPATH];
-
-               if (!GetModuleFileNameEx(proc, dll[i], name, sizeof(name)))
-                       sprintf(name, "GetModuleFileNameEx failed: %lu", GetLastError());
-               elog(LOG, "%d: 0x%p %s", i + 1, dll[i], name);
-       }
-}
-
 static const char *
 mi_type(DWORD code)
 {
@@ -83,7 +55,7 @@ mi_state(DWORD code)
 }
 
 static void
-dumpmem(const char *reason, HANDLE proc)
+dumpmem(const char *reason)
 {
        char       *addr = 0;
        MEMORY_BASIC_INFORMATION mi;
@@ -92,11 +64,11 @@ dumpmem(const char *reason, HANDLE proc)
        do
        {
                memset(&mi, 0, sizeof(mi));
-               if (!VirtualQueryEx(proc, addr, &mi, sizeof(mi)))
+               if (!VirtualQuery(addr, &mi, sizeof(mi)))
                {
                        if (GetLastError() == ERROR_INVALID_PARAMETER)
                                break;
-                       elog(LOG, "VirtualQueryEx failed: %lu", GetLastError());
+                       elog(LOG, "VirtualQuery failed: %lu", GetLastError());
                        break;
                }
                elog(LOG, "0x%p+0x%p %s (alloc 0x%p) %s",
@@ -104,8 +76,6 @@ dumpmem(const char *reason, HANDLE proc)
                         mi_type(mi.Type), mi.AllocationBase, mi_state(mi.State));
                addr += mi.RegionSize;
        } while (addr > 0);
-
-       dumpdlls(proc);
 }
 
 /*
@@ -446,7 +416,7 @@ retry:
 
        /* Log information about the segment's virtual memory use */
        if (VirtualQuery(memAddress, &info, sizeof(info)) != 0)
-               elog(LOG, "mapped shared memory segment at %p, requested size %zu, mapped size %zu",
+               elog(LOG, "mapped shared memory segment at %p, requested size 0x%zx, mapped size 0x%zx",
                         memAddress, size, info.RegionSize);
        else
                elog(LOG, "VirtualQuery(%p) failed: error code %lu",
@@ -476,7 +446,7 @@ PGSharedMemoryReAttach(void)
        Assert(UsedShmemSegAddr != NULL);
        Assert(IsUnderPostmaster);
 
-       dumpmem("before VirtualFree", GetCurrentProcess());
+       dumpmem("before VirtualFree");
 
        /*
         * Release memory region reservation that was made by the postmaster
@@ -485,18 +455,20 @@ PGSharedMemoryReAttach(void)
                elog(FATAL, "failed to release reserved memory region (addr=%p): error code %lu",
                         UsedShmemSegAddr, GetLastError());
 
-       dumpmem("after VirtualFree", GetCurrentProcess());
+       dumpmem("after VirtualFree");
 
        hdr = (PGShmemHeader *) MapViewOfFileEx(UsedShmemSegID, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0, UsedShmemSegAddr);
        if (!hdr)
        {
                DWORD           maperr = GetLastError();
 
-               dumpmem("after MapViewOfFileEx", GetCurrentProcess());
+               dumpmem("after failed MapViewOfFileEx");
 
                elog(FATAL, "could not reattach to shared memory (key=%p, addr=%p): error code %lu",
                         UsedShmemSegID, UsedShmemSegAddr, maperr);
        }
+       else
+               dumpmem("after MapViewOfFileEx");
        if (hdr != origUsedShmemSegAddr)
                elog(FATAL, "reattaching to shared memory returned unexpected address (got %p, expected %p)",
                         hdr, origUsedShmemSegAddr);
@@ -639,7 +611,5 @@ pgwin32_ReserveSharedMemoryRegion(HANDLE hChild)
                return false;
        }
 
-       dumpmem("after reserve", hChild);
-
        return true;
 }
index 678371d5f2aa5825a4047459f2af85e3402ec502..7abbd01971ad0837c9694e5fc8ba422ac0a82bdd 100644 (file)
@@ -1,7 +1,5 @@
 # src/makefiles/Makefile.win32
 
-override CPPFLAGS+= -DPSAPI_VERSION=1
-
 ifdef PGXS
 BE_DLLLIBS= -L$(libdir) -lpostgres
 override CPPFLAGS+= -I$(includedir_server)/port/win32
index ceac0add4eb1f3cbef95cfbd22233b1a30bceb8c..b2f5fd61853628fdea37cd3d85f2399268aaba55 100644 (file)
@@ -174,10 +174,8 @@ sub mkvcbuild
                'repl_gram.y',             'syncrep_scanner.l',
                'syncrep_gram.y');
        $postgres->AddDefine('BUILDING_DLL');
-       $postgres->AddDefine('PSAPI_VERSION=1');
        $postgres->AddLibrary('secur32.lib');
        $postgres->AddLibrary('ws2_32.lib');
-       $postgres->AddLibrary('psapi.lib');
        $postgres->AddLibrary('wldap32.lib') if ($solution->{options}->{ldap});
        $postgres->FullExportDLL('postgres.lib');