working on the windows program compatibility team must be hell on earth

cc @OCRbot

why on earth would you do this instead of navigating to C:\ directly aaaaAAAAAA

Another example of a program’s reliance on a bug is a shell extension that
relied on a memory leak in Explorer.

no no no no no no no

relying on a memory leak is the most cursed programming decision ive ever heard of

me, being paid $9/hr to find out why Free Card Games Plus crashes if you're running an odd-numbered build of windows during daylight savings in a language with right-to-left text: i love my job

For example, one
useful shim is known as HeapPadAllocation; it is applied to programs that
have heap buffer overrun bugs. The shim intercepts calls to the
HeapAllocate function and adds a specified amount to the requested size.
That way, when the program overruns a buffer, it merely corrupts the padding
rather than corrupting the next heap block.

windows has code that adds an amount of memory "insulation" to a hardcoded list of shitty programs with buffer overflow errors to ensure that when they corrupt memory, the area they corrupt is unused

i do not envy windows programmers

"it merely corrupts the padding", chen calmly states, as my brain disintegrates into fine sand

it's bad for the windows team, sure, but think about the people working on wine, who have to independently discover these decades old bugs for themselves and intentionally reimplement them to get poorly written programs to work properly

this part of memory is supposed to be corrupted, please fix

can you break function x when program y is running? program y relies heavily on a bug in the windows 3.0 version of function x

q. why does windows do [bizarre action]
a. for compatibility. to answer in more detail, we'll need to discuss a flaw in
:brain1: earlier versions of windows NT
:brain2: pre-NT windows versions
:brain3: MS-DOS before networking support had been added
:brain4: CP/M
:brain5: the discovery of electricity

some random guy in the mid seventies: hey how about we do [seemingly good idea with nasty underlying assumptions]
raymond chen, today: and that's why windows reports that it only has 640k of memory if your locale is set to hebrew and the PID of explorer is a prime number during a leap second

this seems like a good time to drop another reminder that a windows registry file is called a hive because someone on the windows team had a fear of bees and the person developing the registry was being a jerk

adding "give raymond chen a hug and personally apologise to him on behalf of the human race" to my bucket list

OCR Output 

Why on Earth would you do any of this instead of smooch Lynne directly! :blobheartcat:

I will now smooch the Lynne, right on her heckin' adorable face *smooch!*

OCR Output 

@lynnesbian forget debugging, just bundle the thing with a memory expansion pack -- oh we're not talking about Donkey Kong 64 are we

@lynnesbian doesn't ONT cover stuff that's at least as bad, if not worse. i.e. relying on internal functions only exported by ordinal, breaking programs when a new version of whatever lib is released

@lynnesbian or relying on deprecated registry keys from beta dev releases of OSes

@lynnesbian don't forget that program which deleted key ini files if they had any lines longer than 80 chars

@lynnesbian nevermind pointer arithmetic, someone break out the pointer algebra

@lynnesbian I love these threads, please carry on with them!

@lynnesbian That reminds me -- there's a bug that's been in windows since at least 3.0 with the window move in the program menu ( opened with alt+spacebar )

If you select move, the mouse cursor jumps to the middle of the title bar, showing a move icon, but moving the mouse does not move the window, and trying to click drag (which makes sense ) ends the move operation.

One must hit an arrow key before moving with the mouse will actually work.

I've always asked "Why? WHY??" -- and now, thanks to you, i've realized that some ancient Important Third Party Program must have relied on that behaviour and....

@clarjon1 @lynnesbian
😮 I was literally just struggling with this bug yesterday, I have struggled with this bug for years and never known that it was a persistent feature.

I thought something was just wrong with my installation, and that I had certainly used the Move function properly at some point in the distant past.

@68kmentat @lynnesbian

I've just done some testing thanks to and that behaviour actually is in 2.0

This behaviour is older than I am.

@lynnesbian loading the old windows 3 memory manager for the bits (of programs that use memory they're not supposed to)

@lynnesbian I highly recommend checking out the new old thing blog

@lynnesbian msdn blogs have saved my ass so many times. Really a shame MS deleted most of them recently

@lynnesbian it is my professional opinion as an electrical engineer that the discovery of electricity was itself a mistake

(i would sign and seal a statement to that effect, but my PE stamp still has my retired name on it)

Show more

Make sure you get the right Raymond Chen.
There's more than one at Microsoft.

@Freyaday @lynnesbian
To add to this fun, turns out there's no English Wikipedia page on Raymond Chen, only a Dutch one.


Show more
@lynnesbian His latest post ends with "Maybe that’s not something you have to deal with, in which case lucky you" and, oomph

@lynnesbian at this point he could just be making these up and who would ever guess

@lynnesbian Archaeologists of the distant future will reconstruct the late 20th century from Windows backwards compatibility hacks

Horizon spoilers 

Sign in to participate in the conversation
Lynnestodon's anti-chud pro-skub instance for funtimes