[Bug 29168] Star Wars: The Old Republic game client hangs at intro splash

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Dec 18 04:34:13 CST 2011


Xolotl Loki <xoloki at gmail.com> changed:

           What    |Removed                     |Added
                 CC|                            |xoloki at gmail.com

--- Comment #45 from Xolotl Loki <xoloki at gmail.com> 2011-12-18 04:34:13 CST ---
I also tried to run through strace, and failed to complete login while doing
so.  So I looked over WS2_recv_base, and noticed something.  The function has
standard exit point labels (exit and error), but those are NOT the only exit
points; there are two places where naked return is called, one each for success
and error cases.

So I added some extra TRACE logging; I'll attach the diff to the bug.  I log
the return value of WS2_recv, and all the exit points.  I also encode the
socket value to make sure I can correlate successive log lines properly.

Here's the relavant bits:

trace:winsock:WS_connect socket 0164, ptr 0xa1cdffc { family AF_INET, address, port 8995 }, length 16
trace:winsock:WS2_recv_base socket 0164, wsabuf 0xa1cdfcc, nbufs 1, flags 0,
from (nil), fromlen -1, ovl 0x57122e70, func (nil)
trace:winsock:WS2_recv_base fd=223, options=0
trace:winsock:WS2_recv_base socket 0164 -> WS2_recv returned -1 bytes, errno 11
trace:winsock:WS2_recv_base socket 0164 -> returning SOCKET_ERROR, wsaErrno 259
trace:winsock:WS_shutdown socket 0164, how 2 0
trace:winsock:WS2_register_async_shutdown s 356 type 1
trace:winsock:WS_closesocket socket 0164

So when we try to connect to the server, we call 


which returns EAGAIN.  We then go into the 

        if ((lpOverlapped || lpCompletionRoutine) &&
             !(options & (FILE_SYNCHRONOUS_IO_ALERT |

branch, which always returns SOCKET_ERROR if WS2_recv returned -1.  Is this
correct behavior?  I don't understand enough of the context to tell.

Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.

More information about the wine-bugs mailing list