From owner-freebsd-hackers@FreeBSD.ORG Fri Mar 7 04:46:34 2008 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 83CD11065670 for ; Fri, 7 Mar 2008 04:46:34 +0000 (UTC) (envelope-from Shaun.Marko@lodgenet.com) Received: from garbo.lodgenet.com (garbo.lodgenet.com [204.124.121.250]) by mx1.freebsd.org (Postfix) with ESMTP id 420658FC17 for ; Fri, 7 Mar 2008 04:46:34 +0000 (UTC) (envelope-from Shaun.Marko@lodgenet.com) Received: from hardy.lodgenet.com (hardy.lodgenet.com [10.16.101.109]) by garbo.lodgenet.com (8.12.11.20060308/8.12.11) with ESMTP id m273jIhg031344 for ; Thu, 6 Mar 2008 21:45:39 -0600 Received: from cheney.lodgenet.com (Not Verified[10.16.101.108]) by hardy.lodgenet.com with MailMarshal (v6, 1, 6, 1172) id ; Thu, 06 Mar 2008 21:45:18 -0600 Received: from host.lodgenet.com ([host.lodgenet.com]) by host.lodgenet.com with Microsoft SMTPSVC(5.0.2195.5329); Thu, 6 Mar 2008 21:45:17 -0600 X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C88005.A893C9B5" Date: Thu, 6 Mar 2008 21:45:15 -0600 Message-ID: <87D91DEDB1111C44BBFB9E3E90FF1E6E9553E0@host.lodgenet.com> X-MS-Has-Attach: yes X-MS-TNEF-Correlator: Thread-Topic: libpthread/fork issue Thread-Index: AciABafEbLIbebCpR/ST46Z5eA1MQQ== From: "Marko, Shaun" To: "FreeBSD Hackers" X-OriginalArrivalTime: 07 Mar 2008 03:45:17.0747 (UTC) FILETIME=[A8EEC030:01C88005] X-Mailman-Approved-At: Fri, 07 Mar 2008 12:12:13 +0000 Subject: libpthread/fork issue X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 07 Mar 2008 04:46:34 -0000 This is a multi-part message in MIME format. ------_=_NextPart_001_01C88005.A893C9B5 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: quoted-printable I'm working on FreeBSD 6.2 and I'm wondering if anybody can help with an issue I've found using fork and threads. The attached program demonstrates the problem. In short, if a process creates a thread, joins the thread, then forks a child process which creates a thread, the child's attempt to create a thread will cause the program to dump core with the following error message: Fatal error 'mutex is on list' at line 540 in file /usr/src/lib/libpthread/thread/thr_mutex.c (errno =3D 0). This seems to be true using an SMP or UP kernel. If you run the attached program with no arguments, the parent process will not create and join a thread and will not crash. Here is the output: [Sherlock]$ ./threadTest child: born child: thread created child: thread joined parent: child died If you run the attached program with "-crash", the parent process creates and joins a thread, causing the error: [Sherlock]$ ./threadTest -crash parent: thread created parent: thread joined child: born Fatal error 'mutex is on list' at line 540 in file /usr/src/lib/libpthread/thread/thr_mutex.c (errno =3D 0) parent: child died Here is the backtrace of the resulting core: #0 0x28097537 in pthread_testcancel () from /lib/libpthread.so.2 [New Thread 0x8053200 (LWP 100163)] [New Thread 0x8053000 (LWP 100201)] (gdb) where #0 0x28097537 in pthread_testcancel () from /lib/libpthread.so.2 #1 0x2808689a in sigaction () from /lib/libpthread.so.2 #2 0x2808088d in pthread_kill () from /lib/libpthread.so.2 #3 0x28080256 in raise () from /lib/libpthread.so.2 #4 0x28159b78 in abort () from /lib/libc.so.6 #5 0x28097c6f in pthread_testcancel () from /lib/libpthread.so.2 #6 0x2808c85f in _pthread_mutex_trylock () from /lib/libpthread.so.2 #7 0x2808d590 in _pthread_mutex_lock () from /lib/libpthread.so.2 #8 0x28083361 in _spinlock () from /lib/libpthread.so.2 #9 0x280f7ddb in _UTF8_init () from /lib/libc.so.6 #10 0x28172940 in _thread_autoinit_dummy_decl_stub () from /lib/libc.so.6 #11 0x28074200 in ?? () #12 0x2804f405 in symlook_obj () from /libexec/ld-elf.so.1 #13 0x280883ff in pthread_attr_init () from /lib/libpthread.so.2 #14 0x280848fd in sigaction () from /lib/libpthread.so.2 #15 0x2808e915 in pthread_mutexattr_init () from /lib/libpthread.so.2 #16 0x28088116 in pthread_create () from /lib/libpthread.so.2 #17 0x08048795 in spawnThread (caller=3D0x80489f0 "child") at threadTest.c:21 #18 0x08048879 in main (argc=3D2, argv=3D0x17e) at threadTest.c:62 Any help would be greatly appreciated.=20 -Shaun ------_=_NextPart_001_01C88005.A893C9B5 Content-Type: application/octet-stream; name="Makefile" Content-Transfer-Encoding: base64 Content-Description: Makefile Content-Disposition: attachment; filename="Makefile" UFJPRz10aHJlYWRUZXN0ClNSQ1M9dGhyZWFkVGVzdC5jCk5PX01BTj10Ck5PX09CSj10CkxEQURE PS1scHRocmVhZAouaW5jbHVkZTxic2QucHJvZy5taz4K ------_=_NextPart_001_01C88005.A893C9B5 Content-Type: application/octet-stream; name="threadTest.c" Content-Transfer-Encoding: base64 Content-Description: threadTest.c Content-Disposition: attachment; filename="threadTest.c" I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGVycm5vLmg+ CiNpbmNsdWRlIDxwdGhyZWFkLmg+CgpzdGF0aWMgdm9pZCB1c2FnZSh2b2lkKQp7CiAgICBmcHJp bnRmKHN0ZGVyciwgInVzYWdlOiB0aHJlYWRUZXN0IFstY3Jhc2hdXG4iKTsKICAgIGV4aXQoMSk7 Cn0Kdm9pZCogdGhyZWFkRnVuYyh2b2lkKiBhcmdzKQp7CiAgICBjaGFyICpjYWxsZXIgPSAoY2hh ciopYXJnczsKICAgIHByaW50ZigiJXM6IHRocmVhZCBjcmVhdGVkXG4iLCBjYWxsZXIpOwogICAg cmV0dXJuIDA7Cn0KCmludCBzcGF3blRocmVhZChjaGFyICpjYWxsZXIpCnsKICAgIHB0aHJlYWRf dCB0OwogICAgaW50IGVyciA9IHB0aHJlYWRfY3JlYXRlKCZ0LCAwLCB0aHJlYWRGdW5jLCBjYWxs ZXIpOwogICAgaWYgKGVycikKICAgIHsKCWZwcmludGYoc3RkZXJyLCAiJXM6IHVuYWJsZSB0byBj cmVhdGUgdGhyZWFkOiAlc1xuIiwgY2FsbGVyLCBzdHJlcnJvcihlcnIpKTsKCXJldHVybiAxOwog ICAgfQogICAgZXJyID0gcHRocmVhZF9qb2luKHQsIDApOwogICAgaWYgKGVycikKICAgIHsKCWZw cmludGYoc3RkZXJyLCAiJXM6IHVuYWJsZSB0byBqb2luIHRocmVhZDogJXNcbiIsIGNhbGxlciwg c3RyZXJyb3IoZXJyKSk7CglyZXR1cm4gMTsKICAgIH0KICAgIHByaW50ZigiJXM6IHRocmVhZCBq b2luZWRcbiIsIGNhbGxlcik7CiAgICByZXR1cm4gMDsKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQp7CiAgICBpZiAoYXJnYyA9PSAyKQogICAgewoJaWYgKHN0cmNtcChhcmd2WzFd LCAiLWNyYXNoIikgPT0gMCkKCXsKCSAgICBpZiAoc3Bhd25UaHJlYWQoInBhcmVudCIpKQoJICAg IHsKCQlyZXR1cm4gMTsKCSAgICB9Cgl9CgllbHNlCgl7CgkgICAgdXNhZ2UoKTsKCX0KICAgIH0K ICAgIHBpZF90IHBpZCA9IGZvcmsoKTsKICAgIGlmIChwaWQgPT0gLTEpCiAgICB7CglmcHJpbnRm KHN0ZGVyciwgInVuYWJsZSB0byBmb3JrOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKCXJldHVy biAxOwogICAgfQogICAgZWxzZSBpZiAocGlkID09IDApCiAgICB7CglwcmludGYoImNoaWxkOiBi b3JuXG4iKTsKCXJldHVybiBzcGF3blRocmVhZCgiY2hpbGQiKTsKICAgIH0KICAgIGVsc2UKICAg IHsKCWludCBzdGF0dXM7CglwaWRfdCBwaWQgPSB3YWl0KCZzdGF0dXMpOwoJaWYgKHBpZCA9PSAt MSkKCXsKCSAgIGZwcmludGYoc3RkZXJyLCAicGFyZW50OiB3YWl0OiAlc1xuIiwgc3RyZXJyb3Io ZXJybm8pKTsKCSAgIHJldHVybiAxOwoJfQoJcHJpbnRmKCJwYXJlbnQ6IGNoaWxkIGRpZWRcbiIp OwogICAgfQogICAgcmV0dXJuIDA7Cn0K ------_=_NextPart_001_01C88005.A893C9B5--