mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 14:51:11 +01:00
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 0.2.2.6-alpha, which first had a microdescriptor cache that would get replaced before remapping it.
This commit is contained in:
parent
4835faebf5
commit
884a0e269c
2 changed files with 8 additions and 1 deletions
7
changes/bug2077_share_delete
Normal file
7
changes/bug2077_share_delete
Normal file
|
@ -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 0.2.2.6-alpha.
|
||||
|
|
@ -238,7 +238,7 @@ tor_mmap_file(const char *filename)
|
|||
strlcpy(tfilename,filename,MAX_PATH);
|
||||
#endif
|
||||
file_handle = CreateFile(tfilename,
|
||||
GENERIC_READ, FILE_SHARE_READ,
|
||||
GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_DELETE,
|
||||
NULL,
|
||||
OPEN_EXISTING,
|
||||
FILE_ATTRIBUTE_NORMAL,
|
||||
|
|
Loading…
Add table
Reference in a new issue