[Bug 30745] GOG.com version of Soulbringer crashes on startup (GetModuleHandleExW needs to support GET_MODULE_HANDLE_EX_FLAG_PIN)
wine-bugs at winehq.org
wine-bugs at winehq.org
Sat Oct 12 07:31:27 CDT 2013
http://bugs.winehq.org/show_bug.cgi?id=30745
Anastasius Focht <focht at gmx.net> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
CC| |focht at gmx.net
Component|-unknown |kernel32
Summary|Soulbringer, GOG version, |GOG.com version of
|crashes at start, no splash |Soulbringer crashes on
|screen even. |startup (GetModuleHandleExW
| |needs to support
| |GET_MODULE_HANDLE_EX_FLAG_P
| |IN)
Ever Confirmed|0 |1
--- Comment #7 from Anastasius Focht <focht at gmx.net> 2013-10-12 07:31:27 CDT ---
Hello folks,
confirming.
Bought the game for a few bucks just for analysis.
In short: There is an in-process patcher dll that requires to stay in memory
until the process exits (makes use of GET_MODULE_HANDLE_EX_FLAG_PIN flag which
Wine doesn't implement).
--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files/GOG.com/Soulbringer
...
$ WINEDEBUG=+tid,+seh,wine ./Soulbringer.exe
...
0009:trace:loaddll:load_native_dll Loaded L"C:\\Program
Files\\GOG.com\\Soulbringer\\PATCH.dll" at 0x3c0000: native
0009:trace:loaddll:load_native_dll Loaded L"C:\\Program
Files\\GOG.com\\Soulbringer\\data\\Stealth\\Render\\D3d6Lib.dll" at 0x10000000:
native
...
0009:fixme:module:GetModuleHandleExW should pin refcount for 0x3c0000
...
0009:trace:loaddll:free_modref Unloaded module L"C:\\Program
Files\\GOG.com\\Soulbringer\\data\\Stealth\\Render\\D3d6Lib.dll" : native
0009:trace:loaddll:free_modref Unloaded module L"C:\\Program
Files\\GOG.com\\Soulbringer\\PATCH.dll" : native
...
0009:trace:loaddll:load_native_dll Loaded L"C:\\Program
Files\\GOG.com\\Soulbringer\\PATCH.dll" at 0x3c0000: native
0009:trace:loaddll:load_native_dll Loaded L"C:\\Program
Files\\GOG.com\\Soulbringer\\D3d7Lib.dll" at 0x10000000: native
...
0009:fixme:module:GetModuleHandleExW should pin refcount for 0x3c0000
...
0009:trace:loaddll:free_modref Unloaded module L"C:\\Program
Files\\GOG.com\\Soulbringer\\D3d7Lib.dll" : native
0009:trace:loaddll:free_modref Unloaded module L"C:\\Program
Files\\GOG.com\\Soulbringer\\PATCH.dll" : native
0009:trace:loaddll:free_modref Unloaded module
L"C:\\windows\\system32\\dinput.dll" : builtin
0009:trace:loaddll:free_modref Unloaded module
L"C:\\windows\\system32\\winmm.dll" : builtin
0009:trace:loaddll:free_modref Unloaded module
L"C:\\windows\\system32\\msacm32.dll" : builtin
0009:trace:seh:raise_exception code=c0000005 flags=0 addr=0x3c2320 ip=003c2320
tid=0009
0009:trace:seh:raise_exception info[0]=00000000
0009:trace:seh:raise_exception info[1]=003c2320
0009:trace:seh:raise_exception eax=00000000 ebx=7ea69ec2 ecx=0033f8f8
edx=0016ed6d esi=0033f8f8 edi=00000000
0009:trace:seh:raise_exception ebp=0033ea68 esp=0033ea24 cs=0023 ds=002b
es=002b fs=0063 gs=006b flags=00010206
0009:trace:seh:call_stack_handlers calling handler at 0x5f492e0a code=c0000005
flags=0
...
--- snip ---
When being loaded, "PATCH.dll" inserts hooks at several locations in main
executable.
The game code eventually hits such a hook while the dll was already unloaded
(not pinned in memory).
MSDN for GetModuleHandleEx():
http://msdn.microsoft.com/en-us/library/windows/desktop/ms683200%28v=vs.85%29.aspx
Source:
http://source.winehq.org/git/wine.git/blob/c0e72bb3626a7ba8090ee07cc0aa88cd5c8b7f9e:/dlls/kernel32/module.c#l505
--- snip ---
505 BOOL WINAPI GetModuleHandleExW( DWORD flags, LPCWSTR name, HMODULE *module
)
506 {
...
538 if (status == STATUS_SUCCESS)
539 {
540 if (flags & GET_MODULE_HANDLE_EX_FLAG_PIN)
541 FIXME( "should pin refcount for %p\n", ret );
542 else if (!(flags & GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT))
543 LdrAddRefDll( 0, ret );
544 }
...
554 return (status == STATUS_SUCCESS);
555 }
--- snip ---
$ du -sh setup_soulbringer.exe
828M setup_soulbringer.exe
$ sha1sum setup_soulbringer.exe
5be1a70a24e37212bfeaa02a29d8d86af9cf2fca setup_soulbringer.exe
$ wine --version
wine-1.7.4
Regards
--
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