Settings

Theme

Salt Lake 2002 – not enough memory/crashes to desktop after starting error

vogons.org

140 points by DMell 3 years ago · 31 comments

Reader

mrpippy 3 years ago

This reminded me of work I did for Proton/Wine a few years back: finding a buffer overflow in the Rockstar Games Launcher installer NSIS script, having to implement an ancient deprecated Windows named pipe mode that RGL uses, reverse-engineering the VRAM display/detection in GTA IV…

If anyone wants to do this kind of reverse-engineering for a living, we’re hiring at CodeWeavers: https://www.codeweavers.com/about/jobs

  • easyThrowaway 3 years ago

    Thanks for the often unrecognized work that goes in creating something like this.

    Once in a while I try some of my father old games with my steam deck ('90s game like the OG Colin Mc Rae Rally or the early Need For Speed games)and I'm impressed how they work with basically no issues on current-gen devices.

svieira 3 years ago

Anyone else see the title and the site domain think, "Oh, was Salt Lake an obscure Intel architecture that was too stable and caused errors in programs because there weren't enough CPU errors during startup?"

The actual debugging war story (decompiling an old InstallShield installer and detailed examinations of a routine that presumed that 64MB was more VRAM that anyone would _ever_ need) was quite good too.

aftbit 3 years ago

I love this super interesting debugging war story, on such a pointless target. There's something delicious about putting so much effort and coming to such a satisfying conclusion when working on such an obscure game.

thayne 3 years ago

I'm intrigued why MS decided to have GlobalMemoryStatus return a negative number if there is more than 4GB, rather than returning the maximum value.

  • layer8 3 years ago

    When interpreted as an unsigned integer, it actually corresponds to the maximum value of almost 4 GB (0xFFFFFFFF). Note that the fields are declared as SIZE_T, which is unsigned. (Not sure if they always were.) The installer may be incorrectly assigning the value to a signed integer type.

    The actual behavior of GlobalMemoryStatus is a bit more complicated, see https://ftp.zx.net.nz/pub/archive/ftp.microsoft.com/MISC/KB/....

  • Narishma 3 years ago

    I think it's worse than that. It returns the max value (2GB) when there is more than 2GB but less than 4GB, but a negative value if there is more than 4GB.

  • zamnos 3 years ago

    2^32 is 4294967296, or 4 GiB. Back before Windows ran on 64-bit machines, 4 GiB was as big a number as a standard int could represent. Updating it for 64-bit mode would mean breaking 32-bit programs, so "fixing" it isn't necessarily an upgrade.

    • Twirrim 3 years ago

      I think OP was suggesting that instead of overflowing, the API could have instead returned 2^32 / 4 GiB.

  • dhosek 3 years ago

    I was thinking the same. I’m guessing that originally the lack of a bounds check was for efficiency’s sake (save a CPU cycle or two) and they chose not to update it assuming people would use the newer API.

    • thayne 3 years ago

      > assuming people would use the newer API

      that's a pretty bad assumption for an OS that is notorious for its backwards compatibility.

johncalvinyoung 3 years ago

If I was more skilled with a debugger, I'd try to dig into why one of my favorite childhood games (an arcade WWII dogfighter game) runs just fine on Windows for ARM64, EXCEPT resetting inventory between each level, which makes final bosses much less fun, as part of the game is stacking powerups.

klyrs 3 years ago

This wasn't a problem back in 2002. Back then, you could just leak however much memory you'd need to bring the total down to a positive number.

https://web.archive.org/web/20020207000806/https://www.php.n...

bombcar 3 years ago

This is why “warning. Game needs 64 mb and you have -2gb continue y/n?” Is better than just dying out.

  • slaymaker1907 3 years ago

    I think it depends on application. For a video game, that’s what you should do. However, that’s not really advisable for a database where broken invariants might lead to corruption.

  • Arainach 3 years ago

    In open source software where you can throw it over the fence and say "no warranty", perhaps.

    In commercial software where your users will say "Y" even when they have 16MB of RAM, have an awful time, waste your money calling your support in that unsupported configuration (and forget to mention it), and leave negative reviews - no, hard blocks make a lot of sense.

    • jojobas 3 years ago

      How does the hard block prevent wasted support time and negative reviews?

      • Arainach 3 years ago

        "The program won't start" is straightforward and a short script will quickly identify the real problem.

        "On Tuesdays when I alt-tab to Backgammon, my save file is corrupted" is much tougher to immediately identify as out of memory.

        Telling users no at the beginning yields far fewer negative feelings than letting them get invested and then experience a major problem, blocker, or just constant random irritations

mahin 3 years ago

Was just going to post this but you beat me to it! This was a fun read, and introduced me to vogons where I think I'll be spending some time.

  • mysterydip 3 years ago

    Vogons is a great place with lots of experts on vintage software and hardware. Definitely recommend it to anyone interested in either running old stuff or just on history/tidbits/how-things-worked like that post.

    • chungy 3 years ago

      Just don't read their poetry.

      • akiselev 3 years ago

        Honestly the Vogons were only the third worst poets in the universe. If you can read awful human poetry like anything by Paula Nancy Millstone Jennings, they won't faze you.

        • lproven 3 years ago

          In the original radio series, the name was Paul Neil Milne Johnstone… who was an actual schoolfriend, or at least was at school with, Douglas Adams. He didn't appreciate being name-checked in the Hitchhikers Guide to the Galaxy so it had to be changed. I believe that if you closely watch the fake video graphics in the BBC TV series, you can see some of Adams' best efforts to remember Johnstons actual "poetry" on screen.

        • qingcharles 3 years ago

          I tried once, but I had to gnaw my own legs off to survive.

    • ridgered4 3 years ago

      They also have a collection of old drivers that have become hard to find with time.

  • DMellOP 3 years ago

    It was an amazing read! I still have so much more digging to do from it.

qingcharles 3 years ago

This is everything that is great about the Internet.

el_don_almighty 3 years ago

Elegant, with a wafting hint of the sublime

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection