Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 12 Aug 2000 18:14:55 +0200 (CEST)
From:      "Bradley T. Hughes" <bhughes@trolltech.com>
To:        stable@freebsd.org
Subject:   bug in pthread implementation
Message-ID:  <Pine.BSF.4.21.0008121809030.27068-200000@reticent.troll.no>

next in thread | raw e-mail | index | archive | help
  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 <bhughes@trolltech.com>
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: <Pine.BSF.4.21.0008121814550.27068@reticent.troll.no>
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0008121809030.27068-200000>