Don't attempt to mmap an anonymous shared piece of memory
authorChristopher Dykes <cdykes@fb.com>
Thu, 4 Aug 2016 23:00:55 +0000 (16:00 -0700)
committerFacebook Github Bot 7 <facebook-github-bot-7-bot@fb.com>
Thu, 4 Aug 2016 23:08:32 +0000 (16:08 -0700)
Summary: The portability implementation of `mmap` for Windows doesn't currently support anonymous shared allocations, as they are non-trivial to manage, and the places this is being used doesn't actually need the memory to be allocated as shared, so allocate it as private instead.

Reviewed By: yfeldblum

Differential Revision: D3671495

fbshipit-source-id: e74d4fd925363fef16c1bf8445da1ff32bf8266d

folly/test/AtomicHashArrayTest.cpp

index 92be30da9ae2fcfb9dfb17e53e308a644a2c348d..9e53635e09d17adc0346b5dbc20809925f2ba78e 100644 (file)
@@ -73,7 +73,7 @@ class MmapAllocator {
 
   T *allocate(size_t n) {
     void *p = mmap(nullptr, n * sizeof(T), PROT_READ | PROT_WRITE,
-        MAP_SHARED | MAP_ANONYMOUS, -1, 0);
+        MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
     if (p == MAP_FAILED) throw std::bad_alloc();
     return (T *)p;
   }