[OpenAFS] System still panicing.. no help found yet..

Mitchell Baker Mitchell.D.Baker@rose-hulman.edu
Thu, 14 Mar 2002 14:13:56 -0500


Have not had a chance to install patch yet.. but here is the msgbuf from the
most recent (like 10 min ago) panic.. System was up since yesterday evening,
then 2 panics in about a 20 min period....

0005fbf2bf:    SUNW,hme0 : Internal Transceiver Selected.
30005fbefbf:    SUNW,hme0 :   100 Mbps Full-Duplex Link Up
300053529a2:    pseudo-device: vol0
300053526a3:    vol0 is /pseudo/vol@0
30005352c9f:    Starting AFS cache scan...
30005352f9f:    found 52959 non-empty cache files (35%).
300051b5d23:    kernel memory allocator:
300051a4b63:    buffer freed to wrong cache
300051a5a63:    buffer was allocated from kmem_alloc_16,
300051a5d63:    caller attempting free to kmem_alloc_8.
300051a4263:    buffer=3000ea04240  bufctl=3000ea17380  cache: kmem_alloc_8
300051a4e63:    previous transaction on buffer 3000ea04240:
300053857a3:    thread=30009a449e0  time=T-785.652870942  slab=3000e9b3440 
cach
e: kmem_alloc_16
30005385da3:    kmem_alloc+2c
30005384ba3:    afs_osi_Alloc+90
3000519cd03:    afs_UFSHandleLink+c4
3000519c703:    afs_readlink+190
3000519c103:    gafs_readlink+2c
3000519d003:    pn_getsymlink+40
3000519d603:    lookuppnvp+37c
3000519df03:    lookuppn+128
300053535a3:    lookupname+a4
30005353ba3:    stat32+14
300053523a0:
panic[cpu0]/thread=30009ff4ca0:
300051b1440:    kernel heap corruption detected
300051b18c0:

300051b0fc3:    000002a1009e4ea0 genunix:kmem_error+448 (1042ec00, 30000029000,
3000ea04250, 6, 30000029000, 3000ea04240)
300051b03c3:      %l0-3: 000003000ea04240 000003000ea17380 0000030000029400 
0000
03000e9b3440
   %l4-7: 000003000e7fcac0 0000000000000000 0000000000000000 0000000000000000
30004ee3923:    000002a1009e4f50 afs:afs_osi_Free+8c (3000ea04240, 1, 0, 
7efefef
f, 81010100, ff0000)
30004ee3023:      %l0-3: 00000000006ac5cf 00000000780f1618 00000000000012b0 
0000
0000006ac5d0
   %l4-7: 00000000780faa0c 000003000ea04240 0000000000000000 0000000000000000
30004ee3da3:    000002a1009e5010 afs:afs_FlushVCache+2ec (30007aaf9c8, 
2a1009e51
c8, 800, 0, 30007afdc60, 30007aaf9c8)
30004ee22a3:      %l0-3: 0000000000000000 000003000ea04240 000000002000a150 
0000
030007aafa50
   %l4-7: 0000030007aaf9c8 0000030007aafa40 0000030007aafb50 0000000000000049
300050a5903:    000002a1009e5110 afs:afs_NewVCache+2b8 (2a1009e5470, 0, 3, 
30007
aafa38, 30007aabf38, 30007aaf9c8)
300050a5003:      %l0-3: 0000000000000000 0000000000000401 0000000000000007 
0000
030007aaf9c8
   %l4-7: 0000030007aabf38 0000030007aafa38 000000000000004b 0000000000000008
300050a4703:    000002a1009e5210 afs:afs_GetVCache+218 (2a1009e5470, 
2a1009e5500
, 2a1009e544c, 0, 2, 0)
30004ee1d63:      %l0-3: 0000000000000015 00000000780feabc 00000000000031b6 
0000
00000001700e
   %l4-7: 00000000780fa068 0000000000007fd0 00000000780fe110 0000030007fe3ad8
30004ee1463:    000002a1009e5370 afs:afs_lookup+cf8 (30007b92648, 
2a1009e5750, 2
a1009e5748, 30007fe3ad8, 0, 0)
30004ee0b63:      %l0-3: 000000000000c24e 00000300079799b0 0000000000000000 
0000
030007b92648
   %l4-7: 0000030007fe3b2c 0000030007fe3ad8 0000000000000000 000002a1009e5750
30004ee0263:    000002a1009e5550 afs:gafs_lookup+40 (30007b92648, 
2a1009e5750, 2
a1009e5748, 2a1009e5a10, 0, 300051d7da8)
30004f118c3:      %l0-3: 00000000780fad30 00000000780fad30 0000000000000000 
0000
000000000000
%l4-7: 0000000000000000 0000000000000000 0000030009fea6a0 0000000000000000
30004f10fc3:    000002a1009e5650 genunix:lookuppnvp+2cc (2a1009e5a10, 0, 
1045ea7
8, 1045a908, 0, 3)
30004f106c3:      %l0-3: 00000000780d50e0 000002a1009e5a10 0000000000000000 
0000
0300051d7da8
   %l4-7: 0000030009fea6a0 000002a1009e5ae8 0000030007b92648 0000000000000000
30004f11bc3:    000002a1009e5850 genunix:lookuppn+128 (300051d7da8, 0, 0, 
300051
d7da8, 2a1009e5ae8, 2a1009e5a10)
30004f112c3:      %l0-3: 0000000000000001 0000000000000000 0000000000000001 
0000
000000000000
   %l4-7: 000003000e7fcac0 0000000000000000 0000000000000000 0000000000000000
30004f10e43:    000002a1009e5910 genunix:lookupname+e8 (0, 0, 1, 0, 
2a1009e5ae8,
  fb290)
30004f109c3:      %l0-3: 0000000000000001 0000000000000000 00000000ff000000 
0000
000000ff0000
   %l4-7: 000000000000ff00 0000000081010100 0000000000000000 0000000000000000
30004f10543:    000002a1009e5a30 genunix:stat32+14 (fb290, fa810, 66000000, 
7efe
feff, 81010100, ff00)
30004f100c3:      %l0-3: 00000000000face0 0000000000000000 0000000000000000 
0000
000000000004
   %l4-7: 0000000000000000 0000000000000000 0000000000000000 00000000fefe189c
30005fbeb40:
30005fbe243:    syncing file systems...
30005fbe0c3:     2
30005fbe9c3:     1
30005fbf8c3:     done
30005fbe543:    dumping to /dev/dsk/c0t0d0s1, offset 429588480

Stack trace....
$c
panicsys(10423630,2a1009e4f28,10139e18,78002000,2000,0) + 44
vpanic(10139e18,2a1009e4f28,14,2a1009e4e88,100cf634,30004fc58e6) + cc
panic(10139e18,3000ea04240,10437dc0,3000ea17380,a,3000ea04240) + 1c
kmem_error(1042ec00,30000029000,3000ea04250,6,30000029000,3000ea04240) + 448
afs_osi_Free(3000ea04240,1,0,7efefeff,81010100,ff0000) + 8c
afs_FlushVCache(30007aaf9c8,2a1009e51c8,800,0,30007afdc60,30007aaf9c8) + 2ec
afs_NewVCache(2a1009e5470,0,3,30007aafa38,30007aabf38,30007aaf9c8) + 2b8
afs_GetVCache(2a1009e5470,2a1009e5500,2a1009e544c,0,2,0) + 218
afs_lookup(30007b92648,2a1009e5750,2a1009e5748,30007fe3ad8,0,0) + cf8
gafs_lookup(30007b92648,2a1009e5750,2a1009e5748,2a1009e5a10,0,300051d7da8) + 40
lookuppnvp(2a1009e5a10,0,1045ea78,1045a908,0,3) + 2cc
lookuppn(300051d7da8,0,0,300051d7da8,2a1009e5ae8,2a1009e5a10) + 128
lookupname(0,0,1,0,2a1009e5ae8,fb290) + e8
stat32(fb290,fa810,66000000,7efefeff,81010100,ff00) + 14


At 01:38 PM 3/14/2002 -0500, Nickolai Zeldovich wrote:
> > Here is the stack trace...
>
>Thanks..  Could you try this patch and see if it helps?
>(Note that I've not actually tested it, so you may want
>to first check it on a different machine.)  This should
>be against openafs-1.2.3.
>
>-- kolya
>
>--- src/afs/VNOPS/afs_vnop_symlink.c    2002/01/20 08:20:57     1.4.4.1
>+++ src/afs/VNOPS/afs_vnop_symlink.c    2002/03/14 18:36:36
>@@ -224,7 +224,7 @@
>       struct vrequest *areq;
>    {
>        register struct dcache *tdc;
>-      register char *tp;
>+      register char *tp, *rbuf;
>        afs_int32 offset, len, alen;
>        register afs_int32 code;
>
>@@ -245,10 +245,14 @@
>           }
>           if (avc->m.Mode       & 0111) alen = len+1;   /* regular link */
>           else alen = len;                      /* mt point */
>-          tp = afs_osi_Alloc(alen); /* make room for terminating null */
>+         rbuf = (char *) osi_AllocLargeSpace(AFS_LRALLOCSIZ);
>            addr = afs_MemCacheOpen(tdc->f.inode);
>-          code = afs_MemReadBlk(addr, 0, tp, len);
>-         tp[alen-1] = 0;
>+          code = afs_MemReadBlk(addr, 0, rbuf, len);
>+         rbuf[alen-1] = '\0';
>+         alen = strlen(rbuf) + 1;
>+          tp = afs_osi_Alloc(alen); /* make room for terminating null */
>+         memcpy(tp, rbuf, alen);
>+         osi_FreeLargeSpace(rbuf);
>           afs_PutDCache(tdc);
>           if (code != len) {
>               afs_osi_Free(tp, alen);
>@@ -263,7 +267,7 @@
>      register struct vcache *avc;
>      struct vrequest *areq; {
>      register struct dcache *tdc;
>-    register char *tp;
>+    register char *tp, *rbuf;
>      char *tfile;
>      afs_int32 offset, len, alen;
>      register afs_int32 code;
>@@ -285,11 +289,15 @@
>         tfile = osi_UFSOpen (tdc->f.inode);
>         if (avc->m.Mode & 0111) alen = len+1;   /* regular link */
>         else alen = len;                        /* mt point */
>-       tp = afs_osi_Alloc(alen);                       /* make room for 
>terminating null */
>-       code = afs_osi_Read(tfile, -1, tp, len);
>-       tp[alen-1] = 0;
>+       rbuf = (char *) osi_AllocLargeSpace(AFS_LRALLOCSIZ);
>+       code = afs_osi_Read(tfile, -1, rbuf, len);
>+       rbuf[alen-1] = '\0';
>         osi_UFSClose(tfile);
>         afs_PutDCache(tdc);
>+       alen = strlen(rbuf) + 1;
>+       tp = afs_osi_Alloc(alen);       /* make room for terminating null */
>+       memcpy(tp, rbuf, alen);
>+       osi_FreeLargeSpace(rbuf);
>         if (code != len) {
>             afs_osi_Free(tp, alen);
>             return EIO;

/####################################################################/
/# Mitchell "Buzz" Baker                "To Infinity And Beyond..." #/
/# Sr. Systems/Security Admin   Rose-Hulman Institute of Technology #/
/# Mitchell.D.Baker@rose-hulman.edu             www.rose-hulman.edu #/
/#         For PGP Public key, check out www.keyserver.net          #/
/####################################################################/