From 6f4ce3f83e68a594e310a45aa46a73eeb9c2d59d Mon Sep 17 00:00:00 2001 From: jonathan pickett Date: Tue, 19 Aug 2014 13:27:16 -0700 Subject: [PATCH] documenting problem discovered in issue 157 --- README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 51faa1ab..5d54ce5b 100644 --- a/README.md +++ b/README.md @@ -51,4 +51,16 @@ To run the Redis test suite requires some manual work: ## Known issues -None. +Problem: +On versions of Windows prior to Windows 8/Server 2012, when an AOF or RDB operation is complete and the child process is being rejoined with the parent, it is +possible for Redis to unexpectedly terminate. + +Cause: +The PAGE_REVERT_TO_FILE_MAP flag is not usable in VirtualProtect() in earlier versions of the OS. This flag allows for removing copy on write(COW) pages from +a memory mapped view without unmapping the view. In prior versions of the OS, the only way to purge COW pages is to unmap and then remap the memory mapped view. +Between the unmapping and remapping operations a third party process(e.g., an anti-virus program) could allocate virtual memory occupied by the memory mapped view. +As this view is used for the Redis heap, failure to remap is a fatal error. (See RejoinCOWPages() in src\Win32_Interop\Win32_QFork.cpp) + +Solution: +If you encounter this problem, host Redis on Windows 8/Server 2012 or newer. +