git.postgresql.org Git - postgresql.git/commitdiff

git projects / postgresql.git / commitdiff
? search:
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: f433394)
Assert that pgwin32_signal_initialize() has been called early enough.
Thu, 4 Apr 2019 00:11:16 +0000 (17:11 -0700)
Thu, 4 Apr 2019 00:11:16 +0000 (17:11 -0700)
Before the pgwin32_signal_initialize() call, the backend version of
pg_usleep() has no effect. No in-tree code falls afoul of that today,
but temporary commit 23078689a9921968ac0873b017be6e7f772f10bc did so.

Discussion: https://postgr.es/m/20190402135442.GA1173872@rfd.leadboat.com


diff --git a/src/backend/port/win32/signal.c b/src/backend/port/win32/signal.c
index dd91fe51f0527d2fc1ab11ec553abaaa64843724..7d8961f4a447778ac74bd6792f3ae0c626b20375 100644 (file)
--- a/src/backend/port/win32/signal.c
+++ b/src/backend/port/win32/signal.c
@@ -52,6 +52,7 @@ static BOOL WINAPI pg_console_handler(DWORD dwCtrlType);
void
pg_usleep(long microsec)
{
+ Assert(pgwin32_signal_event != NULL);
if (WaitForSingleObject(pgwin32_signal_event,
(microsec < 500 ? 1 : (microsec + 500) / 1000))
== WAIT_OBJECT_0)
@@ -108,6 +109,7 @@ pgwin32_dispatch_queued_signals(void)
{
int exec_mask;
+ Assert(pgwin32_signal_event != NULL);
EnterCriticalSection(&pg_signal_crit_sec);
while ((exec_mask = UNBLOCKED_SIGNAL_QUEUE()) != 0)
{
@@ -209,6 +211,7 @@ pgwin32_create_signal_listener(pid_t pid)
void
pg_queue_signal(int signum)
{
+ Assert(pgwin32_signal_event != NULL);
if (signum >= PG_SIGNAL_COUNT || signum <= 0)
return;
diff --git a/src/port/open.c b/src/port/open.c
index 436cbae48263d8d64caa85e60b9795fda6f28402..f37afc75121209d214e87a8685f63d521527ca12 100644 (file)
--- a/src/port/open.c
+++ b/src/port/open.c
@@ -70,6 +70,9 @@ pgwin32_open(const char *fileName, int fileFlags,...)
(O_RANDOM | O_SEQUENTIAL | O_TEMPORARY) |
_O_SHORT_LIVED | O_DSYNC | O_DIRECT |
(O_CREAT | O_TRUNC | O_EXCL) | (O_TEXT | O_BINARY))) == fileFlags);
+#ifndef FRONTEND
+ Assert(pgwin32_signal_event != NULL); /* small chance of pg_usleep() */
+#endif
#ifdef FRONTEND
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /