VO 32 Bit limitations
VO 32 Bit limitations
Are you using VO 2.8 SP4b (2838) ?
- ArneOrtlinghaus
- Posts: 412
- Joined: Tue Nov 10, 2015 7:48 am
- Location: Italy
VO 32 Bit limitations
Yes, Right VO 2.8 SP4b (2838)
Arne
Arne
VO 32 Bit limitations
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
See attachment LMA.zip. It contains (console1.exe and vo28run.dll),
Can you test it on affected machines?
Jamal
- Attachments
-
- LMA.zip
- (251.98 KiB) Downloaded 74 times
- ArneOrtlinghaus
- Posts: 412
- Joined: Tue Nov 10, 2015 7:48 am
- Location: Italy
VO 32 Bit limitations
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
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
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
Jamal
VO 32 Bit limitations
Since LMA also works on DLLs, what if you make the vo28run.dll LMA?
On my machine it works fine.
On my machine it works fine.
- ArneOrtlinghaus
- Posts: 412
- Joined: Tue Nov 10, 2015 7:48 am
- Location: Italy
VO 32 Bit limitations
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
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
So, without that registry flag, is it working fine?
Also for X#, remember that LWA works only on 32-bit apps (x86). Just wondering!
Also for X#, remember that LWA works only on 32-bit apps (x86). Just wondering!
VO 32 Bit limitations
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
Chris
Chris Pyrgas
XSharp Development Team
chris(at)xsharp.eu
XSharp Development Team
chris(at)xsharp.eu
- ArneOrtlinghaus
- Posts: 412
- Joined: Tue Nov 10, 2015 7:48 am
- Location: Italy
VO 32 Bit limitations
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
Nevertheless it is a nice feature - Better that the program crashes somewhere later and not immediately when reaching 2 GB.
Arne