Jump to content

Windows bug robs CPU in later builds


Lucifer1945

Recommended Posts

55 minutes ago, Techie007 said:

    Correct, 31 wasn't a typo.  As I explained in my previous post, the 32nd bit is the sign-bit (minus sign) when using a signed variable to store the memory pointer.  A signed Dword can express numbers from -2,147,483,648 to 2,147,483,647 (2 GiB), while an unsigned Dword can express numbers from 0 to 4,294,967,295 (4 GiB).  Memory pointers are supposed to be stored in unsigned variables, but older programs were not always written or compiled correctly because 32-bit Windows never even supported LAA (the use of the full 32-bits) per-process.  For instance, Visual Basic 6 doesn't even have support for an unsigned Dword.  Internally, the compiler and runtime calculate LAA memory pointers fine, but if I had to work with a memory pointer in code and offset it, it could get calculated incorrectly if LAA was manually enabled and I didn't use the 64-bit (Currency) variable in my code to handle the larger numbers expressed by the 32nd bit.

    This was never was an issue until 64-bit Windows came out on machines with over 4GiB of RAM and it was reasonable for Microsoft to enable use of the full 32-bit addressing range of 4 GiB of RAM on 32-bit processes.  That's where the LAA flag comes in, for a 32-bit program to signal its awareness and support of the 32nd bit under 64-bit Windows.  Under 32-bit Windows, using a signed Dword for memory pointers never caused any issue, because a memory address could never go beyond 2 GiB (31-bits).  But by manually enabling LAA on a 32-bit process under 64-bit Windows, we are breaking that expectation.  Which is fine if the program doesn't manipulate memory pointers or was coded correctly to use an unsigned Dword for memory pointers.

    The bigger point is that there is no performance to be gained by indiscriminately enabling LAA everywhere, and it will not make a 32-bit program to run as a 64-bit program.  It will still use the 32-bit Windows libraries, still be limited to an absolute maximum of 4 GiB of RAM no matter how much is installed on the PC.  Enabling LAA on programs that don't need it (programs that don't use very much RAM) won't accomplish anything, and enabling it on programs that were compiled/written incorrectly could increase the risk of a crash.  The only positive usage scenario for that tweak is in the case of a correctly written and compiled program that uses a lot of RAM, but was failed to be marked as Large Address Aware at compilation time.  Like VirtualDub and probably a good number of 32-bit games.

Is there a method to find out which 32bit games those are? Crysis 3 runs in 32 bit for example, not that it has crashing issues, nor is it modifiable. But just as an example of a more modern engine. 

Link to comment
Share on other sites


>Is there a method to find out which 32bit games those are?

If you're interested in seeing what is currently running as a 32 bit application, you can look in the Task Manager in the list of Processes.

In Win 8 and newer you have to enable the Platform column, which will then show either "32 bit" or "64 bit" because presumably seeing *32 in the older Task Manager next to the name cause some folks mental overload.  It's so good that the Task Manager was re-written to give us a more "ignorance is bliss" experience.  Yeah, that's why we would want to run Task Manager, right?

>I wish I knew someone sophisticated enough to decompile this kernal so it can be forcibly eradicated via deletion. I realize it
>would take them 5 to 30 minutes of their precious time to fix even if it was a crude work around stand alone tool, but they
>wont be bothered.

You might want to reign in the attitude a little.  If I could reproduce the problem I'd share the fix, as would any number of others here.

-Noel

Edited by NoelC
Link to comment
Share on other sites

"You might want to reign in the attitude a little."

Not everything my fingers produce is a direct indication of your personal ability, and when that is the case you message me back things like "You seem quite forward about expecting me to provide materials for your guide."

Perhaps I should include exacting words so as not to offend the most promising lead I have to polishing every nook and cranny.


 

Link to comment
Share on other sites

I am currently fusing everything together. Its a bit rough in places, so consider it version 1.0, but ill be making a new thread with an appropriate title. The upload will take rather long. It is afterall literally almost 2 hours of content, and thats with a extreme amount of video editing. Fun fact, windows movie maker likes to corrupt your files and is total garbage. All are welcome to suggest polish. 

Edited by Lucifer1945
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...