Author: Remi Meier <remi.me...@inf.ethz.ch> Branch: Changeset: r1635:19500805ccb8 Date: 2015-02-18 15:23 +0100 http://bitbucket.org/pypy/stmgc/changeset/19500805ccb8/
Log: possibly fix a memory leak diff --git a/c8/stm/gcpage.c b/c8/stm/gcpage.c --- a/c8/stm/gcpage.c +++ b/c8/stm/gcpage.c @@ -62,6 +62,10 @@ size, (char*)(addr - stm_object_pages), (uintptr_t)(addr - stm_object_pages) / 4096UL)); + /* set stm_flags to 0 in seg0 so that major gc will see them + as not visited during sweeping */ + ((struct object_s*)addr)->stm_flags = 0; + return (stm_char*)(addr - stm_object_pages); } @@ -89,6 +93,8 @@ size, (char*)(addr - stm_object_pages), (uintptr_t)(addr - stm_object_pages) / 4096UL)); + ((struct object_s*)addr)->stm_flags = 0; + spinlock_release(lock_growth_large); return (stm_char*)(addr - stm_object_pages); } diff --git a/c8/stm/smallmalloc.c b/c8/stm/smallmalloc.c --- a/c8/stm/smallmalloc.c +++ b/c8/stm/smallmalloc.c @@ -175,13 +175,17 @@ increment_total_allocated(size); - if (UNLIKELY(result == NULL)) + if (UNLIKELY(result == NULL)) { + char *addr = _allocate_small_slowpath(size); + ((struct object_s*)addr)->stm_flags = 0; return (stm_char*) - (_allocate_small_slowpath(size) - stm_object_pages); + (addr - stm_object_pages); + } *fl = result->next; /* dprintf(("allocate_outside_nursery_small(%lu): %p\n", */ /* size, (char*)((char *)result - stm_object_pages))); */ + ((struct object_s*)result)->stm_flags = 0; return (stm_char*) ((char *)result - stm_object_pages); } _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit