Date: Mon, 04 Aug 2003 23:43:19 +0200 From: Poul-Henning Kamp <phk@phk.freebsd.dk> To: current@freebsd.org Subject: locking problems with pipes ? Message-ID: <18202.1060033399@critter.freebsd.dk>
next in thread | raw e-mail | index | archive | help
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 @ 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) @ vm/vm_map.c:2228 2nd 0xc03db9e0 Giant (Giant) @ 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@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.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?18202.1060033399>