diff --git a/src/backend/port/win32/signal.c b/src/backend/port/win32/signal.c
index 3218b38240..a80958e3c0 100644
--- a/src/backend/port/win32/signal.c
+++ b/src/backend/port/win32/signal.c
@@ -79,7 +79,9 @@ pgwin32_signal_initialize(void)
 		pg_signal_defaults[i] = SIG_IGN;
 	}
 	pg_signal_mask = 0;
+	EnterCriticalSection(&pg_signal_crit_sec);
 	pg_signal_queue = 0;
+	LeaveCriticalSection(&pg_signal_crit_sec);
 
 	/* Create the global event handle used to flag signals */
 	pgwin32_signal_event = CreateEvent(NULL, TRUE, FALSE, NULL);

diff --git a/src/backend/postmaster/syslogger.c b/src/backend/postmaster/syslogger.c
index cc4c7b5b75..c239b0dabc 100644
--- a/src/backend/postmaster/syslogger.c
+++ b/src/backend/postmaster/syslogger.c
@@ -1572,7 +1572,13 @@ sigUsr1Handler(SIGNAL_ARGS)
 {
 	int			save_errno = errno;
 
+#ifdef WIN32
+	EnterCriticalSection(&sysloggerSection);
+	rotation_requested = true;
+	LeaveCriticalSection(&sysloggerSection);
+#else
 	rotation_requested = true;
+#endif
 	SetLatch(MyLatch);
 
 	errno = save_errno;