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

Commit2750b11

Browse files
committed
Fix places where WaitForxxx can block, to eliminate failure to detect
deadlock on Win32. Magnus Hagander
1 parenta1f7fb0 commit2750b11

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

‎src/backend/port/win32/sema.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* Portions Copyright (c) 1996-2004, PostgreSQL Global Development Group
77
*
88
* IDENTIFICATION
9-
* $PostgreSQL: pgsql/src/backend/port/win32/sema.c,v 1.8 2004/08/29 05:06:46 momjian Exp $
9+
* $PostgreSQL: pgsql/src/backend/port/win32/sema.c,v 1.9 2004/09/07 14:31:42 tgl Exp $
1010
*
1111
*-------------------------------------------------------------------------
1212
*/
@@ -233,15 +233,15 @@ semop(int semId, struct sembuf * sops, int nsops)
233233
wh[0]=cur_handle;
234234
wh[1]=pgwin32_signal_event;
235235

236-
ret=WaitForMultipleObjects(2,wh, FALSE, (sops[0].sem_flg&IPC_NOWAIT) ?0 :INFINITE);
236+
ret=WaitForMultipleObjectsEx(2,wh, FALSE, (sops[0].sem_flg&IPC_NOWAIT) ?0 :INFINITE, TRUE);
237237

238238
if (ret==WAIT_OBJECT_0)
239239
{
240240
/* We got it! */
241241
sem_counts[sops[0].sem_num]--;
242242
return0;
243243
}
244-
elseif (ret==WAIT_OBJECT_0+1)
244+
elseif (ret==WAIT_OBJECT_0+1||ret==WAIT_IO_COMPLETION)
245245
{
246246
/* Signal event is set - we have a signal to deliver */
247247
pgwin32_dispatch_queued_signals();

‎src/backend/port/win32/socket.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* Portions Copyright (c) 1996-2004, PostgreSQL Global Development Group
77
*
88
* IDENTIFICATION
9-
* $PostgreSQL: pgsql/src/backend/port/win32/socket.c,v 1.5 2004/08/30 02:54:38 momjian Exp $
9+
* $PostgreSQL: pgsql/src/backend/port/win32/socket.c,v 1.6 2004/09/07 14:31:42 tgl Exp $
1010
*
1111
*-------------------------------------------------------------------------
1212
*/
@@ -93,7 +93,7 @@ TranslateSocketError(void)
9393
staticint
9494
pgwin32_poll_signals(void)
9595
{
96-
if (WaitForSingleObject(pgwin32_signal_event,0)==WAIT_OBJECT_0)
96+
if (WaitForSingleObjectEx(pgwin32_signal_event,0, TRUE)==WAIT_OBJECT_0)
9797
{
9898
pgwin32_dispatch_queued_signals();
9999
errno=EINTR;
@@ -130,9 +130,9 @@ pgwin32_waitforsinglesocket(SOCKET s, int what)
130130

131131
events[0]=pgwin32_signal_event;
132132
events[1]=waitevent;
133-
r=WaitForMultipleObjects(2,events, FALSE,INFINITE);
133+
r=WaitForMultipleObjectsEx(2,events, FALSE,INFINITE, TRUE);
134134

135-
if (r==WAIT_OBJECT_0)
135+
if (r==WAIT_OBJECT_0||r==WAIT_IO_COMPLETION)
136136
{
137137
pgwin32_dispatch_queued_signals();
138138
errno=EINTR;
@@ -419,8 +419,8 @@ pgwin32_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, c
419419
}
420420

421421
events[numevents]=pgwin32_signal_event;
422-
r=WaitForMultipleObjectsEx(numevents+1,events, FALSE,timeoutval,FALSE);
423-
if (r!=WSA_WAIT_TIMEOUT&&r!= (WAIT_OBJECT_0+numevents))
422+
r=WaitForMultipleObjectsEx(numevents+1,events, FALSE,timeoutval,TRUE);
423+
if (r!=WAIT_TIMEOUT&&r!=WAIT_IO_COMPLETION&&r!= (WAIT_OBJECT_0+numevents))
424424
{
425425
/*
426426
* We scan all events, even those not signalled, in case more than

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp