From owner-freebsd-stable Sat Aug 12 9:15: 5 2000 Delivered-To: freebsd-stable@freebsd.org Received: from reticent.troll.no (reticent.troll.no [195.0.254.28]) by hub.freebsd.org (Postfix) with SMTP id 1C81237BE2A for ; Sat, 12 Aug 2000 09:14:59 -0700 (PDT) (envelope-from bhughes@trolltech.com) Received: (qmail 54877 invoked by uid 1001); 12 Aug 2000 16:14:55 -0000 Received: from localhost (sendmail-bs@127.0.0.1) by localhost with SMTP; 12 Aug 2000 16:14:55 -0000 Date: Sat, 12 Aug 2000 18:14:55 +0200 (CEST) From: "Bradley T. Hughes" X-Sender: bhughes@reticent.troll.no To: stable@freebsd.org Subject: bug in pthread implementation Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-1090927533-966096895=:27068" Sender: owner-freebsd-stable@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --0-1090927533-966096895=:27068 Content-Type: TEXT/PLAIN; charset=US-ASCII It seems that the mutex implementation for recursive mutexes has a bug. a single lock/unlock pair works as expected, but locking 3 times only requires 2 unlocks before the mutex is released. i've read through src/lib/libc_r/uthread/uthread_mutex.c but can't quite follow the logic... i plan on debugging this more and hope to generate a patch... but i figured i'd send off an email about it to see if anyone else can find the solution quicker than i can :) to see the bug, take the attached blah.c and compile it: gcc -pthread -o blah blah.c and run it : ./blah -- Bradley T. Hughes Waldemar Thranes gt. 98B N-0175 Oslo, Norway Office: +47 21 60 48 92 Mobile: +47 92 01 97 81 --0-1090927533-966096895=:27068 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="blah.c" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: blah.c Content-Disposition: attachment; filename="blah.c" I2luY2x1ZGUgPHB0aHJlYWQuaD4NCiNpbmNsdWRlIDxzdGRpby5oPg0KI2lu Y2x1ZGUgPHN0cmluZy5oPg0KI2luY2x1ZGUgPHVuaXN0ZC5oPg0KDQpwdGhy ZWFkX2NvbmRfdCBjb25kOw0KDQp2b2lkICp0aHJlYWQxKHZvaWQgKmFyZykg ew0KICAgIHB0aHJlYWRfbXV0ZXhfdCAqbXV0ZXggPSAocHRocmVhZF9tdXRl eF90ICopIGFyZzsNCiAgICANCiAgICAvLyBsb2NrL3VubG9jayBvbmNlIHdv cmtzIGZpbmUNCiAgICBwcmludGYoInRocmVhZCAxIGxvY2tpbmcgbXV0ZXgg KCVzKVxuIiwNCiAgICAgICAgICAgc3RyZXJyb3IocHRocmVhZF9tdXRleF9s b2NrKG11dGV4KSkpOw0KICAgIA0KICAgIC8vIG1ha2Ugc3VyZSB0aHJlYWQx IGlzIGZpcnN0DQogICAgcHRocmVhZF9jb25kX3dhaXQoJmNvbmQsIG11dGV4 KTsNCiAgICBwdGhyZWFkX2NvbmRfc2lnbmFsKCZjb25kKTsNCiAgICANCiAg ICBwcmludGYoInRocmVhZCAxIHVubG9ja2luZyBtdXRleCAoJXMpXG4iLA0K ICAgICAgICAgICBzdHJlcnJvcihwdGhyZWFkX211dGV4X3VubG9jayhtdXRl eCkpKTsNCiAgICANCiAgICAvLyBsb2NrIDYgdGltZXMgYW5kIHRoZW4gdW5s b2NrIDYgdGltZXMNCiAgICBwcmludGYoInRocmVhZCAxIGxvY2tpbmcgbXV0 ZXggMSAoJXMpXG4iLA0KICAgICAgICAgICBzdHJlcnJvcihwdGhyZWFkX211 dGV4X2xvY2sobXV0ZXgpKSk7DQogICAgcHJpbnRmKCJ0aHJlYWQgMSBsb2Nr aW5nIG11dGV4IDIgKCVzKVxuIiwNCiAgICAgICAgICAgc3RyZXJyb3IocHRo cmVhZF9tdXRleF9sb2NrKG11dGV4KSkpOw0KICAgIHByaW50ZigidGhyZWFk IDEgbG9ja2luZyBtdXRleCAzICglcylcbiIsDQogICAgICAgICAgIHN0cmVy cm9yKHB0aHJlYWRfbXV0ZXhfbG9jayhtdXRleCkpKTsNCiAgICBwcmludGYo InRocmVhZCAxIGxvY2tpbmcgbXV0ZXggNCAoJXMpXG4iLA0KICAgICAgICAg ICBzdHJlcnJvcihwdGhyZWFkX211dGV4X2xvY2sobXV0ZXgpKSk7DQogICAg cHJpbnRmKCJ0aHJlYWQgMSBsb2NraW5nIG11dGV4IDUgKCVzKVxuIiwNCiAg ICAgICAgICAgc3RyZXJyb3IocHRocmVhZF9tdXRleF9sb2NrKG11dGV4KSkp Ow0KICAgIHByaW50ZigidGhyZWFkIDEgbG9ja2luZyBtdXRleCA2ICglcylc biIsDQogICAgICAgICAgIHN0cmVycm9yKHB0aHJlYWRfbXV0ZXhfbG9jayht dXRleCkpKTsNCg0KICAgIHByaW50ZigidGhyZWFkIDEgdW5sb2NraW5nIG11 dGV4IDYgKCVzKVxuIiwNCiAgICAgICAgICAgc3RyZXJyb3IocHRocmVhZF9t dXRleF91bmxvY2sobXV0ZXgpKSk7DQogICAgcHJpbnRmKCJ0aHJlYWQgMSB1 bmxvY2tpbmcgbXV0ZXggNSAoJXMpXG4iLA0KICAgICAgICAgICBzdHJlcnJv cihwdGhyZWFkX211dGV4X3VubG9jayhtdXRleCkpKTsNCiAgICBwcmludGYo InRocmVhZCAxIHVubG9ja2luZyBtdXRleCA0ICglcylcbiIsDQogICAgICAg ICAgIHN0cmVycm9yKHB0aHJlYWRfbXV0ZXhfdW5sb2NrKG11dGV4KSkpOw0K ICAgIHByaW50ZigidGhyZWFkIDEgdW5sb2NraW5nIG11dGV4IDMgKCVzKVxu IiwNCiAgICAgICAgICAgc3RyZXJyb3IocHRocmVhZF9tdXRleF91bmxvY2so bXV0ZXgpKSk7DQogICAgcHJpbnRmKCJ0aHJlYWQgMSB1bmxvY2tpbmcgbXV0 ZXggMiAoJXMpXG4iLA0KICAgICAgICAgICBzdHJlcnJvcihwdGhyZWFkX211 dGV4X3VubG9jayhtdXRleCkpKTsNCiAgICANCiAgICBwcmludGYoIiEhISBz aG91bGQgc3RpbGwgYmUgbG9ja2VkLCBidXQgdGhlIG90aGVyIHRocmVhZCB3 aWxsIGJlIGFibGUgdG8gcnVuIG5vd1xuIik7DQogICAgc2xlZXAoMSk7DQog ICAgcHJpbnRmKCJ0aHJlYWQgMSB1bmxvY2tpbmcgbXV0ZXggMSAoJXMpXG4i LA0KICAgICAgICAgICBzdHJlcnJvcihwdGhyZWFkX211dGV4X3VubG9jayht dXRleCkpKTsNCiAgICBwcmludGYoIiEhISBub3RpY2UgdGhlIGVycm9yc1xu Iik7DQogICAgDQogICAgcmV0dXJuIE5VTEw7DQp9DQoNCg0Kdm9pZCAqdGhy ZWFkMih2b2lkICphcmcpIHsNCiAgICBwdGhyZWFkX211dGV4X3QgKm11dGV4 ID0gKHB0aHJlYWRfbXV0ZXhfdCAqKSBhcmc7DQogICAgDQogICAgcHJpbnRm KCJ0aHJlYWQgMiBsb2NraW5nIG11dGV4ICglcylcbiIsDQogICAgICAgICAg IHN0cmVycm9yKHB0aHJlYWRfbXV0ZXhfbG9jayhtdXRleCkpKTsNCg0KICAg IHB0aHJlYWRfY29uZF9zaWduYWwoJmNvbmQpOw0KICAgIHB0aHJlYWRfY29u ZF93YWl0KCZjb25kLCBtdXRleCk7DQoNCiAgICBwcmludGYoInRocmVhZCAy IHVubG9ja2luZyBtdXRleCAoJXMpXG4iLA0KICAgICAgICAgICBzdHJlcnJv cihwdGhyZWFkX211dGV4X3VubG9jayhtdXRleCkpKTsNCg0KICAgIHByaW50 ZigidGhyZWFkIDIgbG9ja2luZyBtdXRleCAxICglcylcbiIsDQoJICAgc3Ry ZXJyb3IocHRocmVhZF9tdXRleF9sb2NrKG11dGV4KSkpOw0KICAgIHByaW50 ZigidGhyZWFkIDIgbG9ja2luZyBtdXRleCAyICglcylcbiIsDQogICAgICAg ICAgIHN0cmVycm9yKHB0aHJlYWRfbXV0ZXhfbG9jayhtdXRleCkpKTsNCiAg ICBwcmludGYoInRocmVhZCAyIGxvY2tpbmcgbXV0ZXggMyAoJXMpXG4iLA0K ICAgICAgICAgICBzdHJlcnJvcihwdGhyZWFkX211dGV4X2xvY2sobXV0ZXgp KSk7DQogICAgcHJpbnRmKCJ0aHJlYWQgMiBsb2NraW5nIG11dGV4IDQgKCVz KVxuIiwNCiAgICAgICAgICAgc3RyZXJyb3IocHRocmVhZF9tdXRleF9sb2Nr KG11dGV4KSkpOw0KICAgIHByaW50ZigidGhyZWFkIDIgbG9ja2luZyBtdXRl eCA1ICglcylcbiIsDQogICAgICAgICAgIHN0cmVycm9yKHB0aHJlYWRfbXV0 ZXhfbG9jayhtdXRleCkpKTsNCiAgICBwcmludGYoInRocmVhZCAyIGxvY2tp bmcgbXV0ZXggNiAoJXMpXG4iLA0KICAgICAgICAgICBzdHJlcnJvcihwdGhy ZWFkX211dGV4X2xvY2sobXV0ZXgpKSk7DQoNCiAgICBwcmludGYoInRocmVh ZCAyIHVubG9ja2luZyBtdXRleCA2ICglcylcbiIsDQogICAgICAgICAgIHN0 cmVycm9yKHB0aHJlYWRfbXV0ZXhfdW5sb2NrKG11dGV4KSkpOw0KICAgIHBy aW50ZigidGhyZWFkIDIgdW5sb2NraW5nIG11dGV4IDUgKCVzKVxuIiwNCiAg ICAgICAgICAgc3RyZXJyb3IocHRocmVhZF9tdXRleF91bmxvY2sobXV0ZXgp KSk7DQogICAgcHJpbnRmKCJ0aHJlYWQgMiB1bmxvY2tpbmcgbXV0ZXggNCAo JXMpXG4iLA0KICAgICAgICAgICBzdHJlcnJvcihwdGhyZWFkX211dGV4X3Vu bG9jayhtdXRleCkpKTsNCiAgICBwcmludGYoInRocmVhZCAyIHVubG9ja2lu ZyBtdXRleCAzICglcylcbiIsDQogICAgICAgICAgIHN0cmVycm9yKHB0aHJl YWRfbXV0ZXhfdW5sb2NrKG11dGV4KSkpOw0KICAgIHByaW50ZigidGhyZWFk IDIgdW5sb2NraW5nIG11dGV4IDIgKCVzKVxuIiwNCiAgICAgICAgICAgc3Ry ZXJyb3IocHRocmVhZF9tdXRleF91bmxvY2sobXV0ZXgpKSk7DQoNCiAgICAv LyBzaG91bGQgYmUgbG9ja2VkLCBidXQgaXQgaXMgbm90DQogICAgcHJpbnRm KCJ0aHJlYWQgMiB1bmxvY2tpbmcgbXV0ZXggMSAoJXMpXG4iLA0KICAgICAg ICAgICBzdHJlcnJvcihwdGhyZWFkX211dGV4X3VubG9jayhtdXRleCkpKTsN Cg0KICAgIHJldHVybiBOVUxMOw0KfQ0KDQoNCmludCBtYWluKCkgew0KICAg IHB0aHJlYWRfdCB0aHIxLCB0aHIyOw0KICAgIHB0aHJlYWRfbXV0ZXhfdCBt dXRleDsNCiAgICB2b2lkICpqdW5rOw0KDQogICAgcHRocmVhZF9tdXRleGF0 dHJfdCBtYXR0cjsNCiAgICBwdGhyZWFkX211dGV4YXR0cl9pbml0KCZtYXR0 cik7DQogICAgcHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZSgmbWF0dHIsIFBU SFJFQURfTVVURVhfUkVDVVJTSVZFKTsNCiAgICBwdGhyZWFkX211dGV4X2lu aXQoJm11dGV4LCAmbWF0dHIpOw0KDQogICAgcHRocmVhZF9jb25kX2luaXQo JmNvbmQsIE5VTEwpOw0KDQogICAgcHRocmVhZF9jcmVhdGUoICZ0aHIxLCBO VUxMLCB0aHJlYWQxLCAodm9pZCAqKSAmbXV0ZXggKTsNCiAgICBwdGhyZWFk X2NyZWF0ZSggJnRocjIsIE5VTEwsIHRocmVhZDIsICh2b2lkICopICZtdXRl eCApOw0KDQogICAgcHRocmVhZF9qb2luKHRocjEsICZqdW5rKTsNCiAgICBw dGhyZWFkX2pvaW4odGhyMiwgJmp1bmspOw0KDQogICAgcmV0dXJuIDA7DQp9 DQo= --0-1090927533-966096895=:27068-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-stable" in the body of the message