|
From: | Shunga |
Subject: | [Mldonkey-bugs] Orphaned file descriptor bug |
Date: | Thu, 23 Dec 2004 09:58:26 -0600 |
1. The first is in src/daemon/common/commonChat.ml in the routine send_paquet_to_mlchat. The Unix.connect fails with "Connection refused : connect" but the error is not trapped and the socket is not closed. Trapping the error and closing the socket fixes this one.
2. The rest of the orphaned file descriptors is in src/utils/net/tcpServerSocket.ml in the routine tcp_handler. The Unix.accept fails with Exception tcp_handler: failed: Address family not supported by protocol family" but apparently has created a new socket which is never closed. If I trap the exception and issue the following "close t (Closed_for_error (Printexc2.to_string e));" I find that lsof only shows one orphaned socket after hours of running. I assume that issuing "close t" closes the original socket that is being listened to and this stop this Unix.accept from being called again. I don't know why it is getting this error unless perhaps the previous bind failed and that wasn't trapped, but maybe there is some other reason.
So if a developer who knows the code and OCAML can fix these two problems and get the patches in the current release then that should solve the orhpaned file descriptor problem which causes mlnet to hang after running for some hours
[Prev in Thread] | Current Thread | [Next in Thread] |