http://bugs.winehq.org/show_bug.cgi?id=24357
--- Comment #3 from michael 415fox@gmail.com 2010-09-13 16:27:55 CDT --- (In reply to comment #2)
(In reply to comment #1)
Created an attachment (id=30729)
--> (http://bugs.winehq.org/attachment.cgi?id=30729) [details] [details]
console log when Network Status selected
This is the console log after I started the application and clicked on Help >> Network Status... The connection to the servers shows 0% and all icmp packages are shown as lost.
In the log the repeated winediag:ICMPCreateFile Failed... messages indicate a permission issue.
Looks similar to bug #8332 and bug #22786.
Tested with the current git (wine-1.3.2-157-g2c4b081) on Fedora 13.
I was thinking permissions or capabilities as the issue, but usually the way you can confirm this is by running it as root. That is the case in bug 22786. However, in this case, when I run as root, the problem persists.
As for bug 8332 -- it may be the same, but it's been around since 2007 which is not a good sign.
I'll try an strace and report back.
Here's what I learned from strace:
The Network Status is it's own program called PokerStars/Tracer.exe so it's easier to debug just running "wine Tracer.exe" from the PokerStars directory.
There are no permissions problems (at least, not while running as root).
Tracer.exe uses ICMP.DLL
Tracer.exe (or ICMP.DLL) creates a bunch of threads. Each thread opens an ICMP socket with: [pid 14388] socket(PF_INET, SOCK_RAW, IPPROTO_ICMP <unfinished ...> [pid 14388] <... socket resumed> ) = 23
The socket is opened successfully. Each process probably corresponds to one ping operation.
Later the socket is shutdown but now there's an error: [pid 14404] shutdown(23, 2 /* send and receive */) = -1 ENOTCONN (Transport endpoint is not connected)
I figure that ICMP.DLL (ICMPCreateFile) must work sometimes or we'd have more bug reports about this. Maybe the issue is that it doesn't work within a thread?
I'm not a windows programmer so I don't really know how threads or sockets work under windows. It would be nice if we could get a windows programmer to create a test case which:
1. Use ICMPCreateFile to do a ping in the main process. 2. Do an exec (or the windows equivalent) 3. Try ICMPCreateFile in the child process 2. Do a fork (or whatever windows equivalent) 3. Try ICMPCreateFile in the thread.
If my theory is right then ICMPCreateFile will succeed in the main process and succeed in the child process but fail in the child thread.