Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Sep 2000 10:21:28 +0200 (IST)
From:      Roman Shterenzon <roman@harmonic.co.il>
To:        freebsd-stable@freebsd.org
Subject:   pthreads bug?
Message-ID:  <970215688.39d451088fbef@webmail.harmonic.co.il>

next in thread | raw e-mail | index | archive | help
This message is in MIME format.

---MOQ9702156882c3814b98ff110c20b2fe29156f0ad46
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit

Hello,
I noticed some strange behavior in pthreads applications,
close on socket which is in accept() will be blocked untill there's a connection
to port and accept returns.
It's observed on 4.0 - 4.1-STABLE, perhaps 4.1.1-STABLE as well, but I didn't 
try it. I don't have 3.5.1-STABLE system to test it there.
It affects, for example, openldap - start it , then kill -15 it.
It won't die (and it should). Now, try to telnet localhost 389 ; now it died.
The same behavior is a program we're writing right now, it's very annoying, in
fact we don't know how to deal with it. It works on solaris and linux.
btw, linux doesn't dump core on threaded application, how one's supposed to
debug it?
I attach example program, which, when receives SIGUSR1 should close the socket,
but, in fact gets blocked in the close() function.
Obviously it's waiting to acquire some lock.
Does anyone have an idea?

--Roman Shterenzon, UNIX System Administrator and Consultant
[ Xpert UNIX Systems Ltd., Herzlia, Israel. Tel: +972-9-9522361 ]

---MOQ9702156882c3814b98ff110c20b2fe29156f0ad46
Content-Type: application/octet-stream; name="pthreadtest.c"; name="pthreadtest.c"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="pthreadtest.c"


I2luY2x1ZGUgPHB0aHJlYWQuaD4KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8c3lz
L3NvY2tldC5oPgojaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgojaW5jbHVkZSA8c2lnbmFsLmg+CiNp
bmNsdWRlIDxlcnJuby5oPgoKaW50IHNvY2s7Cgp2b2lkKiByb3V0aW5lKHZvaWQgKmFyZykKewog
IHdoaWxlKDEpIHNsZWVwKDUpOwogIC8qa2lsbChnZXRwaWQoKSwgU0lHVVNSMSk7Ki8KfQoKdm9p
ZCB1c3IxaGFuZGxlcihpbnQgc2lnKQp7CiAgaW50IHJjPS0yOwogIHByaW50ZigiQ2xvc2luZyBz
b2NrZXQ6ICVkXG4iLCBzb2NrKTsKICByYz1jbG9zZShzb2NrKTsKICBwcmludGYoIkNsb3NlZCBz
b2NrZXQsIHJjOiAlZFxuIiwgcmMpOwp9CgppbnQgbWFpbih2b2lkKQp7CiAgcHRocmVhZF90IHRp
ZDsKICBpbnQgbmV3ZmQsIHNpbl9zaXplLCBvbj0xOwogIHN0cnVjdCBzb2NrYWRkcl9pbiBteWFk
ZHIsIGhpc2FkZHI7CiAgc2lnbmFsKFNJR1VTUjEsIHVzcjFoYW5kbGVyKTsKCiAgcHRocmVhZF9j
cmVhdGUoJnRpZCwgTlVMTCwgcm91dGluZSwgTlVMTCk7CgogIGlmICggKHNvY2s9c29ja2V0KFBG
X0lORVQsIFNPQ0tfU1RSRUFNLCA2KSk9PS0xKSB7CiAgICBwZXJyb3Ioc29ja2V0KTsKICAgIHB0
aHJlYWRfa2lsbCh0aWQsIFNJR1RFUk0pOwogICAgZXhpdCgtMSk7CiAgfQogIHNldHNvY2tvcHQo
c29jaywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLCAmb24sIHNpemVvZihvbikpOwoKICBteWFk
ZHIuc2luX2ZhbWlseT1QRl9JTkVUOwogIG15YWRkci5zaW5fcG9ydD1odG9ucygxMTExKTsKICBt
eWFkZHIuc2luX2FkZHIuc19hZGRyPUlOQUREUl9BTlk7CiAgYnplcm8oJihteWFkZHIuc2luX3pl
cm8pLCA4KTsKCiAgaWYgKChiaW5kKHNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIqKSZteWFkZHIsIHNp
emVvZihzdHJ1Y3Qgc29ja2FkZHIpKSk9PS0xKSB7CiAgICBwZXJyb3IoYmluZCk7CiAgICBwdGhy
ZWFkX2tpbGwodGlkLCBTSUdURVJNKTsKICAgIGV4aXQoLTEpOwogIH0KCiAgaWYgKGxpc3Rlbihz
b2NrLCAyKSA9PSAtMSApIHsKICAgIHBlcnJvcigibGlzdGVuIik7CiAgICBwdGhyZWFkX2tpbGwo
dGlkLCBTSUdURVJNKTsKICAgIGV4aXQoLTEpOwogIH0KICB3aGlsZSgxKSB7CiAgICBpZiAoKCBu
ZXdmZD1hY2NlcHQoc29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSZoaXNhZGRyLCAmc2luX3NpemUp
KT09LTEpewovKgogICAgICBpZiAoIGVycm5vPT1FSU5UUiApIHsKICAgICAgICBwcmludGYoIkl0
IHdhcyBhIHNpZ24hXG4iKTsKICAgICAgICBicmVhazsKICAgICAgfQoqLwogICAgICBwZXJyb3Io
ImFjY2VwdCIpOwogICAgICBleGl0KC0xKTsKICAgIH0KICAgIHByaW50ZigiY29ubmVjdGlvbiBh
Y2NlcHRlZFxuIik7CiAgICBjbG9zZShuZXdmZCk7CiAgfQogIHB0aHJlYWRfa2lsbCh0aWQsIFNJ
R1RFUk0pOwogIHJldHVybiAwOwp9Cg==


---MOQ9702156882c3814b98ff110c20b2fe29156f0ad46--


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?970215688.39d451088fbef>