Re: kmem_cache_destroy: Can't free all objects

Renaud Duhaut <[email protected]> 03 Oct 2003 17:07:59 +0200
Newsgroups gmane.comp.file-systems.intermezzo.devel
Message-ID <1065193679.5698.3.camel@p137>
Good news : the latest CVS version of intersync correct this !

--
Renaud Duhaut
[email protected]

Le mer 01/10/2003 =C3=A0 10:49, =EA=B9=80 =EB=8F=99=EC=9A=B1 a =C3=A9crit=
 :=20
> Hi, when I run these commands, I got a log message.=20
>=20
> =20
>=20
> # tail =E2=80=93f /var/log/messages &
>=20
> # mount =E2=80=93t intermezzo /dev/sdb2 /izo0
>=20
> # intersync /izo0 &
>=20
> # killall intersync
>=20
> # umount /izo0
>=20
> # echo 65535 /proc/sys/intermezzo/debug
>=20
> # rmmod intermezzo
>=20
> ... kernel: kmem_cache_destroy: Can=E2=80=99t free all objects XXXXXX
>=20
> =20
>=20
> After this message, I tried mount again and got this Oops;
>=20
> =20
>=20
> kernel BUG at slab.c:815!
>=20
> invalid operand: 0000
>=20
> CPU:    0
>=20
> EIP:    0060:[<c01414ca>]    Not tainted
>=20
> EFLAGS: 00010246
>=20
> =20
>=20
> EIP is at  (2.4.20-8custom)
>=20
> eax: 00000000   ebx: c366635c   ecx: c36664bc   edx: c36664bc
>=20
> esi: c36664b5   edi: f89e5c72   ebp: f6e29ecc   esp: f6e29ea4
>=20
> ds: 0068   es: 0068   ss: 0068
>=20
> Process modprobe (pid: 1336, stackpage=3Df6e29000)
>=20
> Stack: c366635c 00000040 00002000 f6e29ebc c366637c ffffffc0 00000080
> 00000000=20
>=20
>        00000001 f89ab000 f6e29eec f89ac7c7 f89e5c65 00000040 00000080
> 00022000=20
>=20
>        00000000 00000000 f6e29f10 f89cf8f9 f89e4120 ffffffff 0000f3f9
> 00000000=20
>=20
> Call Trace:   [<f89ac7c7>]  (0xf6e29ed0))
>=20
> [<f89e5c65>]  (0xf6e29ed4))
>=20
> [<f89cf8f9>]  (0xf6e29ef0))
>=20
> [<f89e4120>]  (0xf6e29ef4))
>=20
> [<c0123db5>]  (0xf6e29f14))
>=20
> [<f89ab060>]  (0xf6e29f18))
>=20
> [<f89e81f4>]  (0xf6e29f24))
>=20
> [<f89e81e8>]  (0xf6e29f28))
>=20
> [<f89ab060>]  (0xf6e29f58))
>=20
> [<c0109a2f>]  (0xf6e29fc0))
>=20
> =20
>=20
> =20
>=20
> Code: 0f 0b 2f 03 7a 56 26 c0 8b 12 81 fa ec 67 29 c0 75 d4 89 4b=20
>=20
> =20
>=20
> >>EIP; c01414ca <kmem_cache_create+2da/3b0>  <=3D=3D=3D=3D=3D
>=20
> =20
>=20
> >>ebx; c366635c <_end+32a8404/38491108>
>=20
> >>ecx; c36664bc <_end+32a8564/38491108>
>=20
> >>edx; c36664bc <_end+32a8564/38491108>
>=20
> >>esi; c36664b5 <_end+32a855d/38491108>
>=20
> >>edi; f89e5c72 <[intermezzo].rodata.end+a1cb/f8d9>
>=20
> >>ebp; f6e29ecc <_end+36a6bf74/38491108>
>=20
> >>esp; f6e29ea4 <_end+36a6bf4c/38491108>
>=20
> =20
>=20
> Trace; f89ac7c7 <[intermezzo]presto_init_ddata_cache+47/c0>
>=20
> Trace; f89e5c65 <[intermezzo].rodata.end+a1be/f8d9>
>=20
> Trace; f89cf8f9 <[intermezzo]init_module+79/1a0>
>=20
> Trace; f89e4120 <[intermezzo].rodata.end+8679/f8d9>
>=20
> Trace; c0123db5 <sys_init_module+575/6e0>
>=20
> Trace; f89ab060 <[intermezzo]izo_ioctl_is_invalid+0/2f0>
>=20
> Trace; f89e81f4 <[intermezzo].rodata.end+c74d/f8d9>
>=20
> Trace; f89e81e8 <[intermezzo].rodata.end+c741/f8d9>
>=20
> Trace; f89ab060 <[intermezzo]izo_ioctl_is_invalid+0/2f0>
>=20
> Trace; c0109a2f <system_call+33/38>
>=20
> =20
>=20
> Code;  c01414ca <kmem_cache_create+2da/3b0>
>=20
> 00000000 <_EIP>:
>=20
> Code;  c01414ca <kmem_cache_create+2da/3b0>  <=3D=3D=3D=3D=3D
>=20
>   0:   0f 0b                    ud2a     <=3D=3D=3D=3D=3D
>=20
> Code;  c01414cc <kmem_cache_create+2dc/3b0>
>=20
>   2:   2f                       das   =20
>=20
> Code;  c01414cd <kmem_cache_create+2dd/3b0>
>=20
>    3:   03 7a 56                 add    0x56(%edx),%edi
>=20
> Code;  c01414d0 <kmem_cache_create+2e0/3b0>
>=20
>    6:   26 c0 8b 12 81 fa ec      rorb   $0x67,%es:0xecfa8112(%ebx)
>=20
> Code;  c01414d7 <kmem_cache_create+2e7/3b0>
>=20
>    d:   67=20
>=20
> Code;  c01414d8 <kmem_cache_create+2e8/3b0>
>=20
>    e:   29 c0                    sub    %eax,%eax
>=20
> Code;  c01414da <kmem_cache_create+2ea/3b0>
>=20
>  10:   75 d4                     jne    ffffffe6 <_EIP+0xffffffe6>
>=20
> Code;  c01414dc <kmem_cache_create+2ec/3b0>
>=20
>  12:   89 4b 00                 mov    %ecx,0x0(%ebx)
>=20
> =20
>=20
> It looks to me that the =E2=80=98struct presto_dentry_data=E2=80=99 for
> =E2=80=98/izo0/.intermezzo/config=E2=80=99
>=20
> that had been alloc=E2=80=99ed by the kmem_cache_alloc() never got free=
=E2=80=99d.
>=20
> =20
>=20
> =20
>=20
> =20
>=20
> =20
>=20
> =20
>=20
>=20



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf