[tor-commits] [tor/master] Use the FILE_SHARE_DELETE flag for CreateFile on a mapping

nickm at torproject.org nickm at torproject.org
Wed Jun 12 14:06:16 UTC 2013

commit 884a0e269c382f9e927d8c8b1ef4ef9d2d48379d
Author: Nick Mathewson <nickm at torproject.org>
Date:   Wed Jun 12 09:53:46 2013 -0400

    Use the FILE_SHARE_DELETE flag for CreateFile on a mapping
    A comment by rransom on #8795 taken together with a comment by doorss
    recorded on #2077 suggest that *every* attempt to replace the md cache
    will fail on Vista/Win7 if we don't have the FILE_SHARE_DELETE flag
    passed to CreateFile, and if we try to replace the file ourselves
    before unmapping it.  I'm adding the FILE_SHARE_DELETE, since that's
    this simplest fix.  Broken indexers (the favored #2077 hypothesis)
    could still cause trouble here, but at least this patch should make us
    stop stepping on our own feet.
    Likely fix for #2077 and its numerous duplicates. Bugfix on, which first had a microdescriptor cache that would get
    replaced before remapping it.
 changes/bug2077_share_delete |    7 +++++++
 src/common/compat.c          |    2 +-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/changes/bug2077_share_delete b/changes/bug2077_share_delete
new file mode 100644
index 0000000..71e9160
--- /dev/null
+++ b/changes/bug2077_share_delete
@@ -0,0 +1,7 @@
+  o Major bugfixes (windows):
+    - Open files to be mapped with FILE_SHARE_DELETE so that we can
+      replace them before closing the mapping. This is a likely cause of
+      warnings and crashes when replacing the microdescriptor cache
+      file. Diagnosed based on comments by "doorss" and by Robert
+      Ransom. Possible fix for bug 2077; bugfix on
diff --git a/src/common/compat.c b/src/common/compat.c
index 59e3898..7f7405f 100644
--- a/src/common/compat.c
+++ b/src/common/compat.c
@@ -238,7 +238,7 @@ tor_mmap_file(const char *filename)
   file_handle = CreateFile(tfilename,
-                           GENERIC_READ, FILE_SHARE_READ,

More information about the tor-commits mailing list