2003-06-14 07:01:12

by Zwane Mwaikambo

[permalink] [raw]
Subject: [PATCH][2.5] Add cachep->name to kmem_cache_destroy debug printk

kmem_cache_destroy: Can't free all objects cbc7af30 (dcookie_cache)

I've been getting a number of these, perhaps it might be
worthwhile adding the name too.

Index: linux-2.5/mm/slab.c
===================================================================
RCS file: /home/cvs/linux-2.5/mm/slab.c,v
retrieving revision 1.88
diff -u -p -B -r1.88 slab.c
--- linux-2.5/mm/slab.c 11 Jun 2003 07:09:28 -0000 1.88
+++ linux-2.5/mm/slab.c 14 Jun 2003 05:35:25 -0000
@@ -1319,8 +1319,8 @@ int kmem_cache_destroy (kmem_cache_t * c
up(&cache_chain_sem);

if (__cache_shrink(cachep)) {
- printk(KERN_ERR "kmem_cache_destroy: Can't free all objects %p\n",
- cachep);
+ printk(KERN_ERR "kmem_cache_destroy: Can't free all objects %p (%s)\n",
+ cachep, cachep->name);
down(&cache_chain_sem);
list_add(&cachep->next,&cache_chain);
up(&cache_chain_sem);


2003-06-14 07:59:39

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH][2.5] Add cachep->name to kmem_cache_destroy debug printk

Zwane Mwaikambo <[email protected]> wrote:
>
> kmem_cache_destroy: Can't free all objects cbc7af30 (dcookie_cache)
>
> I've been getting a number of these, perhaps it might be
> worthwhile adding the name too.
>
> ...
> - printk(KERN_ERR "kmem_cache_destroy: Can't free all objects %p\n",
> - cachep);
> + printk(KERN_ERR "kmem_cache_destroy: Can't free all objects %p (%s)\n",
> + cachep, cachep->name);


yes, but we have a nice little helper for that.

diff -puN mm/slab.c~kmem_cache_destroy-error-print mm/slab.c
--- 25/mm/slab.c~kmem_cache_destroy-error-print 2003-06-14 01:10:37.000000000 -0700
+++ 25-akpm/mm/slab.c 2003-06-14 01:13:12.000000000 -0700
@@ -1374,8 +1374,7 @@ int kmem_cache_destroy (kmem_cache_t * c
up(&cache_chain_sem);

if (__cache_shrink(cachep)) {
- printk(KERN_ERR "kmem_cache_destroy: Can't free all objects %p\n",
- cachep);
+ slab_error(cachep, "Can't free all objects");
down(&cache_chain_sem);
list_add(&cachep->next,&cache_chain);
up(&cache_chain_sem);

_