Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751021AbWHML7r (ORCPT ); Sun, 13 Aug 2006 07:59:47 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751022AbWHML7r (ORCPT ); Sun, 13 Aug 2006 07:59:47 -0400 Received: from py-out-1112.google.com ([64.233.166.177]:53995 "EHLO py-out-1112.google.com") by vger.kernel.org with ESMTP id S1751021AbWHML7r (ORCPT ); Sun, 13 Aug 2006 07:59:47 -0400 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=LemOlFJARE0IQtTuKJzX1+1GSbbnSiC1Y2a9+04j3kCfcnP0vP+KyACNIgqSg1Rmw+YCZpEO5ib+sNXgvTHkNZtewT5ykZ8j+Mhp386x2BU1EQQvSsRVOzk8D6on0lrCk73dIHF8ntoOz4qppyw1U3bWC51KRhyknCS6jDfhtjk= Message-ID: <6bffcb0e0608130459k1c7e142esbfc2439badf323bd@mail.gmail.com> Date: Sun, 13 Aug 2006 13:59:46 +0200 From: "Michal Piotrowski" To: "Catalin Marinas" Subject: Re: [PATCH 2.6.18-rc4 00/10] Kernel memory leak detector 0.9 Cc: linux-kernel@vger.kernel.org In-Reply-To: <20060812215857.17709.79502.stgit@localhost.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <20060812215857.17709.79502.stgit@localhost.localdomain> Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 6069 Lines: 158 Hi Catalin, On 12/08/06, Catalin Marinas wrote: > This is a new version (0.9) of the kernel memory leak detector. See > the Documentation/kmemleak.txt file for a more detailed > description. The patches are downloadable from (the whole patch or the > broken-out series): > > http://homepage.ntlworld.com/cmarinas/kmemleak/patch-2.6.18-rc4-kmemleak-0.9.bz2 > http://homepage.ntlworld.com/cmarinas/kmemleak/broken-out/patches-kmemleak-0.9.tar.bz2 Can you look at this? ======================================================= [ INFO: possible circular locking dependency detected ] ------------------------------------------------------- events/0/8 is trying to acquire lock: (old_style_spin_init){++..}, at: [] memleak_free+0x95/0x157 but task is already holding lock: (&parent->list_lock){++..}, at: [] drain_array+0x49/0xad which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #1 (&parent->list_lock){++..}: [] check_prevs_add+0x4d/0xaf [] __lock_acquire+0x7b1/0x814 [] lock_acquire+0x5e/0x7e [] _spin_lock+0x23/0x2f [] cache_alloc_refill+0x76/0x1d2 [] kmem_cache_alloc+0x73/0xce [] radix_tree_node_alloc+0x1a/0x51 [] radix_tree_insert+0x51/0xfb [] insert_alias+0x85/0xe8 [] memleak_insert_aliases+0x4b/0xa6 [] memleak_init+0x44/0xf5 [] start_kernel+0x17e/0x1f9 [] 0xc0100210 -> #0 (old_style_spin_init){++..}: [] check_prevs_add+0x4d/0xaf [] __lock_acquire+0x7b1/0x814 [] lock_acquire+0x5e/0x7e [] _spin_lock+0x23/0x2f [] memleak_free+0x95/0x157 [] kmem_cache_free+0x62/0xbc [] slab_destroy+0x48/0x4d [] free_block+0xc9/0x101 [] drain_array+0x85/0xad [] cache_reap+0x80/0xfe [] run_workqueue+0x88/0xc4 [] worker_thread+0xfe/0x131 [] kthread+0x82/0xaa [] kernel_thread_helper+0x5/0xb other info that might help us debug this: 2 locks held by events/0/8: #0: (cache_chain_mutex){--..}, at: [] cache_reap+0x10/0xfe #1: (&parent->list_lock){++..}, at: [] drain_array+0x49/0xad stack backtrace: [] show_trace_log_lvl+0x58/0x14c [] show_trace+0xd/0xf [] dump_stack+0x17/0x19 [] print_circular_bug_tail+0x59/0x62 [] check_prev_add+0x2b/0x1b4 [] check_prevs_add+0x4d/0xaf [] __lock_acquire+0x7b1/0x814 [] lock_acquire+0x5e/0x7e [] _spin_lock+0x23/0x2f [] memleak_free+0x95/0x157 [] kmem_cache_free+0x62/0xbc [] slab_destroy+0x48/0x4d [] free_block+0xc9/0x101 [] drain_array+0x85/0xad [] cache_reap+0x80/0xfe [] run_workqueue+0x88/0xc4 [] worker_thread+0xfe/0x131 [] kthread+0x82/0xaa [] kernel_thread_helper+0x5/0xb DWARF2 unwinder stuck at kernel_thread_helper+0x5/0xb Leftover inexact backtrace: [] show_trace+0xd/0xf [] dump_stack+0x17/0x19 [] print_circular_bug_tail+0x59/0x62 [] check_prev_add+0x2b/0x1b4 [] check_prevs_add+0x4d/0xaf [] __lock_acquire+0x7b1/0x814 [] lock_acquire+0x5e/0x7e [] _spin_lock+0x23/0x2f [] memleak_free+0x95/0x157 [] kmem_cache_free+0x62/0xbc [] slab_destroy+0x48/0x4d [] free_block+0xc9/0x101 [] drain_array+0x85/0xad [] cache_reap+0x80/0xfe [] run_workqueue+0x88/0xc4 [] worker_thread+0xfe/0x131 [] kthread+0x82/0xaa [] kernel_thread_helper+0x5/0xb 0xc017674f is in memleak_free (/usr/src/linux-work3/mm/memleak.c:479). 474 /* Remove a pointer and its aliases from the pointer radix tree */ 475 static inline void delete_pointer(unsigned long ptr) 476 { 477 struct memleak_pointer *pointer; 478 479 pointer = radix_tree_delete(&pointer_tree, ptr); 480 if (!pointer) { 481 dump_stack(); 482 printk(KERN_WARNING "kmemleak: freeing unknown pointer value 0x%08lx\n", ptr); 483 return; 0xc0174f29 is in drain_array (/usr/src/linux-work3/mm/slab.c:3739). 3734 return; 3735 if (ac->touched && !force) { 3736 ac->touched = 0; 3737 } else { 3738 spin_lock_irq(&l3->list_lock); 3739 if (ac->avail) { 3740 tofree = force ? ac->avail : (ac->limit + 4) / 5; 3741 if (tofree > ac->avail) 3742 tofree = (ac->avail + 1) / 2; 3743 free_block(cachep, ac->entry, tofree, node); 0xc0174f9d is in cache_reap (/usr/src/linux-work3/mm/slab.c:3770). 3765 { 3766 struct kmem_cache *searchp; 3767 struct kmem_list3 *l3; 3768 int node = numa_node_id(); 3769 3770 if (!mutex_trylock(&cache_chain_mutex)) { 3771 /* Give up. Setup the next iteration. */ 3772 schedule_delayed_work(&__get_cpu_var(reap_work), 3773 REAPTIMEOUT_CPUC); 3774 return; config file and dmesg http://www.stardust.webpages.pl/files/o_bugs/kmemleak-0.9/ > -- > Catalin Regards, Michal -- Michal K. K. Piotrowski LTG - Linux Testers Group (http://www.stardust.webpages.pl/ltg/wiki/) - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/