diff options
author | joerg <joerg@pkgsrc.org> | 2015-06-18 19:00:26 +0000 |
---|---|---|
committer | joerg <joerg@pkgsrc.org> | 2015-06-18 19:00:26 +0000 |
commit | c8176ad40ac99c6990bcad52f2a92f810cb2ed47 (patch) | |
tree | 613a477097a9d5e0dfec959092dbf2b71e556bb4 | |
parent | 562a5fc583a089ab54b00f157987800af2ebff00 (diff) | |
download | pkgsrc-c8176ad40ac99c6990bcad52f2a92f810cb2ed47.tar.gz |
On NetBSD, limit the stack size of the GC marker threads to require 2GB
address space with the default settings. Restrict the GC heap size to
75% of the address space, if a limit is set. Bump revision.
-rw-r--r-- | lang/mono2/Makefile | 4 | ||||
-rw-r--r-- | lang/mono2/distinfo | 5 | ||||
-rw-r--r-- | lang/mono2/patches/patch-ak | 29 | ||||
-rw-r--r-- | lang/mono2/patches/patch-libgc_misc.c | 36 |
4 files changed, 66 insertions, 8 deletions
diff --git a/lang/mono2/Makefile b/lang/mono2/Makefile index 3b66ddfe973..eca40ebc0f8 100644 --- a/lang/mono2/Makefile +++ b/lang/mono2/Makefile @@ -1,7 +1,7 @@ -# $NetBSD: Makefile,v 1.17 2015/06/12 10:50:16 wiz Exp $ +# $NetBSD: Makefile,v 1.18 2015/06/18 19:00:26 joerg Exp $ DISTNAME= mono-2.10.9 -PKGREVISION= 13 +PKGREVISION= 14 CATEGORIES= lang MASTER_SITES= http://download.mono-project.com/sources/mono/ EXTRACT_SUFX= .tar.bz2 diff --git a/lang/mono2/distinfo b/lang/mono2/distinfo index d2f196a9d79..f726ac23c19 100644 --- a/lang/mono2/distinfo +++ b/lang/mono2/distinfo @@ -1,4 +1,4 @@ -$NetBSD: distinfo,v 1.6 2014/11/30 21:51:44 spz Exp $ +$NetBSD: distinfo,v 1.7 2015/06/18 19:00:26 joerg Exp $ SHA1 (mono-2.10.9.tar.bz2) = 1a6e8c5a0c3d88d87982259aa04402e028a283de RMD160 (mono-2.10.9.tar.bz2) = ac9784c413eb2cdb490750a86a96cce5c11ad5bd @@ -13,7 +13,7 @@ SHA1 (patch-af) = c109a9a742cb70d83cf99df0ad6c907c68809d52 SHA1 (patch-ah) = 5f90aa60504b9508d21e05b390626788d71d47b4 SHA1 (patch-ai) = cd5593a7e95039980b839bdabdf59d9e68fb9f56 SHA1 (patch-aj) = a5aab739e01fd969edb85b5b3e08c087554d0a72 -SHA1 (patch-ak) = 838b72fdc4e2ce8a62a56f8faf98c1f334abad14 +SHA1 (patch-ak) = 2f046ab73c699362eb857482aef0a32d6a97c848 SHA1 (patch-al) = 07d9c01fd5b6478f87dc563e2a2ae53ffbbc7187 SHA1 (patch-am) = 22a3c968089a837bc99e1d0f21bc3b33689b8311 SHA1 (patch-ap) = 9da5c76e34f1f61da411ab4e0c884c23cc320bb9 @@ -43,6 +43,7 @@ SHA1 (patch-dl) = fc9cd48c070dbecad68cfe7d45eea59a3e6023d9 SHA1 (patch-dm) = bac9172f419630f817702e15dd3761cb4f60e0a0 SHA1 (patch-dn) = 9a55bd9c492b64ec9feadb45419b4bec37900b89 SHA1 (patch-do) = 6ccd5598198fc04e638ec5bc5e03c92e16206c92 +SHA1 (patch-libgc_misc.c) = e05ed1c7138d70f2f86820fe56734675e8598474 SHA1 (patch-man_mprof-report.1) = e175943bc63780d907b4ceab08e7f9ad6a1a7ac8 SHA1 (patch-mcs_class_System.Web_System.Web.UI_Page.cs) = 986874319e849b93a2c89b7eb360e53f18fa7ca4 SHA1 (patch-mcs_class_System.Web_System.Web.Util_SecureHashCodeProvider.cs) = d82d9737efb07a8095acc5bf78d9cc522d24632d diff --git a/lang/mono2/patches/patch-ak b/lang/mono2/patches/patch-ak index 83a0a80a8c6..f3855fc4b60 100644 --- a/lang/mono2/patches/patch-ak +++ b/lang/mono2/patches/patch-ak @@ -1,6 +1,6 @@ -$NetBSD: patch-ak,v 1.1 2013/06/17 12:43:28 wiz Exp $ ---- libgc/pthread_support.c.orig 2011-01-04 19:39:55.000000000 +0200 -+++ libgc/pthread_support.c 2011-03-17 16:14:10.000000000 +0200 +$NetBSD: patch-ak,v 1.2 2015/06/18 19:00:26 joerg Exp $ +--- libgc/pthread_support.c.orig 2012-01-30 18:01:22.000000000 +0000 ++++ libgc/pthread_support.c @@ -68,8 +68,8 @@ # if (defined(GC_DGUX386_THREADS) || defined(GC_OSF1_THREADS) || \ @@ -12,7 +12,28 @@ $NetBSD: patch-ak,v 1.1 2013/06/17 12:43:28 wiz Exp $ # define USE_PTHREAD_SPECIFIC # endif -@@ -1175,6 +1175,22 @@ +@@ -592,6 +592,20 @@ static void start_mark_threads() + } + } + # endif /* HPUX || GC_DGUX386_THREADS */ ++# if defined(__NetBSD__) ++# define MAX_STACK_SIZE (1024 * 1024 *sizeof(word)) ++ { ++ size_t old_size; ++ int code; ++ ++ if (pthread_attr_getstacksize(&attr, &old_size) != 0) ++ ABORT("pthread_attr_getstacksize failed\n"); ++ if (old_size > MAX_STACK_SIZE) { ++ if (pthread_attr_setstacksize(&attr, MAX_STACK_SIZE) != 0) ++ ABORT("pthread_attr_setstacksize failed\n"); ++ } ++ } ++# endif + # ifdef CONDPRINT + if (GC_print_stats) { + GC_printf1("Starting %ld marker threads\n", GC_markers - 1); +@@ -1238,6 +1252,22 @@ void GC_end_blocking(void) { #define __d10_sleep sleep #endif /* GC_DGUX386_THREADS */ diff --git a/lang/mono2/patches/patch-libgc_misc.c b/lang/mono2/patches/patch-libgc_misc.c new file mode 100644 index 00000000000..976e97b1c88 --- /dev/null +++ b/lang/mono2/patches/patch-libgc_misc.c @@ -0,0 +1,36 @@ +$NetBSD: patch-libgc_misc.c,v 1.1 2015/06/18 19:00:26 joerg Exp $ + +--- libgc/misc.c.orig 2011-11-15 17:22:41.000000000 +0000 ++++ libgc/misc.c +@@ -14,10 +14,10 @@ + */ + /* Boehm, July 31, 1995 5:02 pm PDT */ + +- + #include <stdio.h> + #include <limits.h> + #ifndef _WIN32_WCE ++#include <sys/resource.h> + #include <signal.h> + #endif + +@@ -755,6 +755,19 @@ void GC_init_inner() + initial_heap_sz = divHBLKSZ(initial_heap_sz); + } + } ++#ifdef RLIMIT_AS ++ { ++ /* ++ * If there is a VA limit for the process, ++ * keep the heap under 75% if that limit. ++ */ ++ struct rlimit lim; ++ if (!getrlimit(RLIMIT_AS, &lim)) { ++ if (lim.rlim_cur != RLIM_INFINITY && lim.rlim_cur == (word)lim.rlim_cur) ++ GC_set_max_heap_size(lim.rlim_cur / 2 + lim.rlim_cur / 4); ++ } ++ } ++#endif + { + char * sz_str = GETENV("GC_MAXIMUM_HEAP_SIZE"); + if (sz_str != NULL) { |