MPS issue job003469

TitleCET can't safely make use of the top 2GiB of memory on 32-bit Windows
Statusclosed
Priorityessential
Assigned userRichard Brooksby
OrganizationRavenbrook
DescriptionCET would like to make use of the extra 1GiB of memory on 32-bit Windows (2GiB when on 32-bit emulation on 64-bit windows) provided by the LARGEADDRESSAWARE option. However, some of its third party DLLs crash if they allocate objects above 0x80000000.
AnalysisWhen on 32-bit Windows, the MPS could allocate the top 1GiB of address space, forcing all other allocations below 0x80000000. Similarly, when on WOW64, it could allocate the top 2GiB. It can do this by using the MEM_TOP_DOWN option to VirtualAlloc when creating an arena chunk.
How foundunknown
Evidence"First tests with /LARGEADDRESSAWARE" <https://info.ravenbrook.com/mail/2012/09/14/07-51-31/0/>
Observed in1.108.0
Created byRichard Brooksby
Created on2013-05-01 16:32:29
Last modified byGareth Rees
Last modified on2013-06-04 15:18:19
History2013-05-01 RB Created to connect related Perforce work with justification.

Fixes

Change Effect Date User Description
180929 closed 2013-02-07 16:41:33 Richard Brooksby Restricting MEM_TOP_DOWN use to 32-bit Windows.
180920 closed 2013-02-06 17:51:47 Richard Brooksby Patching the main Windows VirtualAlloc to allocate address space from the top down, allowing an executable linked with /LARGEADDRESSAWARE to use the top one or two GiB of address space.
This is a patch for CET that will need to be generalised when merging.