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 ]

pthreadtest.c

Reply via email to