http://bugs.winehq.org/show_bug.cgi?id=27337
Summary: Raw sockets aren't closed correctly in ICMP monitoring programs Product: Wine Version: 1.2.2 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: berroll@mail.ru
Created an attachment (id=34964) --> (http://bugs.winehq.org/attachment.cgi?id=34964) Command line with argument, wine log, netstat output
The problem has occurred with the program NetMap, which is used for the network monitoring (pinging of multiple hosts in cyclic manner). [http://www.imach.uran.ru/netmap/index.html] NetMap under wine is working several minutes, then hangs with an error "Too many open files". Using the FAQ at http://wiki.winehq.org/FAQ I have increased the open file limit by modifying /etc/security/limits.conf: * hard nofile 16384 * soft nofile 1024 This fix extended working time of NetMap but nevertheless, haven't cured program's hangs.
Also I noticed that during NetMap usage under wine the amount of opened connections is enormous and is increasing over time. Perhaps when it exceeds some limit program hangs. This may be a bug of wine with ICMP handling.
I've made a contact with the author of the program and he explained that NetMap opens raw socket for the ping request. This action is made using function IcmpCreateFile of the library icmp.dll. Then this socket is closed by the function IcmpCloseHandle from the same library. He is sure, that IcmpCloseHandle is called correctly and the code is executed correctly in Windows. NetMap author also mentioned that he tested NetMap and old version of wine (0.99.6) and never met this problem. But now he checked NetMap with newer version of wine and confirmed that this problem exists.
In order to check whether this problem is program-related or wine-related I also tried another program - MetaPing [http://www.hammer-software.com/metaping.shtml] It also performs pinging of multiple Internet hosts, like NetMap. And the problem was the same - enormous amount of opened connections, increasing over time.
It seems that IcmpCloseHandle is not correctly processed by wine, as these raw sockets remain opened.
I'm using Ubuntu Linux 10.04 (Lucid) and wine 1.2.2-0ubuntu2~lucid1 from official Ubuntu repository.
http://bugs.winehq.org/show_bug.cgi?id=27337
--- Comment #1 from Hans Leidekker hans@meelstraat.net 2011-05-30 10:54:00 CDT --- Created an attachment (id=34965) --> (http://bugs.winehq.org/attachment.cgi?id=34965) iphlpapi: Fix socket leak in IcmpCloseHandle.
Try this patch.
http://bugs.winehq.org/show_bug.cgi?id=27337
André H. nerv@dawncrow.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW CC| |nerv@dawncrow.de Ever Confirmed|0 |1
--- Comment #2 from André H. nerv@dawncrow.de 2011-05-30 11:56:11 CDT --- i sent a patch: http://www.winehq.org/pipermail/wine-patches/2011-May/102529.html
http://bugs.winehq.org/show_bug.cgi?id=27337
--- Comment #3 from André H. nerv@dawncrow.de 2011-05-30 12:05:15 CDT --- AAAH, sry Hans, didn't see your patch :(
http://bugs.winehq.org/show_bug.cgi?id=27337
André H. nerv@dawncrow.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #4 from André H. nerv@dawncrow.de 2011-05-30 13:03:28 CDT --- Haha, and AJ got the same idea :) so it most likely is fixed in current git, otherwise reopen
http://bugs.winehq.org/show_bug.cgi?id=27337
--- Comment #5 from Austin English austinenglish@gmail.com 2011-05-30 16:15:49 CDT --- Fixed by http://source.winehq.org/git/wine.git/commitdiff/7165e22d7282df9ac53d727ed1c...
http://bugs.winehq.org/show_bug.cgi?id=27337
--- Comment #6 from Berroll berroll@mail.ru 2011-05-31 01:54:24 CDT --- (In reply to comment #5)
Fixed by http://source.winehq.org/git/wine.git/commitdiff/7165e22d7282df9ac53d727ed1c...
First of all thanks for the prompt reply. As I presume, git - is a development version of wine, still in testing progress. Sorry, I'm not a programmer, so I'm slightly confused what should I do to apply this patch. I haven't even found icmp.c in my filesystem. Thanks in advance for any piece of advice.
http://bugs.winehq.org/show_bug.cgi?id=27337
Jerome Leclanche adys.wh@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |adys.wh@gmail.com
--- Comment #7 from Jerome Leclanche adys.wh@gmail.com 2011-05-31 04:08:28 CDT --- (In reply to comment #6) It will be fixed next release (in less than two weeks). If it's not, you may reopen this bug.
If you can't wait and wish to use git, this should explain how it works: http://wiki.winehq.org/GitWine
http://bugs.winehq.org/show_bug.cgi?id=27337
--- Comment #8 from Berroll berroll@mail.ru 2011-05-31 05:17:38 CDT --- Actually, I can wait - I have no habit to install packages which are in testing phase. So this git will become Wine 1.3.22, when its testing will be finished?
I thought it wouldn't be necessary to reinstall wine completely. As far as I understand, I must install dev packages by 'apt-get build-dep wine1.2' [http://wiki.winehq.org/Recommended_Packages], then find icmp.c somewhere in these installed files, apply a patch on it, compile it with gcc and then put the resulting file overwriting the existing unpatched library. This way I'm replacing only one file instead of complete re-installation. Everything above is only my assumption. If I'm wrong please give me a hint.
http://bugs.winehq.org/show_bug.cgi?id=27337
Alex Bradbury asb@asbradbury.org changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |asb@asbradbury.org
--- Comment #9 from Alex Bradbury asb@asbradbury.org 2011-05-31 09:35:45 CDT --- (In reply to comment #8)
I thought it wouldn't be necessary to reinstall wine completely. As far as I understand, I must install dev packages by 'apt-get build-dep wine1.2' [http://wiki.winehq.org/Recommended_Packages], then find icmp.c somewhere in these installed files, apply a patch on it, compile it with gcc and then put the resulting file overwriting the existing unpatched library.
These questions are probably best answered either on the Wine users forum (forum.winehq.org) or in the #winehq IRC channel on Freenode.
In there interests of trying to be a bit helpful, see below. If it's not what you want/doesn't work then please seek support outside of this bug report:
If I were you, I'd just build wine from git HEAD with `apt-get build-dep wine1.3 wine1.3-dev`, then check out the wine repo as described http://wiki.winehq.org/RegressionTesting with `git clone git://source.winehq.org/git/wine.git` and then ./configure && make. Then you can run that version of wine by using ~/path/to/wine/checkout/wine.
http://bugs.winehq.org/show_bug.cgi?id=27337
--- Comment #10 from Berroll berroll@mail.ru 2011-05-31 10:00:56 CDT --- OK. Thanks everybody for the help.
http://bugs.winehq.org/show_bug.cgi?id=27337
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #11 from Alexandre Julliard julliard@winehq.org 2011-06-10 13:18:15 CDT --- Closing bugs fixed in 1.3.22.
https://bugs.winehq.org/show_bug.cgi?id=27337
André H. nerv@dawncrow.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |7165e22d7282df9ac53d727ed1c | |3fdd658ccd5f8