Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Aug 2002 08:47:22 +0700
From:      "Evgueni V. Gavrilov" <admin@rshb.com.ru>
To:        freebsd-fs@freebsd.org
Subject:   [Fwd: Further investigation with panic: softdep_lock: locking against myself]
Message-ID:  <3D6C2BAA.50009@rshb.com.ru>

next in thread | raw e-mail | index | archive | help
hi guys

I forgot to put fs maillist to cc. Sorry.
I sent PR also (http://www.freebsd.org/cgi/query-pr.cgi?pr=42064).

-------- Original Message --------
Date: Tue, 27 Aug 2002 20:41:15 +0700
From: "Evgueni V. Gavrilov" <admin@rshb.com.ru>
To: freebsd-stable@freebsd.org

hi

As I wrote before - several kernel panics per day achieved with
softupdates code.
I totally replaced hardware on that box but troubles remain.

Any suggestions ?

$ gdb -k kernel.debug 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"...
IdlePTD at phsyical address 0x00335000
initial pcb at physical address 0x002a8420
panicstr: softdep_lock: locking against myself
panic messages:
---
Fatal trap 12: page fault while in kernel mode
fault virtual address   = 0xffff000a
fault code              = supervisor read, page not present
instruction pointer     = 0x8:0xc01f9b5c
stack pointer           = 0x10:0xcd10cd10
frame pointer           = 0x10:0xcd10cd10
code segment            = base 0x0, limit 0xfffff, type 0x1b
                         = DPL 0, pres 1, def32 1, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 5 (syncer)
interrupt mask          = bio
trap number             = 12
panic: page fault

syncing disks... panic: softdep_lock: locking against myself
Uptime: 36m49s

dumping to dev #ad/0x20001, offset 128
dump ata0: resetting devices .. done
255 254 253 252 251 250 249 248 247 246 245 244 243 242 241 240 239 238
237 236
235 234 233 232 231 230 229 228 227 226 225 224 223 222 221 220 219 218
217 216
215 214 213 212 211 210 209 208 207 206 205 204 203 202 201 200 199 198
197 196
195 194 193 192 191 190 189 188 187 186 185 184 183 182 181 180 179 178
177 176
175 174 173 172 171 170 169 168 167 166 165 164 163 162 161 160 159 158
157 156
155 154 153 152 151 150 149 148 147 146 145 144 143 142 141 140 139 138
137 136
135 134 133 132 131 130 129 128 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 9
4 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 1
4 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) where
#0  dumpsys () at /usr/src/sys/kern/kern_shutdown.c:487
#1  0xc0158ba3 in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:316
#2  0xc0158fc8 in poweroff_wait (junk=0xc02711c0, howto=0)
     at /usr/src/sys/kern/kern_shutdown.c:595
#3  0xc01f988e in acquire_lock (lk=0xc0296c1c)
     at /usr/src/sys/ufs/ffs/ffs_softdep.c:261
#4  0xc01fdeca in softdep_fsync_mountdev (vp=0xcd0ff900)
     at /usr/src/sys/ufs/ffs/ffs_softdep.c:4024
#5  0xc02020fa in ffs_fsync (ap=0xcd10cbb0)
     at /usr/src/sys/ufs/ffs/ffs_vnops.c:134
#6  0xc0200d8b in ffs_sync (mp=0xc1278600, waitfor=2, cred=0xc0a3c600,
     p=0xc02bcee0) at vnode_if.h:558
#7  0xc0189267 in sync (p=0xc02bcee0, uap=0x0)
     at /usr/src/sys/kern/vfs_syscalls.c:576
#8  0xc0158916 in boot (howto=256) at /usr/src/sys/kern/kern_shutdown.c:235
#9  0xc0158fc8 in poweroff_wait (junk=0xc027b2cc, howto=-1071141393)
     at /usr/src/sys/kern/kern_shutdown.c:595
#10 0xc0243112 in trap_fatal (frame=0xcd10ccd0, eva=4294901770)
     at /usr/src/sys/i386/i386/trap.c:974
#11 0xc0242de5 in trap_pfault (frame=0xcd10ccd0, usermode=0, eva=4294901770)
     at /usr/src/sys/i386/i386/trap.c:867
#12 0xc02429a3 in trap (frame={tf_fs = 16, tf_es = 16, tf_ds = 16,
tf_edi = 0,
       tf_esi = -1052660736, tf_ebp = -854536944, tf_isp = -854536964,
       tf_ebx = -65536, tf_edx = -1052064512, tf_ecx = -65536,
       tf_eax = -1052064512, tf_trapno = 12, tf_err = 0, tf_eip =
-1071670436,
       tf_cs = 8, tf_eflags = 66071, tf_esp = -854536912, tf_ss =
-1071654306})
     at /usr/src/sys/i386/i386/trap.c:466
#13 0xc01f9b5c in worklist_remove (item=0xffff0000)
     at /usr/src/sys/ufs/ffs/ffs_softdep.c:467
#14 0xc01fda5e in softdep_update_inodeblock (ip=0xc141ac00, bp=0xc65340b0,
     waitfor=0) at /usr/src/sys/ufs/ffs/ffs_softdep.c:3847
#15 0xc01f89dd in ffs_update (vp=0xcdb05840, waitfor=0)
     at /usr/src/sys/ufs/ffs/ffs_inode.c:106
#16 0xc01f8cc1 in ffs_truncate (vp=0xcdb05840, length=0, flags=0, cred=0x0,
     p=0xcc02b780) at /usr/src/sys/ufs/ffs/ffs_inode.c:201
#17 0xc02030d8 in ufs_inactive (ap=0xcd10ced8)
     at /usr/src/sys/ufs/ufs/ufs_inode.c:89
#18 0xc02085d1 in ufs_vnoperate (ap=0xcd10ced8)
     at /usr/src/sys/ufs/ufs/ufs_vnops.c:2422
#19 0xc01873b8 in vput (vp=0xcdb05840) at vnode_if.h:815
#20 0xc01fc864 in handle_workitem_remove (dirrem=0xc0a351c0)
     at /usr/src/sys/ufs/ffs/ffs_softdep.c:2852
#21 0xc01f9edd in process_worklist_item (matchmnt=0x0, flags=0)
     at /usr/src/sys/ufs/ffs/ffs_softdep.c:716
#22 0xc01f9d82 in softdep_process_worklist (matchmnt=0x0)
     at /usr/src/sys/ufs/ffs/ffs_softdep.c:622
#23 0xc0186cdf in sched_sync () at /usr/src/sys/kern/vfs_subr.c:1177
(kgdb) up 13
#13 0xc01f9b5c in worklist_remove (item=0xffff0000)
     at /usr/src/sys/ufs/ffs/ffs_softdep.c:467
467                     panic("worklist_remove: lock not held");
(kgdb) l
462     worklist_remove(item)
463             struct worklist *item;
464     {
465
466             if (lk.lkt_held == -1)
467                     panic("worklist_remove: lock not held");
468             if ((item->wk_state & ONWORKLIST) == 0) {
469                     FREE_LOCK(&lk);
470                     panic("worklist_remove: not on list");
471             }
(kgdb) p item
$1 = (struct worklist *) 0x0
(kgdb) p lk.lkt_held
$2 = -1
(kgdb) up
#14 0xc01fda5e in softdep_update_inodeblock (ip=0xc141ac00, bp=0xc65340b0,
     waitfor=0) at /usr/src/sys/ufs/ffs/ffs_softdep.c:3847
3847                    WORKLIST_REMOVE(wk);
(kgdb) list
3842             * operations dependent on the inode being written to disk
3843             * can be moved to the id_bufwait so that they will be
3844             * processed when the buffer I/O completes.
3845             */
3846            while ((wk = LIST_FIRST(&inodedep->id_inowait)) != NULL) {
3847                    WORKLIST_REMOVE(wk);
3848                    WORKLIST_INSERT(&inodedep->id_bufwait, wk);
3849            }
3850            /*
3851             * Newly allocated inodes cannot be written until the bitmap
(kgdb) p wk
$3 = (struct worklist *) 0x68c040
(kgdb) p wk->wk_list
Cannot access memory at address 0x68c040.
(kgdb) p wk->wk_state
Cannot access memory at address 0x68c04a.



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



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




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