Subject: [alpine-aports] [PATCH] testing/mongodb: fix for #5117

From: Marc Vertes <[email-masked]>
Date: Tue, 23 Feb 2016 17:11:09 +0000

---
 testing/mongodb/APKBUILD                      |  6 ++---
 testing/mongodb/musl-process-stack-size.patch | 38 +++++++++++++++++----------
 2 files changed, 27 insertions(+), 17 deletions(-)

diff --git a/testing/mongodb/APKBUILD b/testing/mongodb/APKBUILD
index a177e91..aa51200 100644
--- a/testing/mongodb/APKBUILD
+++ b/testing/mongodb/APKBUILD
@@ -96,7 +96,7 @@ md5sums="a9f150f8bead9e8afd3ab28492167073  mongodb-src-r3.2.1.tar.gz
 04a348397be8ca7471d404056d8a1490  40-fix-elf-native-class.patch
 86a988b5d4402227d177b8a1167008e8  backtrace.patch
 cd0833592e3a23e729ebd71eb756318c  fix-asio-strerror_r.patch
-4a0b1b35ee0c6a5e5c35aee0097f4a07  musl-process-stack-size.patch
+40ccc56b2332347f200c22140867c1df  musl-process-stack-size.patch
 1df24dc2aa6b8f4c6da22f097a921ebb  boost160.patch
 7d2f94bed7bfacd32fcd52dfd931f077  mongodb.confd
 792a0b53b3e843cf14176c5beb8cdfe1  mongodb.initd
@@ -108,7 +108,7 @@ sha256sums="50431a3ba5ab68bd0bed4a157a8528ca27753a63cf101f13135255e4e9d42f15  mo
 3a863660113d29728d7a852b3fba73926697b496848f8ccc4d8e73e6614cfdfc  40-fix-elf-native-class.patch
 300d9f6b819730de54018d4b418eb7f921ba9c83fad4958a040544b076160848  backtrace.patch
 ec6d404221f02706ef2e52e00e414e98666dcc3606e78c9b3d33dfbd42a1eae7  fix-asio-strerror_r.patch
-a266b1b2397f069fedb2427a1989a30ed9f63a300ba8726ec50609e93920f76d  musl-process-stack-size.patch
+f8f6e9016b387defa2ec925f983149a37dc8f77ed5fe7f3cbd17de537758eddc  musl-process-stack-size.patch
 0e9da35f4303e53daf51e78961c517895f2d12f4fa49298f01e1665e15246d73  boost160.patch
 a4ca29c577428c02cd0b0a8b46756df5f53a05519c9d13c270533cf99b9b819d  mongodb.confd
 7e39fbd4dc18dba21c8767931683f4795e58e0e91b9f9a5842539923ded453c9  mongodb.initd
@@ -120,7 +120,7 @@ b9fdacb273d5a4e1e60735846b262287f84ca6cbded9393d182f69158d3162a50cae5d834f76860d
 56db8f43afc94713ac65b174189e2dd903b5e1eff0b65f1bdac159e52ad4de6606c449865d73bd47bffad6a8fc339777e2b11395596e9a476867d94a219c7925  40-fix-elf-native-class.patch
 7d097f497cb910c9cb81086cd8c222e43456d1a6de4adfe3e97a4d99add454279350fdeb7305dab84b3deca04afd824036d4065ee0fb8cdd8c03e96d98ee86af  backtrace.patch
 f829b1ad542db3ee776d444243b8b47ab4e48a7386d9b199d7b1adafd31556cf173a5683b78ee735d6a69999ad9af5ad152fde955bbe8865f7910718991ce97c  fix-asio-strerror_r.patch
-e8f41ea4df62b6588cdea64e1f57553e04c3c0b603dac68b49b222bc9fa8c7b6f6bc1654b5033318ad3ec73632848dfa0f03d33b3c8d8b523ef0145e461364b2  musl-process-stack-size.patch
+c4880c3a97ea1c668350a18b4f9ff4cec0a9e589a4c2079be0a49a7566703b8b816362a1cedd7a2e66b038d05fcc1871aed214097f0a89ef99d4ff19fb482041  musl-process-stack-size.patch
 385c82875174caae433a3b381eb10f98a6fed0c8943788ddefff1de80a898e480bdbbf094a7783285cf2ae11ce3fc6878e57d58183d05be2f0837b206aaa4da6  boost160.patch
 9bcd870742c31bf25f34188ddc3c414de1103e9860dea9f54eee276b89bc2cf1226abab1749c5cda6a6fb0880e541373754e5e83d63cc7189d4b9c274fd555c3  mongodb.confd
 2cb295ac0eb44acb4533c86d6d0988d5f760361a43cff7845713f3e2cf0e37023d23790a2926c613bf2b0668060c0b68d59000db52daaacd8af10e701a8b4192  mongodb.initd
diff --git a/testing/mongodb/musl-process-stack-size.patch b/testing/mongodb/musl-process-stack-size.patch
index dd45abb..df31abf 100644
--- a/testing/mongodb/musl-process-stack-size.patch
+++ b/testing/mongodb/musl-process-stack-size.patch
@@ -1,22 +1,32 @@
---- mongodb-src-r3.2.1.orig/src/mongo/platform/stack_locator_pthread_getattr_np.cpp
-+++ mongodb-src-r3.2.1/src/mongo/platform/stack_locator_pthread_getattr_np.cpp
-@@ -31,6 +31,7 @@
- #include "mongo/platform/stack_locator.h"
+--- a/src/mongo/platform/stack_locator_pthread_getattr_np.cpp
++++ b/src/mongo/platform/stack_locator_pthread_getattr_np.cpp
+@@ -32,6 +32,12 @@
  
  #include <pthread.h>
-+#include <sys/resource.h>
  
++#if defined(__linux__) && !defined(__GLIBC__) /* Assume Musl libc */
++#include <sys/resource.h>
++#include <sys/syscall.h>
++#include <unistd.h>
++#endif
++
  #include "mongo/util/assert_util.h"
  #include "mongo/util/scopeguard.h"
-@@ -52,6 +53,11 @@
-     invariant(result == 0);
-     invariant(base != nullptr);
-     invariant(size != 0);
-+
-+    struct rlimit rl;
+ 
+@@ -48,6 +54,16 @@
+     size_t size = 0;
+ 
+     auto result = pthread_attr_getstack(&selfAttrs, &base, &size);
 +
-+    invariant(getrlimit(RLIMIT_STACK, &rl) == 0);
++#if defined(__linux__) && !defined(__GLIBC__) /* Assume Musl libc */
++    struct rlimit rl = { 0 };
++    base += size;
++	if (syscall(SYS_gettid) == getpid()) {	/* In the main thread */
++		invariant(getrlimit(RLIMIT_STACK, &rl) == 0);
++	}
 +    size = rl.rlim_cur ? : 2 * 1024 * 1024;
++    base -= size;
++#endif
  
-     // TODO: Assumes a downward growing stack. Note here that
-     // getstack returns the stack *base*, being the bottom of the
+     invariant(result == 0);
+     invariant(base != nullptr);
-- 
2.7.1

---
Unsubscribe:  [email-masked]
Help:         [email-masked]
---