Mike Hearn schrieb:
On Fri, 14 Oct 2005 19:02:02 +0200, Christoph wrote:
WoW really seems to relay on this magic address.
And yet it works in Windows which presumably does not have any WoW specific appgoo in it. So I imagine it's actually some weird quick of the NT kernel we're not emulating correctly here, but Alexandre is the true man to ask.
I tested my patch yesterday for about 4 hours and I only had one crash. Game freezed. Got lock in ntdll, no run out of memory!
Here is maybe a clue. Can anyone outline the role of imm32.dll and if it can be involved in our problem?
I looked at the output, and this catched my eye. Here I started WoW without any wine hacks, just with my dropped MESSAGE lines, so with mouse click problem :
trace:loaddll:load_builtin_dll Loaded module L"C:\windows\system\opengl32.dll" : builtin EXE not mmap 0xbfe20000, 16384, 7, 50, -1 = 0xbfe20000 trace:loaddll:load_native_dll Loaded module L"C:\windows\system\IMM32.dll" : native EXE not mmap 0x10000000, 430080, 7, 50, -1 = 0x10000000 trace:loaddll:load_native_dll Loaded module L"E:\World of Warcraft\DivxDecoder.dll" : native not mmap 0x7ff90000, 4096, 3, 50, -1 = 0x7ff90000 trace:loaddll:load_builtin_dll Loaded module L"C:\windows\system\winmm.dll" : builtin EXE set mmap (nil), 655360, 7, 34, -1 = 0x7fedd000
imm32 is the only one loaded in 0x1xxxxxxx. I tried buildin and native version, no difference. later, WoW uses adresses like this:
not mmap 0x7d601000, 32768, 0, 50, -1 = 0x7d601000 not mmap 0x79b20000, 4096, 0, 50, -1 = 0x79b20000 not mmap 0x79921000, 1048576, 0, 50, -1 = 0x79921000 not mmap 0x6249d000, 4096, 0, 50, -1 = 0x6249d000 not mmap 0x7d641000, 212992, 0, 50, -1 = 0x7d641000 ...
mouse clicks do not work.
Here with my patch, mouse working
trace:loaddll:load_builtin_dll Loaded module L"C:\windows\system\opengl32.dll" : builtin not mmap 0xbfe20000, 16384, 7, 50, -1 = 0xbfe20000 trace:loaddll:load_native_dll Loaded module L"C:\windows\system\IMM32.dll" : native set mmap 0x10246000, 495616, 7, 50, -1 = 0x10246000 trace:loaddll:load_native_dll Loaded module L"E:\World of Warcraft\DivxDecoder.dll" : native not mmap 0x7ff90000, 4096, 3, 50, -1 = 0x7ff90000 trace:loaddll:load_builtin_dll Loaded module L"C:\windows\system\winmm.dll" : builtin set mmap 0x102bf000, 655360, 7, 50, -1 = 0x102bf000 not mmap 0x7ff60000, 4096, 3, 50, -1 = 0x7ff60000
and later game running:
not mmap 0x107c5000, 0, 0, 50, -1 = 0x107c5000 not mmap 0x1074d000, 4096, 0, 50, -1 = 0x1074d000 not mmap 0x1074e000, 4096, 0, 50, -1 = 0x1074e000 not mmap 0x1074c000, 4096, 0, 50, -1 = 0x1074c000 not mmap 0x10749000, 0, 0, 50, -1 = 0x10749000 not mmap 0x122ed000, 4096, 0, 50, -1 = 0x122ed000 not mmap 0x122ee000, 4096, 0, 50, -1 = 0x122ee000 not mmap 0x122ec000, 4096, 0, 50, -1 = 0x122ec000 not mmap 0x122e9000, 0, 0, 50, -1 = 0x122e9000 not mmap 0x107bf000, 4096, 0, 50, -1 = 0x107bf000 not mmap 0x107be000, 4096, 0, 50, -1 = 0x107be000 ...
just for fun I tested with 0x20000000. imm32.dll still at 0x10000000, wow uses 0x2xxxxxxx, mouse working.
0x30000000 works either, all other segfault or game starts but crash while entering the world.
chris