Last October, amid the usual relentless hum of Windows updates and the low-key anxiety that comes with “will my device still work tomorrow?”, Microsoft dropped Windows 11 24H2 into the world. You know the drill: Copilot gets smarter, the file manager speaks fluent TAR and 7z, there’s a new Energy Saver for the power-conscious, and everything’s subtly “better” for newer PCs. But as with most big Windows updates, what starts as a celebration of new features quickly morphs into a symphony of unexpected issues and delightful forum threads about printers, drivers, and—for those with taste—a vanishing seaplane from a 2004 gangster epic. Yes, somehow, the most whimsical bit of software archaeology to hit the IT world in 2024 comes courtesy of Grand Theft Auto: San Andreas and a bug that’s been in hiding for two whole decades.
It started innocently enough, as all technical horror stories do. Old-school gamers fired up San Andreas after updating to Windows 11 24H2, perhaps to revisit the glory days of CJ’s misadventures in Los Santos. Pretty soon, something odd started circulating on the GTA forums: The Skimmer—the game’s classic, floaty seaplane—was missing. Not missing as in “hard to find,” or “stolen by Big Smoke”; missing as in completely non-existent, wiped from the digital face of San Andreas.
Now, for most people, this would rank somewhere below “USB dock not working” on the Windows update grievance chart. For the GTA diehards and modding community, however, this was the equivalent of putting ketchup on caviar. Enter “Silent,” also known as CookiePLMonster, stalwart of unofficial modding fixes with his experimental SilentPatch project. A man who has, presumably, spent more time staring at the San Andreas codebase than Rockstar ever intended, Silent took up the case with the zeal of a digital Sherlock Holmes.
And thus Silent, never one to pass up a challenge or a pile of buggy C++, rolled up his sleeves. He did what all modern troubleshooters do: built a VM, installed clean copies of GTA on pre- and post-update Windows versions, and held his breath. On 23H2: Skimmer intact. On 24H2: cue the X-Files theme music. Not only was the Skimmer missing, but attempts to forcibly spawn it led to… well, some light interstellar travel.
With no patch, the camera dissolved into a visual apocalypse; with SilentPatch, the game simply seized up entirely. Silent’s poking about in the code revealed the telltale signs: impossible altitude values, a bounding box with a z-value so wrong it had to be the result of uninitialized memory, and the sort of numerical errors that make seasoned developers break into cold sweats.
If you’re an IT pro who has ever encountered “undefined behavior” and lived to tell the tale, you know just how elusive—and mischievously catastrophic—these gremlins can be. The lesson is as timeless as ever: computers will always find a new and interesting way to explode when you forget to initialize your variables.
Did the game care? Not for twenty-odd years, thanks to the usual succession of “accidental” memory states that just so happened to work. As the file is read line by line, the “Topfun” van (which does have this info) appears immediately beforehand. On most previous Windows versions, the Skimmer’s missing wheel values happily inherited the values from Topfun’s recently-used stack memory: 0.7 and 0.7. The result? A plane that mostly behaved itself.
This is what coders refer to as “cargo cult luck.” That, and praying every time you run the program that today is not the day the stack bites back.
No more accidental inheritance, no more 0.7s. Just pure, undiluted garbage data straight from the memory ether, leading the game to believe that the Skimmer should be living somewhere in the upper thermosphere.
This, in the words of every IT consultant ever asked to “just make it work,” is what you get when bad code and good luck call it quits, and a 20-year-old assumption finally gets its comeuppance.
Uninitialized local variables are the harbinger of doom in C and C++, and the symptoms are always the same: spectacularly unpredictable behavior, from planes disappearing to memory leaks to the infamous “undefined behavior,” which is programming’s equivalent of Schrödinger’s cat.
For seasoned Windows admins, the whole saga is a familiar reminder that no matter how many layers of abstraction or compatibility Microsoft adds, if your underlying application is balancing on the knife-edge of “it just happens to work,” catastrophe is never further than the next point release.
It’s a public embarrassment and an object lesson for devs everywhere. Relying on invisible coincidences and undocumented behaviors is like tossing your QA department out of an airplane, then hoping they land in a swimming pool filled with cheese puffs: fun in theory, disastrous in practice.
Of course, players don’t care about stack memory, pointer arithmetic, or floating-point oddities. They care that CJ has a plane, and the game isn’t launching him into the void.
460, skimmer, skimmer, plane, SEAPLANE, SKIMMER, null, ignore, 5, 0, 0, -1, 0.7, 0.7, -1
Save, relaunch, and the Skimmer floats again as if it had never tasted the bitter emptiness of numerical oblivion.
To Silent’s credit, the next SilentPatch update will bake in a proper fix—one that doesn’t depend on “just change the OS stack again, Microsoft!” This is modding heroism at its finest: a decade-spanning labor of love, shoring up long-exposed cracks in aging codebases, all so the rest of us can drop water bombs from the comfort of modern hardware.
And let’s not forget, Microsoft isn’t wrong here. Their platform documentation has always warned against assuming anything about stack contents or uninitialized data post-system calls. If your software only operates correctly because your luck held out, you’re living on borrowed time (and borrowed memory addresses).
Some hidden strengths, though, deserve mention too. The modding community, led by folks like Silent, routinely delivers more robust, future-proof fixes than the original vendor ever intended. Their dedication single-handedly extends the usable life of classic titles—even as the ground keeps shifting beneath them.
But as much as we love quick config tweaks, the lesson is unmistakable: True future-proofing demands explicitness, sanity checks, and an ironclad refusal to trust in the stability of undocumented implementation quirks. Or, to paraphrase every sysadmin’s rallying cry: hope is not a strategy.
The best you can hope for, short of rewriting huge swaths of legacy code, is to stay vigilant, test everything after each update, and learn a few tricks from the ever-resourceful GTA modding scene. Just don’t assume luck will hold forever.
For Windows and IT professionals, the lessons are clear:
May your stacks be initialized, your planes be findable, and your Windows updates bring only good things—like functional seaplanes, working printers, and maybe, eventually, the end of mysterious bugs that began life before TikTok.
Source: Neowin Windows 11 24H2 resurrects a 20-year-old bug in GTA San Andreas, here is how
The Skimmer That Vanished: Classic Game Meets Cutting-Edge OS
It started innocently enough, as all technical horror stories do. Old-school gamers fired up San Andreas after updating to Windows 11 24H2, perhaps to revisit the glory days of CJ’s misadventures in Los Santos. Pretty soon, something odd started circulating on the GTA forums: The Skimmer—the game’s classic, floaty seaplane—was missing. Not missing as in “hard to find,” or “stolen by Big Smoke”; missing as in completely non-existent, wiped from the digital face of San Andreas.Now, for most people, this would rank somewhere below “USB dock not working” on the Windows update grievance chart. For the GTA diehards and modding community, however, this was the equivalent of putting ketchup on caviar. Enter “Silent,” also known as CookiePLMonster, stalwart of unofficial modding fixes with his experimental SilentPatch project. A man who has, presumably, spent more time staring at the San Andreas codebase than Rockstar ever intended, Silent took up the case with the zeal of a digital Sherlock Holmes.
Diagnosing the Bug: It's Not Modding, It's Physics!
Initial guesses fell predictably in the “mods are weird” camp—it’s a fifteen-year-old game, after all, running on a modern platform. Surely, some janky add-on or incompatible tweak was behind this. But no—player after player chimed in: even on pristine installs, the seaplane was AWOL.And thus Silent, never one to pass up a challenge or a pile of buggy C++, rolled up his sleeves. He did what all modern troubleshooters do: built a VM, installed clean copies of GTA on pre- and post-update Windows versions, and held his breath. On 23H2: Skimmer intact. On 24H2: cue the X-Files theme music. Not only was the Skimmer missing, but attempts to forcibly spawn it led to… well, some light interstellar travel.
Sky-High Hijinks: When Planes Go Where No CJ Has Gone Before
Yes, using in-game commands to create the Skimmer on Windows 11 24H2 launched poor CJ approximately 1.087 quadrillion light-years into the sky, instantly holding the record for farthest protagonist displacement in video game history. (Eat your heart out, Mass Effect.)With no patch, the camera dissolved into a visual apocalypse; with SilentPatch, the game simply seized up entirely. Silent’s poking about in the code revealed the telltale signs: impossible altitude values, a bounding box with a z-value so wrong it had to be the result of uninitialized memory, and the sort of numerical errors that make seasoned developers break into cold sweats.
If you’re an IT pro who has ever encountered “undefined behavior” and lived to tell the tale, you know just how elusive—and mischievously catastrophic—these gremlins can be. The lesson is as timeless as ever: computers will always find a new and interesting way to explode when you forget to initialize your variables.
Death by Bounding Box: It's Always That One Legacy Struct
Silent followed the breadcrumbs and uncovered a real piece of gaming archaeology: the Skimmer’s data in the game’s configuration file (handling vehicle definitions) was riddled with legacy shortcuts. Rockstar, in their infinite wisdom, had ported the Skimmer over from Vice City (where it was a boat, not a plane), but failed to include a few extra parameters—specifically, the wheelsizes now required for proper physics.Did the game care? Not for twenty-odd years, thanks to the usual succession of “accidental” memory states that just so happened to work. As the file is read line by line, the “Topfun” van (which does have this info) appears immediately beforehand. On most previous Windows versions, the Skimmer’s missing wheel values happily inherited the values from Topfun’s recently-used stack memory: 0.7 and 0.7. The result? A plane that mostly behaved itself.
This is what coders refer to as “cargo cult luck.” That, and praying every time you run the program that today is not the day the stack bites back.
Windows 11 24H2: When Luck Runs Out And Stack Memory Strikes Back
So what did Microsoft do to upset this delicate altar to the randomness gods? Surprisingly little. Windows 11 24H2 made some small, perfectly reasonable tweaks to internal memory handling, specifically how the LeaveCriticalSection function chews through stack space while reading files. In so doing, the memory that once fortuitously contained the Topfun values was now stomped by unrelated Windows code before the Skimmer data was loaded.No more accidental inheritance, no more 0.7s. Just pure, undiluted garbage data straight from the memory ether, leading the game to believe that the Skimmer should be living somewhere in the upper thermosphere.
This, in the words of every IT consultant ever asked to “just make it work,” is what you get when bad code and good luck call it quits, and a 20-year-old assumption finally gets its comeuppance.
The Culprit: Uninitialized Variables, the True Villain of Software
Let’s pause for a brief public service announcement for developers everywhere: If you leave variables uninitialized, the stack will come for you. Not today, maybe, but someday. Rockstar’s programmers, like many (most?) of their era, blithely trusted that if sscanf didn’t populate a few values, the values would just… magically be fine. The flaw was embedded in the CFileLoader::LoadVehicleObject routine: failure to check if sscanf consumed all needed values, failure to zero out variables before use.Uninitialized local variables are the harbinger of doom in C and C++, and the symptoms are always the same: spectacularly unpredictable behavior, from planes disappearing to memory leaks to the infamous “undefined behavior,” which is programming’s equivalent of Schrödinger’s cat.
For seasoned Windows admins, the whole saga is a familiar reminder that no matter how many layers of abstraction or compatibility Microsoft adds, if your underlying application is balancing on the knife-edge of “it just happens to work,” catastrophe is never further than the next point release.
A Broader Pattern: Old Bugs, New Platforms, and the Folly of Trusting Luck
This isn’t the first time an ancient bug has resurfaced thanks to an innocuous platform tweak, and it won’t be the last. In fact, as Silent points out, a similar scenario played out with Bully: Scholarship Edition when Windows 10—again, through innocent memory layout shifts—broke the game for exactly the same reasons.It’s a public embarrassment and an object lesson for devs everywhere. Relying on invisible coincidences and undocumented behaviors is like tossing your QA department out of an airplane, then hoping they land in a swimming pool filled with cheese puffs: fun in theory, disastrous in practice.
Of course, players don’t care about stack memory, pointer arithmetic, or floating-point oddities. They care that CJ has a plane, and the game isn’t launching him into the void.
The Fix: Modern Modders to the Rescue (Again)
All’s well that ends with a config file rewrite, as they say. The immediate workaround is as old-school as the bug itself: Open the carcols.dat (the same file Rockstar forgot to update after Vice City), track down the “460, skimmer” entry, and append the missing parameters like so:460, skimmer, skimmer, plane, SEAPLANE, SKIMMER, null, ignore, 5, 0, 0, -1, 0.7, 0.7, -1
Save, relaunch, and the Skimmer floats again as if it had never tasted the bitter emptiness of numerical oblivion.
To Silent’s credit, the next SilentPatch update will bake in a proper fix—one that doesn’t depend on “just change the OS stack again, Microsoft!” This is modding heroism at its finest: a decade-spanning labor of love, shoring up long-exposed cracks in aging codebases, all so the rest of us can drop water bombs from the comfort of modern hardware.
For IT Pros: Compatibility Is a Moving Target
This isn’t just an amusing tale of software rot and video game urban legends. There’s a broader lesson here for anyone who deploys, manages, or maintains apps across Microsoft’s ever-moving target of platforms. Compatibility is a slippery fish: just because your app “works” today doesn’t mean it’s immune from tomorrow’s update to the kernel, the runtime libraries, or—in this case—the entirely legal shuffling of stack usage by a critical section routine.And let’s not forget, Microsoft isn’t wrong here. Their platform documentation has always warned against assuming anything about stack contents or uninitialized data post-system calls. If your software only operates correctly because your luck held out, you’re living on borrowed time (and borrowed memory addresses).
Why This Matters: The Windows Ecosystem Is a Graveyard of Ancient Assumptions
The reality is stark: The Windows ecosystem is littered with apps, business-critical and otherwise, held together by the sticky tape of historical accident. The fact that a 20-year-old bug can resurface because an operating system function uses a few extra bytes of stack space ought to scare anyone managing legacy software—or at least spur them to audit exactly how much of their deployment pipeline is one uninitialized variable away from collapse.Some hidden strengths, though, deserve mention too. The modding community, led by folks like Silent, routinely delivers more robust, future-proof fixes than the original vendor ever intended. Their dedication single-handedly extends the usable life of classic titles—even as the ground keeps shifting beneath them.
But as much as we love quick config tweaks, the lesson is unmistakable: True future-proofing demands explicitness, sanity checks, and an ironclad refusal to trust in the stability of undocumented implementation quirks. Or, to paraphrase every sysadmin’s rallying cry: hope is not a strategy.
The Real-World Costs: When “It Works on My Machine” Isn’t Good Enough
For businesses running old vertical apps, custom tools, or orphaned business logic from a previous era, this story is both cautionary and depressingly familiar. If your app relies—even indirectly—on undocumented OS quirks, you’re fighting entropy with your eyes closed. The testing matrix grows with each Windows flavor, and from Windows 7 to Windows 11 24H2, those subtle changes add up fast.The best you can hope for, short of rewriting huge swaths of legacy code, is to stay vigilant, test everything after each update, and learn a few tricks from the ever-resourceful GTA modding scene. Just don’t assume luck will hold forever.
Final Thoughts: Of Patchnotes, Planes, and Programmer Hubris
There’s an odd poetry to it, really. The Skimmer has spent two decades merrily bobbing along inside an illusion sewn together by accident. Now, with the tiniest of changes to how Windows manages its housekeeping, it’s gone faster than you can say “CJ, all we had to do was follow the damn train.” It’s a reminder, both brutal and hilarious, that even the mightiest software can be felled by a missing float and an indolent developer’s long-ago shortcut.For Windows and IT professionals, the lessons are clear:
- Legacy code is a ticking time bomb, especially where undocumented OS behavior is involved.
- Modding communities deserve your gratitude; they fix what vendors forgot, one weird hex edit at a time.
- If you want an app to last, you have to code defensively—never assume “that’ll never change.”
- And maybe, just maybe, after your next major Windows update, you should boot up your favorite old game. If the plane is missing, at least you’ll know why—and who to thank for fixing it.
May your stacks be initialized, your planes be findable, and your Windows updates bring only good things—like functional seaplanes, working printers, and maybe, eventually, the end of mysterious bugs that began life before TikTok.
Source: Neowin Windows 11 24H2 resurrects a 20-year-old bug in GTA San Andreas, here is how