Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r532:6184784a65a0 Date: 2013-09-23 17:34 +0200 http://bitbucket.org/pypy/stmgc/changeset/6184784a65a0/
Log: Fix running test_zdemo_random, at least on some Linuxes where too many mprotect() eventually fail. diff --git a/c4/dbgmem.c b/c4/dbgmem.c --- a/c4/dbgmem.c +++ b/c4/dbgmem.c @@ -14,6 +14,7 @@ static char *zone_start, *zone_current = NULL, *zone_end = NULL; static signed char accessible_pages[MMAP_TOTAL / PAGE_SIZE] = {0}; +int stm_use_mprotect = 1; static void _stm_dbgmem(void *p, size_t sz, int prot) { @@ -24,9 +25,11 @@ intptr_t align = ((intptr_t)p) & (PAGE_SIZE-1); p = ((char *)p) - align; sz += align; - dprintf(("dbgmem: %p, %ld, %d\n", p, (long)sz, prot)); - int err = mprotect(p, sz, prot); - assert(err == 0); + if (stm_use_mprotect) { + dprintf(("dbgmem: %p, %ld, %d\n", p, (long)sz, prot)); + int err = mprotect(p, sz, prot); + assert(err == 0); + } } void *stm_malloc(size_t sz) @@ -36,7 +39,7 @@ #ifdef _GC_MEMPROTECT pthread_mutex_lock(&malloc_mutex); if (zone_current == NULL) { - zone_start = mmap(NULL, MMAP_TOTAL, PROT_NONE, + zone_start = mmap(NULL, MMAP_TOTAL, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); if (zone_start == NULL || zone_start == MAP_FAILED) { stm_fatalerror("not enough memory: mmap() failed\n"); diff --git a/c4/demo_random.c b/c4/demo_random.c --- a/c4/demo_random.c +++ b/c4/demo_random.c @@ -782,11 +782,17 @@ printf("started new thread\n"); } +#ifdef _GC_MEMPROTECT +extern int stm_use_mprotect; +#endif int main(void) { int i, status; +#ifdef _GC_MEMPROTECT + stm_use_mprotect = 0; /* uses too much memory */ +#endif /* pick a random seed from the time in seconds. A bit pointless for now... because the interleaving of the _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit