Codegear - Rad Studio 2009 -update 1-4- 12.0.3420.21218.1
The corrupted DLL was calling a function named GetWaterFlow . But the original GetWaterFlow expected a PChar with a trailing null. The new DLL passed a String . In every other version of Delphi, that was fine—they were compatible. But in 12.0.3420.21218.1, the compiler's internal TObject.Free method had a one-cycle delay before releasing the string’s reference count. It was a threading bug that had been fixed in Update 5, which was never released.
That one-cycle delay was the only thing keeping the pressure valves from exploding.
He injected a single inline assembly block into the GetWaterFlow function: CodeGear RAD Studio 2009 -Update 1-4- 12.0.3420.21218.1
“That’s history ,” Aris replied, his fingers dancing over a mechanical keyboard. “And history has a memory layout.”
To anyone else, it was a relic—a fossil from the twilight of the Win32 era, long buried under layers of .NET, mobile frameworks, and web containers. But to Aris, it was the Lexicon Arcanum , the last stable compiler that could talk to the deep machinery of the world. The corrupted DLL was calling a function named GetWaterFlow
Jenna let out a breath she didn’t know she was holding. “What… what did you just do?”
The last true build of Delphi 2009 sat on a dusty external hard drive in Dr. Aris Thorne’s basement. The label, written in fading marker, read: “CodeGear RAD Studio 2009 - Update 1-4 - 12.0.3420.21218.1.” In every other version of Delphi, that was
“We don’t rewrite,” Aris said. He opened the CPU window—the raw assembly view. Then he opened the Project > Options > Compiler dialog. He unchecked “Optimization,” checked “Stack Frames,” and set “Record Field Alignment” to 1 byte.
Jenna stared. “That’s not a feature. That’s a bug.”
Be the first to comment