Date: Thu, 18 Sep 2008 06:31:42 +0200 From: David Naylor <naylor.b.david@gmail.com> To: freebsd-current@freebsd.org Subject: FreeBSD deadlock (with fork?) Message-ID: <200809180631.47071.naylor.b.david@gmail.com>
next in thread | raw e-mail | index | archive | help
--nextPart1363582.xnixl2Qouk Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hi, I have a program that spawns a lot of subprocesses (with pipes open) from=20 multiple threads. The problem is the program often deadlocks, but not=20 consistently. Sometimes the program can run over 5 times to competition=20 without incidence and yet othertimes it locks within a few seconds. =20 However if I limit the thread count to 1 the problem does not appear to be= =20 present. =20 Here are the logs from gdb: (gdb) info thread 5 Thread 7021c0 (LWP 100203) 0x00000008009a2e8c in _umtx_op_err () at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:37 4 Thread a28480 (LWP 100174) 0x00000008009a2e8c in _umtx_op_err () at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:37 3 Thread a61d80 (LWP 100175) 0x00000008009a2e8c in _umtx_op_err () at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:37 2 Thread a61bc0 (LWP 100176) 0x00000008009a2e8c in _umtx_op_err () at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:37 * 1 Thread a61840 (LWP 100177) 0x00000008009a2e8c in _umtx_op_err () at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:37 (gdb) bt #0 0x00000008009a2e8c in _umtx_op_err ()=20 at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:37 #1 0x00000008009a1331 in cond_wait_common (cond=3DVariable "cond" is not=20 available. ) at /usr/src/lib/libthr/thread/thr_cond.c:204 #2 0x00000000004c0573 in PyThread_acquire_lock (lock=3D0x70a760, waitflag= =3D1) at=20 thread_pthread.h:452 #3 0x00000000004c38b0 in lock_PyThread_acquire_lock (self=3D0x83f258,=20 args=3DVariable "args" is not available. ) at ./Modules/threadmodule.c:46 #4 0x00000000004939e3 in PyEval_EvalFrameEx (f=3D0xa53920,=20 throwflag=3DVariable "throwflag" is not available. ) at Python/ceval.c:3679 #5 0x00000000004939a8 in PyEval_EvalFrameEx (f=3D0xb57420,=20 throwflag=3DVariable "throwflag" is not available. ) at Python/ceval.c:3765 #6 0x0000000000494ac1 in PyEval_EvalCodeEx (co=3D0x9aab70,=20 globals=3DVariable "globals" is not available. ) at Python/ceval.c:2942 #7 0x00000000004eb6bc in function_call (func=3D0x9d8938, arg=3D0x9d9990,=20 kw=3D0xa24da0) at Objects/funcobject.c:524 #8 0x0000000000417add in PyObject_Call (func=3D0x9d8938, arg=3D0x9d9990,=20 kw=3D0xa24da0) at Objects/abstract.c:2487 #9 0x000000000048f730 in PyEval_EvalFrameEx (f=3D0xb48e20,=20 throwflag=3DVariable "throwflag" is not available. ) at Python/ceval.c:3978 #10 0x00000000004939a8 in PyEval_EvalFrameEx (f=3D0xb57720,=20 throwflag=3DVariable "throwflag" is not available. ) at Python/ceval.c:3765 #11 0x00000000004939a8 in PyEval_EvalFrameEx (f=3D0xb49020,=20 throwflag=3DVariable "throwflag" is not available. ) at Python/ceval.c:3765 #12 0x0000000000494ac1 in PyEval_EvalCodeEx (co=3D0x947cd8,=20 globals=3DVariable "globals" is not available. ) at Python/ceval.c:2942 #13 0x00000000004eb5bd in function_call (func=3D0x9a5320, arg=3D0x9d9950, k= w=3D0x0)=20 at Objects/funcobject.c:524 #14 0x0000000000417add in PyObject_Call (func=3D0x9a5320, arg=3D0x9d9950, k= w=3D0x0)=20 at Objects/abstract.c:2487 #15 0x000000000041f12f in instancemethod_call (func=3D0x9a5320, arg=3D0x9d9= 950,=20 kw=3D0x0) at Objects/classobject.c:2558 #16 0x0000000000417add in PyObject_Call (func=3D0x93b410, arg=3D0x718050, k= w=3D0x0)=20 at Objects/abstract.c:2487 #17 0x000000000048d4c6 in PyEval_CallObjectWithKeywords (func=3D0x93b410,=20 arg=3D0x718050, kw=3D0x0) at Python/ceval.c:3548 #18 0x00000000004c3cbd in t_bootstrap (boot_raw=3D0x70ae60)=20 at ./Modules/threadmodule.c:425 #19 0x000000080099ac11 in thread_start (curthread=3D0xa61840)=20 at /usr/src/lib/libthr/thread/thr_create.c:288 #20 0x0000000000000000 in ?? () Error accessing memory address 0x7fffff5fc000: Bad address. (gdb) thr 2 [Switching to thread 2 (Thread a61bc0 (LWP 100176))]#0 0x00000008009a2e8c = in=20 _umtx_op_err () at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:37 37 RSYSCALL_ERR(_umtx_op) (gdb) bt #0 0x00000008009a2e8c in _umtx_op_err ()=20 at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:37 #1 0x00000008009a1331 in cond_wait_common (cond=3DVariable "cond" is not=20 available. ) at /usr/src/lib/libthr/thread/thr_cond.c:204 #2 0x00000000004c0573 in PyThread_acquire_lock (lock=3D0x70a600, waitflag= =3D1) at=20 thread_pthread.h:452 #3 0x00000000004c38b0 in lock_PyThread_acquire_lock (self=3D0x83f168,=20 args=3DVariable "args" is not available. ) at ./Modules/threadmodule.c:46 #4 0x00000000004939e3 in PyEval_EvalFrameEx (f=3D0xb56520,=20 throwflag=3DVariable "throwflag" is not available. ) at Python/ceval.c:3679 #5 0x0000000000494ac1 in PyEval_EvalCodeEx (co=3D0x8d5dc8,=20 globals=3DVariable "globals" is not available. ) at Python/ceval.c:2942 #6 0x0000000000492c88 in PyEval_EvalFrameEx (f=3D0xb2de20,=20 throwflag=3DVariable "throwflag" is not available. ) at Python/ceval.c:3775 #7 0x0000000000494ac1 in PyEval_EvalCodeEx (co=3D0x8d5288,=20 globals=3DVariable "globals" is not available. ) at Python/ceval.c:2942 #8 0x00000000004eb5bd in function_call (func=3D0x9a8b18, arg=3D0xc524d0, k= w=3D0x0)=20 at Objects/funcobject.c:524 #9 0x0000000000417add in PyObject_Call (func=3D0x9a8b18, arg=3D0xc524d0, k= w=3D0x0)=20 at Objects/abstract.c:2487 #10 0x000000000041f12f in instancemethod_call (func=3D0x9a8b18, arg=3D0xc52= 4d0,=20 kw=3D0x0) at Objects/classobject.c:2558 #11 0x0000000000417add in PyObject_Call (func=3D0x93b370, arg=3D0x10331d0, = kw=3D0x0)=20 at Objects/abstract.c:2487 #12 0x0000000000464158 in slot_tp_init (self=3DVariable "self" is not avail= able. ) at Objects/typeobject.c:5532 #13 0x0000000000461561 in type_call (type=3D0x7d9420, args=3D0x10331d0, kwd= s=3D0x0)=20 at Objects/typeobject.c:700 #14 0x0000000000417add in PyObject_Call (func=3D0x7d9420, arg=3D0x10331d0, = kw=3D0x0)=20 at Objects/abstract.c:2487 #15 0x00000000004906f9 in PyEval_EvalFrameEx (f=3D0xb3a120,=20 throwflag=3DVariable "throwflag" is not available. ) at Python/ceval.c:3890 #16 0x0000000000494ac1 in PyEval_EvalCodeEx (co=3D0x8d5eb8,=20 globals=3DVariable "globals" is not available. ) at Python/ceval.c:2942 #17 0x0000000000492c88 in PyEval_EvalFrameEx (f=3D0xa47a20,=20 throwflag=3DVariable "throwflag" is not available. ) at Python/ceval.c:3775 #18 0x0000000000494ac1 in PyEval_EvalCodeEx (co=3D0x8d5cd8,=20 globals=3DVariable "globals" is not available. ) at Python/ceval.c:2942 #19 0x0000000000492c88 in PyEval_EvalFrameEx (f=3D0xb3a420,=20 throwflag=3DVariable "throwflag" is not available. ) at Python/ceval.c:3775 #20 0x0000000000494ac1 in PyEval_EvalCodeEx (co=3D0x9aabe8,=20 globals=3DVariable "globals" is not available. ) at Python/ceval.c:2942 #21 0x0000000000492c88 in PyEval_EvalFrameEx (f=3D0xb3a720,=20 throwflag=3DVariable "throwflag" is not available. ) at Python/ceval.c:3775 #22 0x0000000000494ac1 in PyEval_EvalCodeEx (co=3D0x9aab70,=20 globals=3DVariable "globals" is not available. ) at Python/ceval.c:2942 #23 0x00000000004eb6bc in function_call (func=3D0x9d8938, arg=3D0x9d98d0,=20 kw=3D0xa5a660) at Objects/funcobject.c:524 #24 0x0000000000417add in PyObject_Call (func=3D0x9d8938, arg=3D0x9d98d0,=20 kw=3D0xa5a660) at Objects/abstract.c:2487 #25 0x000000000048f730 in PyEval_EvalFrameEx (f=3D0xb2e020,=20 throwflag=3DVariable "throwflag" is not available. ) at Python/ceval.c:3978 =2D--Type <return> to continue, or q <return> to quit--- #26 0x00000000004939a8 in PyEval_EvalFrameEx (f=3D0xb3aa20,=20 throwflag=3DVariable "throwflag" is not available. ) at Python/ceval.c:3765 #27 0x00000000004939a8 in PyEval_EvalFrameEx (f=3D0xb2e220,=20 throwflag=3DVariable "throwflag" is not available. ) at Python/ceval.c:3765 #28 0x0000000000494ac1 in PyEval_EvalCodeEx (co=3D0x947cd8,=20 globals=3DVariable "globals" is not available. ) at Python/ceval.c:2942 #29 0x00000000004eb5bd in function_call (func=3D0x9a5320, arg=3D0x9d9890, k= w=3D0x0)=20 at Objects/funcobject.c:524 #30 0x0000000000417add in PyObject_Call (func=3D0x9a5320, arg=3D0x9d9890, k= w=3D0x0)=20 at Objects/abstract.c:2487 #31 0x000000000041f12f in instancemethod_call (func=3D0x9a5320, arg=3D0x9d9= 890,=20 kw=3D0x0) at Objects/classobject.c:2558 #32 0x0000000000417add in PyObject_Call (func=3D0x93b320, arg=3D0x718050, k= w=3D0x0)=20 at Objects/abstract.c:2487 #33 0x000000000048d4c6 in PyEval_CallObjectWithKeywords (func=3D0x93b320,=20 arg=3D0x718050, kw=3D0x0) at Python/ceval.c:3548 #34 0x00000000004c3cbd in t_bootstrap (boot_raw=3D0x70aee0)=20 at ./Modules/threadmodule.c:425 #35 0x000000080099ac11 in thread_start (curthread=3D0xa61bc0)=20 at /usr/src/lib/libthr/thread/thr_create.c:288 #36 0x0000000000000000 in ?? () Error accessing memory address 0x7fffff7fd000: Bad address. Apologies about the long backtraces [and thus the long message]. =20 Thanks David --nextPart1363582.xnixl2Qouk Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.4 (FreeBSD) iD8DBQBI0dmzUaaFgP9pFrIRAtZLAJ4u93H8lRRBnKFoovdY0xwKkJlAqQCdHCar sKPisc2z5tIDPocnk1hVtug= =lED7 -----END PGP SIGNATURE----- --nextPart1363582.xnixl2Qouk--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200809180631.47071.naylor.b.david>