浏览代码

Merge branch 'bug31570_041' into maint-0.4.1

Nick Mathewson 6 年之前
父节点
当前提交
c6f7943269
共有 2 个文件被更改,包括 16 次插入1 次删除
  1. 5 0
      changes/bug31570
  2. 11 1
      src/lib/malloc/map_anon.c

+ 5 - 0
changes/bug31570

@@ -0,0 +1,5 @@
+  o Major bugfixes (crash, android):
+    - Tolerate systems (including some Android installations) where madvise
+      and MADV_DONTDUMP are available at build-time, but not at run time.
+      Previously, these systems would notice a failed syscall and abort.
+      Fixes bug 31570; bugfix on 0.4.1.1-alpha.

+ 11 - 1
src/lib/malloc/map_anon.c

@@ -111,7 +111,17 @@ static int
 nodump_mem(void *mem, size_t sz)
 {
 #if defined(MADV_DONTDUMP)
-  return madvise(mem, sz, MADV_DONTDUMP);
+  int rv = madvise(mem, sz, MADV_DONTDUMP);
+  if (rv == 0) {
+    return 0;
+  } else if (errno == ENOSYS || errno == EINVAL) {
+    return 0; // syscall not supported, or flag not supported.
+  } else {
+    tor_log_err_sigsafe("Unexpected error from madvise: ",
+                        strerror(errno),
+                        NULL);
+    return -1;
+  }
 #else
   (void) mem;
   (void) sz;