From bcf2f8133b385415700f1c47d0ffd8aec030f775 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 10 Oct 2006 22:42:12 +0000 Subject: [PATCH] * Fixed a big memory leak: vm_delete_areas() did not put the reference of the address space of reserved areas - IOW address spaces were never freed upon team exit. * dump_cache() now prints a list of the cache's consumers. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19040 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/vm/vm.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/system/kernel/vm/vm.cpp b/src/system/kernel/vm/vm.cpp index 9d34827a74..a21c96aa8d 100644 --- a/src/system/kernel/vm/vm.cpp +++ b/src/system/kernel/vm/vm.cpp @@ -1867,8 +1867,8 @@ page_state_to_text(int state) static int dump_cache(int argc, char **argv) { + vm_cache *cache, *consumer = NULL; addr_t address; - vm_cache *cache; vm_page *page; if (argc < 2) { @@ -1886,6 +1886,10 @@ dump_cache(int argc, char **argv) kprintf("cache at %p:\n", cache); kprintf("cache_ref: %p\n", cache->ref); kprintf("source: %p\n", cache->source); + kprintf("consumers:\n"); + while ((consumer = (vm_cache *)list_get_next_item(&cache->consumers, consumer)) != NULL) { + kprintf(" %p\n", consumer); + } kprintf("store: %p\n", cache->store); kprintf("virtual_size: 0x%Lx\n", cache->virtual_size); kprintf("temporary: %ld\n", cache->temporary); @@ -2012,6 +2016,7 @@ vm_delete_areas(struct vm_address_space *addressSpace) else addressSpace->areas = area->address_space_next; + vm_put_address_space(addressSpace); free(area); continue; }