On Oct 2, 2006, at 12:49 PM, Robert Shearman wrote:
Nick Burns wrote:
All the following have this VM ~=4GB on startup -- its not a
leaking problem... (afaict)
OGL/D3D -- WinRAR, GTAVC, Tribes2, (FlatOutDemo -- even thou it
dies on startup now -- still gets to ~4GB), SHOGO
NON-GL -- cmd (not even using X11), winecfg, StreamDown, MS VC++
6, MS+Connentix VPC (even thou it uses a driver and will not start
correctly), Shogo (start screen)
---
It just plain takes too much mem -- then dies due to the OS
saying ....no more....
(I will have to test top at some point...)
Does Linux have the same mem problem? -- does top show like 4GB of
VSIZE on app start?
The numbers seem bogus since 32-bit apps can only take up 4Gb of
VM. Wine does reserve 1.5Gb of VM on startup to ensure no system
libraries are present in the area needed for Win32 apps and libraries.
And Mac OS X reserves another ~0.5GB of the VM address space for
"submaps". These are areas of VM that are reserved for the system
libraries to be loaded into. See the "-submap" explanation in the
man page for the vmmap tool: <http://developer.apple.com/
documentation/Darwin/Reference/ManPages/man1/vmmap.1.html>.
In fact, vmmap is useful for investigating this issue. The command
"vmmap -interleaved -w -submap <pid>" will show you the submaps.
Note that the submap address ranges overlap the specific loaded areas
that follow them. Adding "-allSplitLibs" will show the way the
submaps are divided up among libraries that aren't loaded but might
be. This also includes the unused split libraries in the subtotals
at the end of the report.
Running notepad and applying vmmap shows only about 95MB of unused
split libs. So, apparently, the half gig in submaps is actually
mostly used.
The other really big chunk of VM (after Wine) is labeled as "STACK
GUARD". I believe the intent of STACK GUARD space is to generate
exceptions (EXC_BAD_ACCESS / SIGSEGV) if a stack grows beyond its pre-
allocated bounds. It's another 1.5GB! This seems like the real
culprit. I think STACK GUARD pages should only show up in single-
page areas (4K) on either side of a stack. I'm seeing huge areas
(~240MB, ~250MB, and ~1GB). There's only one actual stack showing.
It's 8MB, between the 250MB guard and the 1GB guard.
Checking a normal Mac app (Mail) shows no such huge STACK GUARD areas
-- just a single 4K page below each actual stack.
I have no idea what's creating these huge stack guard areas.
-Ken