Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit68e7e97

Browse files
committed
Get more info about Windows can't-reattach-to-shared-memory errors.
Commit63ca350 neglected to probe the state of things *before*the VirtualFree call, which now looks like it might be interesting.Discussion:https://postgr.es/m/25495.1524517820@sss.pgh.pa.us
1 parentdf62958 commit68e7e97

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

‎src/backend/port/win32_shmem.c

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -388,10 +388,18 @@ PGSharedMemoryReAttach(void)
388388
{
389389
PGShmemHeader*hdr;
390390
void*origUsedShmemSegAddr=UsedShmemSegAddr;
391+
MEMORY_BASIC_INFORMATIONprevinfo;
392+
DWORDqueryerr;
391393

392394
Assert(UsedShmemSegAddr!=NULL);
393395
Assert(IsUnderPostmaster);
394396

397+
/* Preliminary probe of region we intend to release */
398+
if (VirtualQuery(UsedShmemSegAddr,&previnfo,sizeof(previnfo))!=0)
399+
queryerr=0;
400+
else
401+
queryerr=GetLastError();
402+
395403
/*
396404
* Release memory region reservation that was made by the postmaster
397405
*/
@@ -405,12 +413,20 @@ PGSharedMemoryReAttach(void)
405413
DWORDmaperr=GetLastError();
406414
MEMORY_BASIC_INFORMATIONinfo;
407415

416+
if (queryerr==0)
417+
elog(LOG,"VirtualQuery(%p) before free reports region of size %zu, base %p, has state 0x%lx",
418+
UsedShmemSegAddr,previnfo.RegionSize,
419+
previnfo.AllocationBase,previnfo.State);
420+
else
421+
elog(LOG,"VirtualQuery(%p) before free failed: error code %lu",
422+
UsedShmemSegAddr,queryerr);
423+
408424
if (VirtualQuery(UsedShmemSegAddr,&info,sizeof(info))!=0)
409-
elog(LOG,"VirtualQuery(%p) reports region of size %zu, base %p, has state 0x%lx",
425+
elog(LOG,"VirtualQuery(%p)after freereports region of size %zu, base %p, has state 0x%lx",
410426
UsedShmemSegAddr,info.RegionSize,
411427
info.AllocationBase,info.State);
412428
else
413-
elog(LOG,"VirtualQuery(%p) failed: error code %lu",
429+
elog(LOG,"VirtualQuery(%p)after freefailed: error code %lu",
414430
UsedShmemSegAddr,GetLastError());
415431

416432
elog(FATAL,"could not reattach to shared memory (key=%p, addr=%p): error code %lu",

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp