[Bug 44375] Some 32-bit games crash when they exhaust their VM addressing space (Path of Exile, Dragon Age: Origins, NecroVisioN)

WineHQ Bugzilla wine-bugs at winehq.org
Sun Jan 31 16:52:10 CST 2021


https://bugs.winehq.org/show_bug.cgi?id=44375

--- Comment #23 from Konstantin Kharlamov <hi-angel at yandex.ru> ---
So, about that 2.6G VSS. While investigating I contacted Wine developers, and
they explained what's going on.

It turns out, by default Windows 32-bit executables aren't able to adderss more
than 2G of memory. The ones that do must have LAA bit set in their PE header.

The 2G VSS that is seen by default is simply a reservation to make sure that if
an app tries to allocate more than 2G of memory it'll get an out-of-memory
signal.

So, for LAA-less games people could simply set the LAA bit on the binary, thus
unlocking access to full 4G of memory. You can do that with `radare2` package,
for example. Although, it is worth mentioning, that I read a horror story,
where many Windows developers have treated pointers as signed entities, which
is the reason LAA isn't set by default. Which would mean it may misbehave or
crash upon accessing high 2G of memory. Idk if that's true, but you never know…
So, make sure to have backup.

With all that said, there's still an oddity left: for my Mass Effect binary,
even upon setting the LAA bit, WINE still reserves 2G of VSS. Unless I
misunderstand something, this probably should not happen. Gotta look into it.

-- 
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