From 5fb5be0ba5db86edfaba3c855e86473bbb76b195 Mon Sep 17 00:00:00 2001 From: mehrdadn Date: Fri, 28 Feb 2020 10:22:32 -0800 Subject: [PATCH] Some bug fixes for Windows (#7374) * Fix MAP_SHARED check in sys/mman.h * Fix missing :platform_shims dependency for ray_util * dlmalloc patch for Arrow --- BUILD.bazel | 1 + bazel/ray_deps_setup.bzl | 1 + src/shims/windows/sys/mman.h | 2 +- thirdparty/patches/arrow-windows-dlmalloc.patch | 16 ++++++++++++++++ 4 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 thirdparty/patches/arrow-windows-dlmalloc.patch diff --git a/BUILD.bazel b/BUILD.bazel index cc26c438d..9fd7111e3 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -837,6 +837,7 @@ cc_library( ], visibility = ["//visibility:public"], deps = [ + ":platform_shims", ":sha256", "@boost//:asio", "@com_github_google_glog//:glog", diff --git a/bazel/ray_deps_setup.bzl b/bazel/ray_deps_setup.bzl index e3941c154..8f3b64288 100644 --- a/bazel/ray_deps_setup.bzl +++ b/bazel/ray_deps_setup.bzl @@ -188,6 +188,7 @@ def ray_deps_setup(): "//thirdparty/patches:arrow-windows-poll.patch", "//thirdparty/patches:arrow-windows-sigpipe.patch", "//thirdparty/patches:arrow-windows-socket.patch", + "//thirdparty/patches:arrow-windows-dlmalloc.patch", ], ) diff --git a/src/shims/windows/sys/mman.h b/src/shims/windows/sys/mman.h index e5bec12eb..5cf6ae8db 100644 --- a/src/shims/windows/sys/mman.h +++ b/src/shims/windows/sys/mman.h @@ -19,7 +19,7 @@ EXTERN_C WINBASEAPI void *WINAPI MapViewOfFile(HANDLE hFileMappingObject, EXTERN_C WINBASEAPI BOOL WINAPI UnmapViewOfFile(void const *lpBaseAddress); static void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t off) { void *result = (void *)(-1); - if (!addr && prot == MAP_SHARED) { + if (!addr && (flags & MAP_SHARED)) { /* HACK: we're assuming handle sizes can't exceed 32 bits, which is wrong... * but works for now. */ void *ptr = MapViewOfFile((HANDLE)(intptr_t)fd, FILE_MAP_ALL_ACCESS, diff --git a/thirdparty/patches/arrow-windows-dlmalloc.patch b/thirdparty/patches/arrow-windows-dlmalloc.patch new file mode 100644 index 000000000..e5d9b166f --- /dev/null +++ b/thirdparty/patches/arrow-windows-dlmalloc.patch @@ -0,0 +1,16 @@ +diff --git cpp/src/plasma/dlmalloc.cc cpp/src/plasma/dlmalloc.cc +--- cpp/src/plasma/dlmalloc.cc ++++ cpp/src/plasma/dlmalloc.cc +@@ -76,5 +76,8 @@ int create_buffer(int64_t size) { +- if (!CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, +- (DWORD)((uint64_t)size >> (CHAR_BIT * sizeof(DWORD))), +- (DWORD)(uint64_t)size, NULL)) { ++ HANDLE h = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, ++ (DWORD)((uint64_t)size >> (CHAR_BIT * sizeof(DWORD))), ++ (DWORD)(uint64_t)size, NULL); ++ if (h) { ++ fd = reinterpret_cast(h); ++ } else { + fd = -1; + } +--