Hunting a 34 year old pointer bug in EtherSlip (DOS Networking)

34-year-old DOS bug resurfaces: retro fans cheer, pragmatists say “use a different compiler”

TLDR: A retro DOS networking test triggered a “NULL assignment detected” warning, exposing a decades-old memory bug while using EtherSLIP. Commenters split between praising Ethernet-style emulation, advising a different compiler, and warning that DOS lacks safety checks—reminding everyone why retro debugging is equal parts archaeology and chaos.

A retro coder fires up a 1980s-style internet over a serial cable, and bam—his DOS app screams “NULL assignment detected.” Cue the comment section lighting up like a modem tree. The post tells a throwback tale: using an old trick called SLIP (internet over a serial port) through EtherSLIP, which pretends to be Ethernet. When packets started dropping, the compiler’s end-of-program check accused someone of writing to memory address zero—a very bad, very old-school move.

The crowd split fast. One camp cheered the elegance of “Ethernet-in-a-trenchcoat.” As userbinator put it, so many networks today just pretend to be Ethernet to your software—so yes, EtherSLIP is basically cosplay and it works. Another camp threw tools at the wall: “Try the Fil-C compiler,” urged NooneAtAll3, turning the thread into an impromptu bake-off of compilers and debuggers. Meanwhile, the safety gurus dropped a reality check: DOS has no seatbelts. As kazinator reminded everyone, there’s no memory protection, so the compiler fakes a guard by watching the first 32 bytes—if they change, you probably poked the dragon.

The memes wrote themselves: “EtherSLIP is Ethernet in a trench coat,” “NULL pointer is the final boss,” and “Retro bug? More like undead boss fight.” Nostalgia, nerdery, and a little fear—classic comment-section chaos, just the way we like it.

Key Points

  • EtherSLIP enables DOS applications expecting Ethernet to operate over SLIP via a serial port.
  • During Telnet testing with packet loss, Open Watcom 1.9 reported “*** NULL assignment detected.”
  • Open Watcom’s DOS runtime detects NULL writes by guarding the first 32 bytes of the data segment.
  • The issue appears only with EtherSLIP and is triggered when lost packets require retransmission.
  • Initial debugging via added NULL checks and trace points did not reveal the offending write, necessitating a different approach.

Hottest takes

“they seem to have converged on the Ethernet frame format” — userbinator
“I wonder if you could’ve tried ‘Fil-C’ compiler” — NooneAtAll3
“you get unpredictable results… trample bytes around the null address” — kazinator
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.