Mail Archives: cygwin/2002/01/24/13:28:49
--------------5EF47D03C81762295A8FF33B
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
The attached file demonstrates a problem with a
combination of socket, fdopen and exec. It was observed
on Win98/ME/NT4/2000. Latest everything.
Please cc: me directly.
A server is listening on port 999 and forking worker
processes. It can be restarted by kill -HUP. Under some
conditions, new connections stop being accepted and
netstat -a shows two listen on port 999.
The demo is based on a widely ported program (exim)
where the problem first surfaced. It appears to be related
to the use of fdopen().
To reproduce:
1) Compile and run in a window.
2) In another window,
a) telnet localhost 999 then quit
b) kill -HUP pid
c) netstat -a shows two listen on port 999
New connections may or may not be accepted, and
mayhem can occasionally be observed with netstat.
Yes, all sockets are closed. No, playing with the
"close on exec" bit or with "linger" does not seem
to help.
Pierre
--------------5EF47D03C81762295A8FF33B
Content-Type: application/x-unknown-content-type-c_auto_file;
name="tcpdemo.c"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="tcpdemo.c"
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAqDQog
UGllcnJlIEEuIEh1bWJsZXQuIEphbiAyNCwgMjAwMg0KDQogVGhpcyBkZW1vIHByb2dyYW0g
ZXhwb3NlcyBhIGJ1ZyB3aGVyZSB0aGVyZQ0KIGFyZSB0d28gbGlzdGVuIG9uIHRoZSBzYW1l
IHRjcCBwb3J0Lg0KIE5ldyBjb25uZWN0aW9ucyBtYXkgb3IgbWF5IG5vdCBiZSBhY2NlcHRl
ZCANCg0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8N
CiNpbmNsdWRlIDxzdGRpby5oPg0KI2luY2x1ZGUgPGVycm5vLmg+DQojaW5jbHVkZSA8c3Ry
aW5nLmg+DQojaW5jbHVkZSA8c3RkbGliLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0K
I2luY2x1ZGUgPHNpZ25hbC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCiNpbmNsdWRl
IDx1bmlzdGQuaD4NCg0KZW51bSB7RkFMU0UsIFRSVUV9Ow0Kc3RhdGljIGludCBzaWdodXBf
c2VlbjsNCnN0YXRpYyBpbnQgY2FsbF9zZWVuOw0KDQovKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKiAgICAgICAgICAgICBTSUdIVVAgSGFu
ZGxlciAgICAgICAgICAgICAgICAgICAgICoNCioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovDQpzdGF0aWMgdm9pZA0Kc2lnaHVwX2hhbmRsZXIo
aW50IHNpZykNCnsNCnNpZyA9IHNpZzsgICAgLyogS2VlcCBwaWNreSBjb21waWxlcnMgaGFw
cHkgKi8NCnNpZ2h1cF9zZWVuID0gVFJVRTsNCnNpZ25hbChTSUdIVVAsIHNpZ2h1cF9oYW5k
bGVyKTsNCn0NCg0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioNCiogICAgICAgICAgICAgbWFpbiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqLw0KbWFpbihpbnQgYXJnYywgY2hhciAqIGFyZ3ZbXSkNCnsNCiAgaW50IG9uID0gMSwg
c29ja2ZkLCBuZXdzb2NrZmQsIGxjb3VudCwgcGVlcl9zaXplLCBwaWQ7DQogIHN0cnVjdCBz
b2NrYWRkcl9pbiBhZGRyLCBwZWVyOw0KICBmZF9zZXQgc2VsZWN0X2xpc3RlbjsNCiAgRklM
RSAqb3V0ZmQ7DQoNCiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKg0KICAgKg0KICAgT3BlbiBhIHNvY2tldCBhbmQgbGlzdGVuIG9uIHBvcnQg
OTk5DQoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqLw0KDQogIHNvY2tmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgMCk7DQog
IGlmIChzb2NrZmQgPCAwKSANCiAgICBwcmludGYoInNvY2tldDogJXNcbiIsIHN0cmVycm9y
KGVycm5vKSk7DQoNCiAgaWYgKHNldHNvY2tvcHQoc29ja2ZkLCBTT0xfU09DS0VULCBTT19S
RVVTRUFERFIsICZvbiwgc2l6ZW9mKG9uKSkgPCAwKQ0KICAgIHByaW50Zigic2V0c29ja29w
dDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7DQogIA0KICBtZW1zZXQoJmFkZHIsIDAsIHNp
emVvZihhZGRyKSk7DQogIGFkZHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7DQogIGFkZHIuc2lu
X3BvcnQgPSBodG9ucyg5OTkpOw0KICBhZGRyLnNpbl9hZGRyLnNfYWRkciA9IElOQUREUl9B
Tlk7DQogIGlmIChiaW5kKHNvY2tmZCwgKHN0cnVjdCBzb2NrYWRkciAqKSAmYWRkciwgc2l6
ZW9mKGFkZHIpKSA8IDApDQogICAgcHJpbnRmKCJiaW5kOiAlc1xuIiwgc3RyZXJyb3IoZXJy
bm8pKTsNCiAgDQogIGlmIChsaXN0ZW4oc29ja2ZkLCAyKSA8IDApIA0KICAgIHByaW50Zigi
bGlzdGVuOiAlZCAlc1xuIiwgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7DQogDQogIHNpZ2h1
cF9zZWVuID0gRkFMU0U7DQogIHNpZ25hbChTSUdIVVAsIHNpZ2h1cF9oYW5kbGVyKTsNCg0K
ICBjYWxsX3NlZW4gPSBGQUxTRTsNCiAgcGlkID0gZ2V0cGlkKCk7DQoNCiAgLyoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgKg0KICAgTm93
IHdhaXQgZm9yIGEgY2FsbCBvciBzaWdodXAsIGNhdXNpbmcgYSByZS1leGVjDQogICBBZnRl
ciBhIHJlLWV4ZWMgZm9sbG93aW5nIGEgY2FsbCwgdGhlcmUgYXJlIHR3bw0KICAgbGlzdGVu
IG9uIHBvcnQgOTk5IChuZXRzdGF0IC1hKQ0KICAgSW5jb21pbmcgY2FsbHMgbWF5IG9yIG1h
eSBub3Qgd29yay4NCiAgIA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKiovDQoNCiAgd2hpbGUoMSkgew0KICAgIEZEX1pFUk8oJnNlbGVjdF9s
aXN0ZW4pOw0KICAgIEZEX1NFVChzb2NrZmQsICZzZWxlY3RfbGlzdGVuKTsNCiAgICBpZiAo
Z2V0ZW52KCJFWEVDIikgIT0gTlVMTCkgew0KICAgICAgICBwcmludGYoIm5ldHN0YXQgLWEg
d2lsbCBzaG93IHR3byBsaXN0ZW4gb24gcG9ydCA5OTlcbiIpOw0KICAgIH0NCiAgICBlbHNl
IGlmIChjYWxsX3NlZW4gPT0gRkFMU0UpIHsgDQogICAgICAgIHByaW50ZigidGVsbmV0IGxv
Y2FsaG9zdCA5OTlcbiIpOw0KICAgIH0NCiAgICBlbHNlIA0KICAgICAgICBwcmludGYoImtp
bGwgLUhVUCAlZFxuIiwgcGlkKTsNCiAgICBsY291bnQgPSBzZWxlY3Qoc29ja2ZkICsgMSwg
JnNlbGVjdF9saXN0ZW4sIE5VTEwsIE5VTEwsIE5VTEwpOw0KICAgIGlmIChsY291bnQgPT0g
MSkgew0KICAgICAgcGVlcl9zaXplID0gc2l6ZW9mKHBlZXIpOw0KICAgICAgbmV3c29ja2Zk
ID0gYWNjZXB0KHNvY2tmZCwgKHN0cnVjdCBzb2NrYWRkciAqKSAmcGVlciwgJnBlZXJfc2l6
ZSk7DQogICAgICBpZiAobmV3c29ja2ZkIDwgMCkgew0KICAgICAgICBwcmludGYoImFjY2Vw
dDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7DQogICAgICB9DQogICAgICBlbHNlIHsNCiAg
ICAgICAgcHJpbnRmKCJHb3QgYSBjYWxsXG4iKTsNCiAgICAgICAgY2FsbF9zZWVuID0gVFJV
RTsNCiAgICAgICAgb3V0ZmQgPSBmZG9wZW4obmV3c29ja2ZkLCAid2IiKTsNCiAgICAgICAg
aWYgKG91dGZkID09IE5VTEwpDQogICAgICAgICAgICBwcmludGYoImZkb3BlbjogJXNcbiIs
IHN0cmVycm9yKGVycm5vKSk7DQogICAgICAgIGlmIChmb3JrKCkgPT0gMCkgew0KICAgICAg
ICAgIHNpZ25hbChTSUdIVVAsIFNJR19JR04pOw0KICAgICAgICAgIGNsb3NlKHNvY2tmZCk7
ICAgICAvKiBDbG9zZSB0aGUgbGlzdGVuaW5nIHNvY2tldCAqLw0KICAgICAgICAgIGZwcmlu
dGYob3V0ZmQsICJxdWl0IHdpdGggRVNDICBDVFJMLV0gYW5kIHF1aXQgdGhlblxuIik7DQog
ICAgICAgICAgZnByaW50ZihvdXRmZCwgImtpbGwgLUhVUCAlZFxuIiwgcGlkKTsNCiAgICAg
ICAgICBmcHJpbnRmKG91dGZkLCAibmV0c3RhdCAtYSB3aWxsIHNob3cgdHdvIGxpc3RlbiBv
biBwb3J0IDk5OVxuIik7DQogICAgICAgICAgZmZsdXNoKG91dGZkKTsNCiAgICAgICAgICAv
KiBJbiB0aGlzIGRlbW8gd2Ugc2xlZXAuIEluIHJlYWxpdHkgdGhlIGNoaWxkIGlzIHdvcmtp
bmcgKi8NCiAgICAgICAgICBzbGVlcCg2MCk7DQogICAgICAgICAgcHJpbnRmKCJDaGlsZCBl
eGl0aW5nXG4iKTsNCiAgICAgICAgICBmY2xvc2Uob3V0ZmQpOyAgICAvKiBDbG9zZSB0aGUg
YWNjZXB0ZWQgc29ja2V0ICovDQogICAgICAgICAgZXhpdCgwKTsNCiAgICAgICAgfQ0KICAg
ICAgICBlbHNlIHsNCiAgICAgICAgICBmY2xvc2Uob3V0ZmQpOyAgICAvKiBDbG9zZSB0aGUg
YWNjZXB0ZWQgc29ja2V0ICovDQogICAgICAgIH0NCiAgICAgIH0NCiAgICB9DQogICAgZWxz
ZSBpZiAoc2lnaHVwX3NlZW4gPT0gVFJVRSkgew0KICAgICAgaWYgKGNhbGxfc2VlbiA9PSBU
UlVFKSBwdXRlbnYoIkVYRUM9MSIpOw0KICAgICAgY2xvc2Uoc29ja2ZkKTsgICAgICAgIC8q
IENsb3NlIHRoZSBsaXN0ZW5pbmcgc29ja2V0ICovDQogICAgICBzaWduYWwoU0lHSFVQLCBT
SUdfSUdOKTsNCiAgICAgIHByaW50ZigiU2lnbmFsIHNlZW4uIEV4ZWNpbmdcbiIpOw0KICAg
ICAgZXhlY3YoYXJndlswXSwgYXJndik7DQogICAgfQ0KICAgIGVsc2UgcHJpbnRmKCJFcnJv
ciAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsNCiAgfQ0KfQ0K
--------------5EF47D03C81762295A8FF33B
Content-Type: text/plain; charset=us-ascii
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
--------------5EF47D03C81762295A8FF33B--
- Raw text -