locking problems with pipes ?

From: Poul-Henning Kamp <phk_at_phk.freebsd.dk>
Date: Mon, 04 Aug 2003 23:43:19 +0200
I'm beating my machine to pulp with 48M physmem and "make -j 21 buildworld"
on a 500MB swap backed md(4) /usr/obj.

(I'm testing the swap_pager in case you wondered)

This also provokes many other interesting things, for instance:

Sleeping on "objtrm" with the following non-sleepable locks held:
exclusive sleep mutex system map r = 0 (0xc082f060) locked _at_ vm/vm_map.c:2228
Debugger("witness_warn")
Stopped at      0xc032cab4 = Debugger+0x54:     xchgl   %ebx,0xc0432164 = in_Debugger.0
db> trace
Debugger(c0360e38,c5607a1c,1,c03e0db8,c0834de0) at 0xc032cab4 = Debugger+0x54
witness_warn(5,c0834de0,c03858f3,c0394674,1) at 0xc0224d9f = witness_warn+0x19f
msleep(c0834de0,c0834de0,44,c0394674,0) at 0xc0205c5f = msleep+0x6f
vm_object_pip_wait(c0834de0,c0394674,c03944f1,228,c55ce000) at 0xc02f5c5b = vm_object_pip_wait+0x6b
vm_object_terminate(c0834de0,0,c03944f1,1b2,c4895348) at 0xc02f631b = vm_object_terminate+0x4b
vm_object_deallocate(c0834de0,c4895000,c0834de0,c4895000,c5607b3c) at 0xc02f6271 = vm_object_deallocate+0x371
vm_map_entry_delete(c082f000,c4895000,c0393c2e,897,c01f4caa) at 0xc02f23db = vm_map_entry_delete+0x3b
vm_map_delete(c082f000,c55ce000,c55cf000,c174e0b0,c174e0b0) at 0xc02f27e0 = vm_map_delete+0x3e0
vm_map_remove(c082f000,c55ce000,c55cf000,c5607b90,c022aeb9) at 0xc02f2858 = vm_map_remove+0x58
kmem_free(c082f000,c55ce000,1000,57b,c174e0b0) at 0xc02eebe2 = kmem_free+0x32
pipe_free_kmem(c174e0b0,0,c0388742,5d2,0) at 0xc022aeb9 = pipe_free_kmem+0xa9
pipeclose(c174e0b0,c16653fc,c5607c2c,c01e1d29,c16653fc) at 0xc022b17c = pipeclose+0x25c
pipe_close(c16653fc,c13a4390,c03827c2,7cc,0) at 0xc022ae03 = pipe_close+0x33
fdrop_locked(c16653fc,c13a4390,c03827c2,710,c1900000) at 0xc01e1d29 = fdrop_locked+0x149
fdrop(c16653fc,c13a4390,c5607c8c,246,c03827c2,0,c5607c84,c0225b71,c03e1088,246,c03af60c,60b,c1900034,35d,c03827c2,c5607cb4,c01f4d60,c1900034,1,c038464a,167,c03af60c) at 0xc01e0d3e = fdrop+0x3e
closef(c16653fc,c13a4390,c03827c2,35d,0) at 0xc01e0cec = closef+0x22c
close(c13a4390,c5607d10,c03993f3,3ee,1) at 0xc01deea8 = close+0x168
syscall(2f,2f,2f,80bbeb8,0) at 0xc033ed23 = syscall+0x273
Xint0x80_syscall() at 0xc032e23d = Xint0x80_syscall+0x1d
--- syscall (6, FreeBSD ELF32, close), eip = 0x80b2edb, esp = 0xbfbff69c, ebp = 0xbfbff6a8 ---
db> cont
lock order reversal
 1st 0xc082f060 system map (system map) _at_ vm/vm_map.c:2228
 2nd 0xc03db9e0 Giant (Giant) _at_ kern/kern_synch.c:309
Stack backtrace:
backtrace(c0388038,c03db9e0,c03849c0,c03849c0,c0385926) at 0xc01feae7 = backtrace+0x17
witness_lock(c03db9e0,8,c0385926,135,c038464a) at 0xc0224602 = witness_lock+0x672
_mtx_lock_flags(c03db9e0,0,c038591d,135,3) at 0xc01f4caa = _mtx_lock_flags+0xba
msleep(c0834de0,c0834de0,44,c0394674,0) at 0xc02062e4 = msleep+0x6f4
vm_object_pip_wait(c0834de0,c0394674,c03944f1,228,c55ce000) at 0xc02f5c5b = vm_object_pip_wait+0x6b
vm_object_terminate(c0834de0,0,c03944f1,1b2,c4895348) at 0xc02f631b = vm_object_terminate+0x4b
vm_object_deallocate(c0834de0,c4895000,c0834de0,c4895000,c5607b3c) at 0xc02f6271 = vm_object_deallocate+0x371
vm_map_entry_delete(c082f000,c4895000,c0393c2e,897,c01f4caa) at 0xc02f23db = vm_map_entry_delete+0x3b
vm_map_delete(c082f000,c55ce000,c55cf000,c174e0b0,c174e0b0) at 0xc02f27e0 = vm_map_delete+0x3e0
vm_map_remove(c082f000,c55ce000,c55cf000,c5607b90,c022aeb9) at 0xc02f2858 = vm_map_remove+0x58
kmem_free(c082f000,c55ce000,1000,57b,c174e0b0) at 0xc02eebe2 = kmem_free+0x32
pipe_free_kmem(c174e0b0,0,c0388742,5d2,0) at 0xc022aeb9 = pipe_free_kmem+0xa9
pipeclose(c174e0b0,c16653fc,c5607c2c,c01e1d29,c16653fc) at 0xc022b17c = pipeclose+0x25c
pipe_close(c16653fc,c13a4390,c03827c2,7cc,0) at 0xc022ae03 = pipe_close+0x33
fdrop_locked(c16653fc,c13a4390,c03827c2,710,c1900000) at 0xc01e1d29 = fdrop_locked+0x149
fdrop(c16653fc,c13a4390,c5607c8c,246,c03827c2,0,c5607c84,c0225b71,c03e1088,246,c03af60c,60b,c1900034,35d,c03827c2,c5607cb4,c01f4d60,c1900034,1,c038464a,167,c03af60c) at 0xc01e0d3e = fdrop+0x3e
closef(c16653fc,c13a4390,c03827c2,35d,0) at 0xc01e0cec = closef+0x22c
close(c13a4390,c5607d10,c03993f3,3ee,1) at 0xc01deea8 = close+0x168
syscall(2f,2f,2f,80bbeb8,0) at 0xc033ed23 = syscall+0x273
Xint0x80_syscall() at 0xc032e23d = Xint0x80_syscall+0x1d
--- syscall (6), eip = 0x80b2edb, esp = 0xbfbff69c, ebp = 0xbfbff6a8 ---
Debugger("witness_lock")
Stopped at      0xc032cab4 = Debugger+0x54:     xchgl   %ebx,0xc0432164 = in_Debugger.0
db> cont

-- 
Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk_at_FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.
Received on Mon Aug 04 2003 - 12:43:22 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:17 UTC