http://bugs.winehq.org/show_bug.cgi?id=10514
Summary: BatteryFormulaRacing: Crash on Unimplemented function wsock32.dll.AcceptEx Product: Wine Version: CVS/GIT Platform: PC URL: http://www.batterydrink.com/formularacing/download/Batte ryFormulaRacing.exe OS/Version: Linux Status: UNCONFIRMED Keywords: download Severity: normal Priority: P2 Component: wine-net AssignedTo: wine-bugs@winehq.org ReportedBy: xerox_xerox2000@yahoo.co.uk
Hi, a user submitted this application into the appdb with garbage test results. I tried it, and it crashes/hangs with the the message of the summary.
http://bugs.winehq.org/show_bug.cgi?id=10514
--- Comment #1 from Lei Zhang thestig@google.com 2007-11-20 13:21:48 --- umm, isn't this a dup of bug 9787?
http://bugs.winehq.org/show_bug.cgi?id=10514
Kai Blin blin@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |DUPLICATE
--- Comment #2 from Kai Blin blin@gmx.net 2007-11-20 13:29:01 --- Yup, marking duplicate.
*** This bug has been marked as a duplicate of bug 9787 ***
http://bugs.winehq.org/show_bug.cgi?id=10514
Louis Lenders xerox_xerox2000@yahoo.co.uk changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |UNCONFIRMED Resolution|DUPLICATE |
--- Comment #3 from Louis Lenders xerox_xerox2000@yahoo.co.uk 2007-11-20 13:41:06 --- As far as i can see it's not an exact dupe. This app hits the unimplemented function in wsock32.dll, and not in mswsock.dll, like in #9787. I guess they are really the same function, but forwarding didn't work for me, so it's really different bug. Correct me if i'm wrong....
http://bugs.winehq.org/show_bug.cgi?id=10514
Juan Lang juan_lang@yahoo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |DUPLICATE
--- Comment #4 from Juan Lang juan_lang@yahoo.com 2007-11-20 15:13:16 --- Well, it's just a stub in mswsock, so I'd still say it's a dup.
*** This bug has been marked as a duplicate of bug 9787 ***
http://bugs.winehq.org/show_bug.cgi?id=10514
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net
--- Comment #5 from Anastasius Focht focht@gmx.net 2007-11-20 15:17:05 --- Hello,
--- quote --- I guess they are really the same function, but forwarding didn't work for me, so it's really different bug. Correct me if i'm wrong.... --- quote ---
Yes, both wsock32.dll.AcceptEx and wsock32.dll.GetAcceptExSockaddrs are forwarded to MSWSOCK.dll The game imports these two APIs by ordinal.
You probably have something like this in place:
--- snip wsock32.spec --- 1141 stdcall AcceptEx(long long ptr long long long ptr ptr) mswsock.AcceptEx 1142 stdcall GetAcceptExSockaddrs(ptr long long long ptr ptr ptr ptr) mswsock.GetAcceptExSockaddrs --- snip wsock32.spec ---
That currently won't work - even if wine mswsock.dll implements AcceptEx and GetAcceptExSockaddrs.
mswsock.dll is not yet loaded at the time the loader tries to resolve the forwarded exports. This is a wine PE loader problem. It needs some kind of multi pass (recursive) to resolve all forwarders.
Regards
http://bugs.winehq.org/show_bug.cgi?id=10514
--- Comment #6 from Louis Lenders xerox_xerox2000@yahoo.co.uk 2007-11-20 15:21:21 --- Ok, i'm not going to reopen this again if you keep it closing, but from the mswsock spec file it reads:
@ stdcall AcceptEx(long long ptr long long long ptr ptr)
Ok, it only prints a simple fixme, but application don't crash like "Call to unimplemented function AcceptEx" etc when they hit it.
From wsock32.spec:
1141 stub AcceptEx
I get a crash "Call to unimplemented function AcceptEx"
I was able to get the app running by just copying the "implementation" for AcceptEx from mswsock to wsock32, and return a simple TRUE instead of FALSE. Anyway, if no-one bothers , i'll stop wasting mine and yours time....
http://bugs.winehq.org/show_bug.cgi?id=10514
--- Comment #7 from Dmitry Timoshkov dmitry@codeweavers.com 2007-11-21 03:31:34 --- (In reply to comment #5)
--- snip wsock32.spec --- 1141 stdcall AcceptEx(long long ptr long long long ptr ptr) mswsock.AcceptEx 1142 stdcall GetAcceptExSockaddrs(ptr long long long ptr ptr ptr ptr) mswsock.GetAcceptExSockaddrs --- snip wsock32.spec --- That currently won't work - even if wine mswsock.dll implements AcceptEx and GetAcceptExSockaddrs. mswsock.dll is not yet loaded at the time the loader tries to resolve the forwarded exports. This is a wine PE loader problem. It needs some kind of multi pass (recursive) to resolve all forwarders.
This problem is described in the bug 9420, there is a test case there as well.
http://bugs.winehq.org/show_bug.cgi?id=10514
--- Comment #8 from Alexandre Julliard julliard@winehq.org 2007-11-21 07:51:10 --- Bug 9420 is needed for broken Windows binaries, but there's no reason to require it for builtins, those can be built with correct imports.
http://bugs.winehq.org/show_bug.cgi?id=10514
--- Comment #9 from Anastasius Focht focht@gmx.net 2007-11-21 09:04:30 --- Hello,
--- quote ---- Bug 9420 is needed for broken Windows binaries, but there's no reason to require it for builtins, those can be built with correct imports. --- quote ----
Could you elaborate this? In what kind are windows dlls broken when they use forwarders to other than to already loaded dlls? It's pretty standard to move functionality between dlls. The forwarding stuff is actually better than using stub functions in one dll that calls the function in the other dll, it prevents explicit load time dependencies (by the "intermediate" stub). With the forwarder the "new" dll is not loaded unless the app actually asks for the forwarded function from the "old" dll.
The game imports API from wsock32.dll (winsock v1) and ws2_32.dll (winsock v2).
wsock32.dll has forwarders to mswsock.dll which is not explicitly pulled in (by earlier imports). Even in wine the loader must take care of those "hidden" dll references contained in forwarded APIs. There is no difference between builtins and their native counterparts when it comes to resolving forwarded exports or am I missing something?
Regards
http://bugs.winehq.org/show_bug.cgi?id=10514
--- Comment #10 from Alexandre Julliard julliard@winehq.org 2007-11-21 09:28:09 --- There's no difference, but with builtins since we control the imports we can make sure that the target dll is imported.
Yes, we could implement lazy forwards and not import the target dll unless the entry point is used, which is essentially what bug 9420 is about. For builtins there are very few cases where that would make any difference, so it's not worth the trouble; it's only because native dlls now start to use that mechanism that we need to implement it.
http://bugs.winehq.org/show_bug.cgi?id=10514
Louis Lenders xerox_xerox2000@yahoo.co.uk changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|DUPLICATE |FIXED
--- Comment #11 from Louis Lenders xerox_xerox2000@yahoo.co.uk 2007-11-21 10:13:03 --- Ok, though this bug has been resolved twice as duplicate, it's actually fixed by Alexandre's commit today http://www.winehq.org/pipermail/wine-cvs/2007-November/038220.html , so i'm resolving it as such. The updating process now goes fine, and the app tries to start (then runs into d3d -bug, but that's different stuff). Thanks for the fix.
http://bugs.winehq.org/show_bug.cgi?id=10514
Louis Lenders xerox_xerox2000@yahoo.co.uk changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #12 from Louis Lenders xerox_xerox2000@yahoo.co.uk 2007-11-21 10:13:36 --- closing
http://bugs.winehq.org/show_bug.cgi?id=10514
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Version|CVS/GIT |unspecified
http://bugs.winehq.org/show_bug.cgi?id=10514
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |029a74e56e6d570e3a7e64b99ba | |c886b41c51a09 Version|unspecified |0.9.49.