mldonkey-bugs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Mldonkey-bugs] Orphaned file descriptor bug


From: Shunga
Subject: [Mldonkey-bugs] Orphaned file descriptor bug
Date: Thu, 23 Dec 2004 09:58:26 -0600

I don't know the source code or OCAML well enough to suggest exactly why it is happening or the best way to fix it, but I have done enough debugging to figure out the cause of the probem. I used 2.5-22 mlnet source and ocaml 3.07-p12. There are two issues:

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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]