https://bugs.winehq.org/show_bug.cgi?id=54829
François Gouget fgouget@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |fgouget@codeweavers.com
--- Comment #5 from François Gouget fgouget@codeweavers.com --- What happens is that the 64-bit version of VCarve tries to write to the kernelbase.dll memory, probably to hook some APIs, and fails because kernelbase.dll is mapped read-only. Note that kernelbase.dll is also mapped read-only on Windows.
This happens shortly after the GetSystemWow64DirectoryA() call so hacking it to mark kernelbase.dll as writable allows it to start up.
Also GetSystemWow64DirectoryA() returns ERROR_CALL_NOT_IMPLEMENTED on 32-bit Windows so hacking the 64-bit version to return that probably causes VCarve to take the working 32-bit code path.
Furthermore VCarve calls VirtualProtect() to mark all of its own executable's segments in memory as writable. So one would expect it to do so for kernelbase.dll too in Wine...