Page 3 of 4
VO 32 Bit limitations
Posted: Mon Jul 23, 2018 2:43 pm
by Jamal
Are you using VO 2.8 SP4b (2838) ?
VO 32 Bit limitations
Posted: Mon Jul 23, 2018 2:45 pm
by ArneOrtlinghaus
Yes, Right VO 2.8 SP4b (2838)
Arne
VO 32 Bit limitations
Posted: Mon Jul 23, 2018 3:09 pm
by Jamal
I just built a console app based on the VO wizard and made LWA with my C# code.
See attachment LMA.zip. It contains (console1.exe and vo28run.dll),
Can you test it on affected machines?
Jamal
VO 32 Bit limitations
Posted: Mon Jul 23, 2018 3:21 pm
by ArneOrtlinghaus
Hi Jamal,
it happens the same as with my largeaddressaware programs:
On the affected machine the program crashes with the same error as reported, on my machine it works correctly.
It would be interesting to know what happens in the Vo28run!_ConvertResult function and what for it is called in the Exe program.
Arne
VO 32 Bit limitations
Posted: Mon Jul 23, 2018 3:28 pm
by Jamal
Yes, since the VO runtime is not in the SDK, may be Robert can shed some light on the internals of the __ConvertResult() function.
Jamal
VO 32 Bit limitations
Posted: Mon Jul 23, 2018 4:35 pm
by Jamal
Since LMA also works on DLLs, what if you make the vo28run.dll LMA?
On my machine it works fine.
VO 32 Bit limitations
Posted: Mon Jul 23, 2018 4:56 pm
by ArneOrtlinghaus
I thought that the Exe program decides about Large address aware only. But changing the flag in the VO28run did not change anything.
I have found the reason why the program did not start on the two machines
We added the registry entry
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management]
"AllocationPreference"=dword:00100000
This is for development testing working of 4 GB usage because it fills memory from top to down.
For some reasons on my machine this switch has only been recognized by Windows when I restarted Windows for the 3rd or 4th time.
Now I have switched off the fast start up by hybernating and Windows recognizes the change of the switch with every windows restart.
It shows that something is not working completely correctly with the large address usage and we have to pay attention. Also trying with X# applications does not work completely. The program starts, but not all dlls are loaded correctly, the string ressources could not be loaded.
Arne
VO 32 Bit limitations
Posted: Mon Jul 23, 2018 5:31 pm
by Jamal
So, without that registry flag, is it working fine?
Also for X#, remember that LWA works only on 32-bit apps (x86). Just wondering!
VO 32 Bit limitations
Posted: Mon Jul 23, 2018 8:25 pm
by Chris
I think this had to do with converting data to PSZ strings or something like that, but do not know when and how it is called. Robert is currently offline for a few days, maybe he remembers better about this and will give his insight as soon as he's back online.
Chris
VO 32 Bit limitations
Posted: Tue Jul 24, 2018 6:22 am
by ArneOrtlinghaus
Yes, without the registry setting the program works. The problems with the registry setting show that more space than 2 GB can be used, but there may be limits somewhere in region above 2 GB with certain functions because of some restrictions as the issue I experienced. That's why in the description of largeaddressaware everywhere is written: Test carefully, there may be program parts that do not support pointers above 2GB, and so on,...
Nevertheless it is a nice feature - Better that the program crashes somewhere later and not immediately when reaching 2 GB.
Arne