https://bugs.winehq.org/show_bug.cgi?id=44803
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net
--- Comment #5 from Anastasius Focht focht@gmx.net --- Hello folks,
I can't reproduce this. Multi-player games work fine with:
* Wine 3.4 (initially reported for) * Wine 3.7 * Wine 4.5 (most recent)
In your attached log it looks like that 'ws2_32.dll.WS_Bind' entry point has been corrupted. I've checked with my setup and don't see a reason why such thing could happen. That API entry doesn't get hooked by the game.
Are you sure the WINEPREFIX hasn't been reused with other software installations, or even worse infected with malware? Most malware (trojans) love to hook 'ws2_32.dll' .. for reasons ;-)
I run a special build which makes hooking of API entry points easier in case of no explicit hotpatch prolog. Various app/game hook engines struggle with Wine's default '-fPIC' entry code or (distro) Gcc settings such as '-fcf-protection' (ENDBR32).
Started multi-player game (Internet) and attached debugger:
--- snip --- $ winedbg Wine-dbg>info process pid threads executable (all id:s are in hex) 00000027 4 'explorer.exe' 0000000e 5 'services.exe' 00000020 4 _ 'winedevice.exe' 0000001b 3 _ 'plugplay.exe' 00000011 4 _ 'winedevice.exe' 00000008 15 'age2_x2.exe' 00000043 5 _ 'dplaysvr.exe'
Wine-dbg>attach 0x8
Wine-dbg>info thread process tid prio (all id:s are in hex) 00000008 (D) C:\Program Files\Microsoft Games\Age of Empires II\age2_x1\age2_x2.exe 0000004c 15 0000004b 0 00000049 0 00000042 1 00000041 1 00000040 0 0000003f 0 0000003e 15 0000003d 1 00000035 0 00000034 0 00000032 15 00000031 0 00000030 0 00000009 0 <==
Wine-dbg>info share Module Address Debug info Name (173 modules) PE 3b0000- 3bb000 Deferred dpnhpast PE 400000- 7e6000 Export age2_x2 PE f40000- ffa000 Deferred language_x1_p1 PE 9cb0000- 9d2a000 Deferred language PE 10000000-10053000 Deferred language_x1 PE 5df00000-5df16000 Deferred dpwsockx PE 5e080000-5e0bb000 Deferred dplayx ELF 7994a000-79a27000 Deferred crypt32<elf> -PE 79960000-79a27000 \ crypt32 ELF 79a27000-79ae2000 Deferred msvcrt<elf> -PE 79a50000-79ae2000 \ msvcrt ELF 79ae2000-79c00000 Deferred quartz<elf> -PE 79b10000-79c00000 \ quartz ELF 79db8000-7a800000 Deferred i965_dri.so ELF 7a800000-7a949000 Deferred opengl32<elf> -PE 7a840000-7a949000 \ opengl32 ...
Wine-dbg>disas WS_Bind
0x7deb9080 WS_bind [/home/focht/projects/wine/mainline-src-3.7/dlls/ws2_32/socket.c:3299] in ws2_32: leal 0x4(%esp),%ecx 0x7deb9084 WS_bind+0x4 [/home/focht/projects/wine/mainline-src-3.7/dlls/ws2_32/socket.c:3299] in ws2_32: andl $-16,%esp 0x7deb9087 WS_bind+0x7 [/home/focht/projects/wine/mainline-src-3.7/dlls/ws2_32/socket.c:3299] in ws2_32: pushl 0xfffffffc(%ecx) 0x7deb908a WS_bind+0xa [/home/focht/projects/wine/mainline-src-3.7/dlls/ws2_32/socket.c:3299] in ws2_32: pushl %ebp 0x7deb908b WS_bind+0xb [/home/focht/projects/wine/mainline-src-3.7/dlls/ws2_32/socket.c:3299] in ws2_32: movl %esp,%ebp 0x7deb908d WS_bind+0xd [/home/focht/projects/wine/mainline-src-3.7/dlls/ws2_32/socket.c:3299] in ws2_32: pushl %ebx 0x7deb908e WS_bind+0xe [/home/focht/projects/wine/mainline-src-3.7/dlls/ws2_32/socket.c:3299] in ws2_32: pushl %ecx 0x7deb908f WS_bind+0xf [/home/focht/projects/wine/mainline-src-3.7/dlls/ws2_32/socket.c:3299] in ws2_32: subl $0xd0,%esp 0x7deb9095 WS_bind+0x15 [/home/focht/projects/wine/mainline-src-3.7/dlls/ws2_32/socket.c:3299] in ws2_32: movl %ecx,%ebx 0x7deb9097 WS_bind+0x17 [/home/focht/projects/wine/mainline-src-3.7/dlls/ws2_32/socket.c:3300] in ws2_32: subl $4,%esp ... --- snip ---
The entry point is untouched and valid code. And yes, it gets called multiple times.
$ wine --version wine-4.5
Regards