Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 4 Jan 2003 09:56:40 -0800
From:      steve@Watt.COM (Steve Watt)
To:        stable@freebsd.org
Subject:   crash in softdeps code
Message-ID:  <200301041756.h04HufhW003847@wattres.Watt.COM>

next in thread | raw e-mail | index | archive | help
I had an ugly crash last night, during the heavy disk load time for my
box (all the cron jobs conflate right about 3am).

Based on my quick glance, it seems that something ate the fs structure,
or maybe the pointer is bad.  The disk in question is

  ad0: 73308MB <IBM-DTLA-307075> [148945/16/63] at ata0-master UDMA33

The system was last brought up to -STABLE about 1300 PST 21 Dec 2002, and
had been up ever since.  Uname says:

  FreeBSD wattres.Watt.COM 4.7-STABLE FreeBSD 4.7-STABLE #13: Sat Dec 21 19:44:11 PST 2002     root@wattres.Watt.COM:/usr/obj/usr/src/sys/WATTRES  i386

Here's what I found from a quick grope with gdb.  Core is available, just
ask.

Script started on Sat Jan  4 09:32:33 2003
steve has logged on ttyv1 from local.
wattres.Watt.COM:/usr/obj/usr/src/sys/WATTRES
(root@wattres) 1# gdb -k kernel.debug /var/crash/vmcore.2
GNU gdb 4.18 (FreeBSD)
Copyright 1998 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-unknown-freebsd"...Deprecated bfd_read called at /usr/src/gnu/usr.bin/binutils/gdb/../../../../contrib/gdb/gdb/dbxread.c line 2627 in elfstab_build_psymtabs
Deprecated bfd_read called at /usr/src/gnu/usr.bin/binutils/gdb/../../../../contrib/gdb/gdb/dbxread.c line 933 in fill_symbuf

IdlePTD at phsyical address 0x00498000
initial pcb at physical address 0x003e52c0
panicstr: ffs_blkfree: bad size
panic messages:
---
panic: ffs_blkfree: bad size

syncing disks... 6 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
giving up on 2 buffers
Uptime: 13d6h33m56s

dumping to dev #da/1, offset 282200
dump 127 126 125 124 123 122 121 120 119 118 117 116 115 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 
---
#0  dumpsys () at /usr/src/sys/kern/kern_shutdown.c:487
487		if (dumping++) {
(kgdb) info sta
#0  dumpsys () at /usr/src/sys/kern/kern_shutdown.c:487
#1  0xc01f1bf0 in boot (howto=256) at /usr/src/sys/kern/kern_shutdown.c:316
#2  0xc01f2024 in poweroff_wait (junk=0xc0372c35, howto=-1070126080)
    at /usr/src/sys/kern/kern_shutdown.c:595
#3  0xc02b5e11 in ffs_blkfree (ip=0xc8a35e0c, bno=-1459815749, size=8192)
    at /usr/src/sys/ufs/ffs/ffs_alloc.c:1415
#4  0xc02ba9b6 in indir_trunc (ip=0xc8a35e0c, dbn=9832624, level=0, lbn=10252, 
    countp=0xc8a35dfc) at /usr/src/sys/ufs/ffs/ffs_softdep.c:2233
#5  0xc02ba99c in indir_trunc (ip=0xc8a35e0c, dbn=9963600, level=1, lbn=2060, 
    countp=0xc8a35dfc) at /usr/src/sys/ufs/ffs/ffs_softdep.c:2229
#6  0xc02ba756 in handle_workitem_freeblocks (freeblks=0xc1753780)
    at /usr/src/sys/ufs/ffs/ffs_softdep.c:2133
#7  0xc02b8bf6 in process_worklist_item (matchmnt=0x0, flags=0)
    at /usr/src/sys/ufs/ffs/ffs_softdep.c:723
#8  0xc02b8a82 in softdep_process_worklist (matchmnt=0x0)
    at /usr/src/sys/ufs/ffs/ffs_softdep.c:622
#9  0xc022030b in sched_sync () at /usr/src/sys/kern/vfs_subr.c:1177
(kgdb) up
#1  0xc01f1bf0 in boot (howto=256) at /usr/src/sys/kern/kern_shutdown.c:316
316			dumpsys();
(kgdb) up
#2  0xc01f2024 in poweroff_wait (junk=0xc0372c35, howto=-1070126080)
    at /usr/src/sys/kern/kern_shutdown.c:595
595		boot(bootopt);
(kgdb) up
#3  0xc02b5e11 in ffs_blkfree (ip=0xc8a35e0c, bno=-1459815749, size=8192)
    at /usr/src/sys/ufs/ffs/ffs_alloc.c:1415
1415			panic("ffs_blkfree: bad size");
(kgdb) list
1410		if ((u_int)size > fs->fs_bsize || fragoff(fs, size) != 0 ||
1411		    fragnum(fs, bno) + numfrags(fs, size) > fs->fs_frag) {
1412			printf("dev=%s, bno = %ld, bsize = %ld, size = %ld, fs = %s\n",
1413			    devtoname(ip->i_dev), (long)bno, (long)fs->fs_bsize, size,
1414			    fs->fs_fsmnt);
1415			panic("ffs_blkfree: bad size");
1416		}
1417		cg = dtog(fs, bno);
1418		if ((u_int)bno >= fs->fs_size) {
1419			printf("bad block %ld, ino %lu\n",
(kgdb) print ip->i_dev
$1 = 0xc1015d80
(kgdb) print bno
$2 = -1459815749
(kgdb) print *fs
$5 = {fs_firstfield = 1601398374, fs_unused_1 = 1718316130, 
  fs_sblkno = 979723634, fs_cblkno = 1684103712, fs_iblkno = 2053731104, 
  fs_dblkno = 1633812581, fs_cgoffset = 1818370148, fs_cgmask = 543908719, 
  fs_time = 744778789, fs_size = 1869506848, fs_dsize = 1970021664, 
  fs_ncg = 1633812490, fs_bsize = 1818370148, fs_fsize = 7037807, fs_frag = 0, 
  fs_minfree = 0, fs_rotdelay = 0, fs_rps = 0, fs_bmask = 1677721600, 
  fs_fmask = 1025537637, fs_bshift = 745743648, fs_fshift = 1869373984, 
  fs_maxcontig = 1025534819, fs_maxbpg = 1684808992, 
  fs_fragshift = 1936072748, fs_fsbtodb = 622869792, fs_sbsize = 1711278707, 
  fs_csmask = 1650422630, fs_csshift = 1919314796, fs_nindir = 540697957, 
  fs_inopb = 1701147238, fs_nspf = 543649385, fs_optim = 1701147238, 
  fs_npsect = 1869373984, fs_interleave = 1711303523, 
  fs_trackskew = 1650422630, fs_id = {1919314796, 540697957}, 
  fs_csaddr = 1701147238, fs_cssize = 543649385, fs_cgsize = 1701147238, 
  fs_ntrak = 1634887200, fs_nsect = 1711276135, fs_spc = 1985966950, 
  fs_ncyl = 1701147238, fs_cpg = 1634869306, fs_ipg = 979724142, 
  fs_fpg = 1986356256, fs_cstotal = {cs_ndir = 673201440, 
    cs_nbfree = 623666213, cs_nifree = 539765092, cs_nffree = 544173673}, 
  fs_fmod = 61 '=', fs_clean = 32 ' ', fs_ronly = 37 '%', fs_flags = 100 'd', 
  fs_fsmnt = ", fs = %s\000dev = %s, ino = %lu, fs = %s\n\000ffs_vfree: freeing free inode", '\000' <repeats 18 times>, "start = %d, len = %d, fs = %s\n\000ffs_alloccg: map corrupted\000bno = %lu, fs = %s\n\000ffs_alloccg: block not in map\000-", '\000' <repeats 19 times>, "pi"..., fs_cgrotor = -872415125, fs_ocsp = {
    0xdcc03b97, 0x62c03b97, 0x6661736d, 0x70616d65, 0x2c000000, 0x3cc03b98, 
---Type <return> to continue, or q <return> to quit---  
    0x61c03b98, 0x636f6c6c, 0x65726964, 0x8c007463, 0x9cc03b98, 0x69c03b98, 
    0x7269646e, 0x706564, 0xec000000, 0xfcc03b98, 0x61c03b98, 0x636f6c6c, 
    0x69646e69, 0x4c000072, 0x5cc03b99, 0x66c03b99, 0x66656572, 0x676172, 
    0xac000000, 0xbcc03b99, 0x66c03b99, 0x62656572, 0x736b6c}, 
  fs_contigdirs = 0xc000000 <Address 0xc000000 out of bounds>, 
  fs_csp = 0x1cc03b9a, fs_maxcluster = 0x66c03b9a, fs_cpc = 1717921138, 
  fs_opostbl = {{27753, 101, 0, 27648, 15258, 31936, 15258, 25792}, {29289, 
      25697, 100, -13312, 15258, -9024, 15258, 28096}, {25707, 29289, 0, 
      11264, 15259, 15552, 15259, 25792}, {29289, 25970, 109, -29696, 15259, 
      -25408, 15259, 192}, {0, 0, 0, 0, 0, 0, 0, 29440}, {26223, 25716, 28773, 
      27743, 25455, 14955, 27680, 25455}, {26987, 26478, 24864, 24935, 28265, 
      29811, 27936, 29561}, {27749, 102, 28531, 29798, 25956, 24432, 28524, 
      27491}, {8250, 28524, 27491, 26656, 27749, 8292, 31074, 9504}, {100, 
      28531, 29798, 25956, 24432, 28277, 28524, 27491}, {8250, 28524, 27491, 
      28192, 29807, 26656, 27749, 100}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 
      0, 0, 0, 26880}, {29806, 29285, 28524, 27491, 25701, 29535, 25964, 
      28773}, {8250, 28524, 27491, 28192, 29807, 26656, 27749, 100}, {0, 0, 0, 
      0, 0, 0, 0, 0}}, fs_snapinum = {0, 0, 0, 1761607680, 1919251566, 
    1801678700, 1935631461, 1885693292, 1853169722, 2003791467, 1886330990, 
    1952543333, 7237481, 0, 0, 0, 0, 0, 0, 1761607680}, 
  fs_avgfilesize = 1919251566, fs_avgfpdir = 1801678700, fs_sparecon = {
    1935631461, 1885693292, 1869357114, 1852402531, 1734418535, 1936615777, 
    1702043764, 26220, 0, 0, 0, 0, 0, 1761607680, 1919251566, 1801678700, 
    1935631461, 1885693292, 1869357114, 1746955107, 543452261, 622885218, 
---Type <return> to continue, or q <return> to quit---
    1702035556, 1918853485, 1634036837, 540697971}, 
  fs_pendingblocks = 544501614, fs_pendinginodes = 1684825448, 
  fs_contigsumsize = 0, fs_maxsymlinklen = 1996488704, 
  fs_inodefmt = 1818980975, fs_maxfilesize = 7310308019004535657, 
  fs_qbmask = 7738151094940497010, fs_qfmask = 7810763617345695264, 
  fs_state = 1996488804, fs_postblformat = 1818980975, fs_nrpos = 1601467241, 
  fs_postbloff = 1702063721, fs_rotbloff = 540701810, fs_magic = 1701997665, 
  fs_space = "a"}
(kgdb) up
#4  0xc02ba9b6 in indir_trunc (ip=0xc8a35e0c, dbn=9832624, level=0, lbn=10252, 
    countp=0xc8a35dfc) at /usr/src/sys/ufs/ffs/ffs_softdep.c:2233
2233			ffs_blkfree(ip, nb, fs->fs_bsize);
(kgdb) list
2228			if (level != 0) {
2229				if ((error = indir_trunc(ip, fsbtodb(fs, nb),
2230				     level - 1, lbn + (i * lbnadd), countp)) != 0)
2231					allerror = error;
2232			}
2233			ffs_blkfree(ip, nb, fs->fs_bsize);
2234			*countp += nblocks;
2235		}
2236		bp->b_flags |= B_INVAL | B_NOCACHE;
2237		brelse(bp);
(kgdb) q

wattres.Watt.COM:/usr/obj/usr/src/sys/WATTRES
(root@wattres) 3# ps -N /var/crash/kernel.2 -M /var/crash/vmcore.2 -axlww
  UID   PID  PPID CPU PRI NI   VSZ  RSS WCHAN  STAT  TT       TIME COMMAND
    0   268     1   0   2  0  2932    0 sbwait I    #C6-   0:00.03  (rmserver)
    0   317     1   1  10  0  1260    0 wait   Is   #C6    0:00.04  (login)
    0   328   317   0   3  0  1336    0 ttyin  I+   #C6    0:00.05  (csh)
  200   372   366   0  18  0  1328    0 pause  Is   #C6    0:00.08  (tcsh)
    0  1095   372   1   3  0  1388    0 ttyin  I+   #C6    0:00.67  (tcsh)
    0   324     1   1   3  0   960    0 ttyin  Is+  #C7    0:00.01  (getty)
    0   323     1   1   3  0   960    0 ttyin  Is+  #C7    0:00.01  (getty)
    0   322     1   0   3  0   960    0 ttyin  Is+  #C7    0:00.01  (getty)
    0   321     1   0   3  0   960    0 ttyin  Is+  #C7    0:00.01  (getty)
    0   320     1   0   3  0   960    0 ttyin  Is+  #C7    0:00.01  (getty)
    0   319     1   0   3  0   960    0 ttyin  Is+  #C7    0:00.01  (getty)
    0   318     1   0  10  0  1260    0 wait   Is   #C7    0:00.03  (login)
  200   334   318   0   3  0  1336    0 ttyin  I+   #C7    0:00.09  (tcsh)
  200   357     1   0   2  0  4812    0 select I    #C7    4:42.66  (Xvnc)
    0   363     1   0   2  0  3232    0 select I    #C7    0:00.08  (xterm)
    0   364     1   0   2  0  3280    0 select I    #C7    0:05.64  (xterm)
    0   365     1   0   2  0  3280    0 select I    #C7    0:20.97  (xterm)
    0   366     1   0   2  0  3360    0 select I    #C7    0:08.34  (xterm)
    0   367     1   0   2  0  3288    0 select I    #C7    0:06.43  (xterm)
  200   368     1   0   2  0  2504    0 select I    #C7    0:00.90  (twm)
  200 19799 19798   0   3  0  1316    0 ttyin  Is+  #C1    0:00.08  (tcsh)
  200   370   363  88   3  0  1332    0 ttyin  Is+  #C1    0:00.06  (tcsh)
  200   371   364   0  18  0  1316    0 pause  Is   #C1    0:00.05  (tcsh)
  200  5096   371   0   2  0  2140    0 select I+   #C1    0:04.66  (ssh)
  200   377   365   0   3  0  1352    0 ttyin  Is+  #C1    0:00.59  (tcsh)
  200   369   367   0   3  0  1380    0 ttyin  Is+  #C1    0:00.76  (tcsh)
    0     0     0   0 -18  0     0    0 sched  DLs   ??    0:00.00  (swapper)
    0     1     0   0  10  0   548    0 wait   ILs   ??    0:00.78  (init)
    0     2     0   0 -18  0     0    0 -      RL    ??    6:28.28  (pagedaemon)
    0     3     0   0  18  0     0    0 psleep DL    ??    0:00.00  (vmdaemon)
    0     4     0   0 -18  0     0    0 -      RL    ??    2:06.29  (bufdaemon)
    0     5     0 264  -6  0     0    0 -      RL    ??   18:46.12  (syncer)
    0     6     0   0  -2  0     0    0 -      RL    ??    0:04.62  (vnlru)
    0   104     1   0   2  0   956    0 -      Rs    ??    0:24.84  (syslogd)
    0   108     1   0   2  0  3616    0 select Is    ??    3:17.89  (named)
    0   110     1   0   2  0  1320    0 -      Rs    ??    1:25.01  (ntpd)
    0   118     1   0   2  0  1176    0 select Is    ??    0:00.57  (inetd)
    0   120     1   0  10  0  1000    0 -      Rs    ??    0:23.70  (cron)
    0   123     1   0   2  0   972    0 select Is    ??    0:00.02  (lpd)
    0   125     1   9   2  0  2360    0 select Is    ??    0:11.33  (sshd)
    0   197     1   5   2  0  1008    0 accept I     ??    0:03.06  (netacl)
   66   199     1   0  10  0  1012    0 -      Rs    ??    0:14.80  (smapd)
    8   201     1   0   2  0  1376    0 accept I     ??    0:01.42  (nntpd)
    0   218     1   0   2  0  8932    0 -      Rs    ??    0:35.06  (httpd)
   66   222     1 115   2  0  2176    0 select Is    ??    0:00.02  (hfaxd)
   80   229   218   0   2  0  9176    0 accept I     ??    0:01.43  (httpd)
   80   230   218   0   2  0  9200    0 accept I     ??    0:01.74  (httpd)
   80   231   218   0   2  0  9020    0 accept I     ??    0:01.38  (httpd)
   80   232   218   0   2  0  9188    0 accept I     ??    0:01.65  (httpd)
   80   233   218   0   2  0  9188    0 accept I     ??    0:01.49  (httpd)
   66   235     1   0   2  0  2212    0 select Is    ??    0:00.01  (faxq)
    0   241     1   0   2  0  1084    0 select Is    ??    0:00.29  (dhcpd)
    0   265     1   0   2  0  2316    0 -      Rs    ??    2:11.69  (racoon)
    0   272   268   0   2  0 1062308    0 select Is    ??    0:00.59  (rmserver)
    0   273   268   0  10  0  2932    0 nanslp Is    ??    0:14.39  (rmserver)
    0   274   272   0  10  0 1051508    0 -      R     ??   58:45.65  (rmserver)
    0   284     1   1   2  0  2736    0 select Is    ??    0:05.90  (smbd)
    0   286     1   0   2  0  1920    0 -      Rs    ??    0:37.31  (nmbd)
    0   288   286   0  -6  0  1892    0 piperd I     ??    0:00.10  (nmbd)
    0   291   272   0   2  0 1051516    0 -      R     ??    3:02.16  (rmserver)
    0   292   272   0   2  0 1062308    0 select I     ??    0:00.01  (rmserver)
    0   293   272   0   2  0 1062308    0 select I     ??    0:00.01  (rmserver)
    0   294   272   0   2  0 1062308    0 select I     ??    0:00.02  (rmserver)
    0   295   272   0   2  0 1062308    0 select I     ??    0:00.00  (rmserver)
    0   296   272   0   2  0 1062308    0 select I     ??    0:00.00  (rmserver)
    0   297   272   0   2  0 1062308    0 select I     ??    0:00.01  (rmserver)
    0   298   272   0   2  0 1062308    0 select I     ??    0:00.01  (rmserver)
    0   299   272   0   2  0 1062308    0 select I     ??    0:00.02  (rmserver)
    0   300   272   0   2  0 1062316    0 select I     ??    0:00.14  (rmserver)
    0   301   272   0   2  0 1062308    0 select I     ??    0:00.01  (rmserver)
    0   302   272   0   2  0 1062308    0 select I     ??    0:00.00  (rmserver)
    0   303   272   0   2  0 1062308    0 select I     ??    0:00.01  (rmserver)
    0   304   272   0   2  0 1062308    0 select I     ??    0:00.02  (rmserver)
    0   305   272   0   2  0 1062308    0 select I     ??    0:00.00  (rmserver)
    0   306   272   0   2  0 1062308    0 select I     ??    0:00.07  (rmserver)
    0   307   272   0   2  0 1062308    0 select I     ??    0:00.01  (rmserver)
    0   308   272   0   2  0 1062308    0 select I     ??    0:00.00  (rmserver)
    0   309   272   0   2  0 1062436    0 -      R     ??    0:48.43  (rmserver)
    0   313     1   0  18  0  2832    0 pause  Is    ??    0:01.03  (sendmail)
    0   326     1   0   3  0   956    0 siodcd I     ??    0:00.01  (getty)
   66   327     1   0   2  0  2332    0 select I     ??    0:00.03  (faxgetty)
    0  5015     1   0   2  0  1972    0 select Is    ??    0:00.01  (mpd)
   80  8857   218   0   2  0  9024    0 accept I     ??    0:01.32  (httpd)
   80  9818   218   0   2  0  9168    0 accept I     ??    0:01.40  (httpd)
   80 11054   218   0   2  0  9180    0 accept I     ??    0:01.35  (httpd)
    0 19798   125   0   2  0  2472    0 select I     ??    0:01.34  (sshd)
    0 25507   118   0   2  0  2860    0 -      Rs    ??    1:41.31  (ppp)
   80 34640   218   0   2  0  9192    0 accept I     ??    0:01.74  (httpd)
   80 34641   218   0   2  0  9192    0 accept I     ??    0:01.45  (httpd)
    0 38922     1   0   3  0   956    0 siodcd I     ??    0:00.01  (getty)
  204 66059   118   0   2  0  3492    0 select Is    ??    0:18.65  (imapd)
    8 77775   201   0   2  0  1480    0 -      R     ??    0:00.36  (nntpd)
    8 78969   201   0   2  0  1480    0 -      R     ??    0:00.68  (nntpd)
    8 80465   201   0   2  0  1480    0 -      R     ??    0:01.48  (nntpd)
    0 81206   120   0  -6  0  1032    0 piperd I     ??    0:00.00  (cron)
  200 81210 81206   0  10  0   632    0 wait   Is    ??    0:00.00  (sh)
  200 81213 81210   0  28  0  7736    0 -      R     ??   92:39.61  (glimpseindex)
    0 81231 81206   0  -6  0  2832    0 piperd Is    ??    0:00.06  (sendmail)
  200 86099   118   0   2  0  3152    0 select Is    ??    0:06.80  (imapd)
    8 98329   201   0   2  0  1480    0 -      R     ??    0:00.81  (nntpd)

wattres.Watt.COM:/usr/obj/usr/src/sys/WATTRES
(root@wattres) 4# exit

Script done on Sat Jan  4 09:37:08 2003

-- 
Steve Watt KD6GGD  PP-ASEL-IA          ICBM: 121W 56' 57.8" / 37N 20' 14.9"
 Internet: steve @ Watt.COM                         Whois: SW32
   Free time?  There's no such thing.  It just comes in varying prices...

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200301041756.h04HufhW003847>