back to article Don't fear the Thread Reaper, a Windows ghost of bugs past

To celebrate Halloween this week, Windows veteran Raymond Chen has dug into the lengthy list of Windows bug check codes and come up with something obscure and vaguely threatening – the Thread Reaper. It is bug check 0x13 and named EMPTY_THREAD_REAPER_LIST. Where did this code come from? After all, it was never used in any …

  1. DJV Silver badge
    Facepalm

    You B******ds!

    Now I've got that damned song incessantly going around my head!

    1. jmch
      Trollface

      Re: You B******ds!

      More cowbell!!

      1. chivo243 Silver badge
        Go

        Re: You B******ds!

        Love the skit… but I’m partial to Godzilla.

        Other cowbell songs:

        Mississippi Queen

        American Band

      2. Stevie Silver badge

        Re: More Cowbell

        Or, if listening to The Mutton Birds cover:

        Faster playing of that one piano note!

    2. Throatwarbler Mangrove Silver badge
      Coat

      Re: You B******ds!

      Extra points for Microsoft if there was an Easter egg in the code to play a cowbell sound when the bugcheck occurred.

    3. aerogems
      Coat

      Re: You B******ds!

      Blue Oyster Cult FTW!

    4. Evil Scot Silver badge
      Trollface

      Re: You B******ds!

      A quick squirt of Apollo 440 will loosen that ear worm.

  2. Lee D Silver badge

    There I was thinking it was a new AMD chip aimed at the Northern market...

  3. Pascal Monett Silver badge

    It should never happen, hence the bug check

    As much as it would be easy to rip in to Bugzilla's code once again, for once I have to credit the developers for checking that something that should never happen did (or did not).

    I guess that was way back when they had actual engineers working on code, not today's "move fast and break it" kids.

    Looks like ancient code is the best . . .

    1. AndrueC Silver badge
      Facepalm

      Re: It should never happen, hence the bug check

      We had a similar situation with a library many years ago. As an implementor I toyed with the idea of 'ERROR: This is not an error.' but then because I was into Terry Pratchett's work at the time I went with 'ERROR: Mr Beekle is a Poo'.

      Then one day would you believe it another bug actually triggered that error for a customer. Luckily they thought it was funny.

    2. Diogenes

      Re: It should never happen, hence the bug check

      Looks like ancient code is the best . . .

      For whatever value you choose as ancient. There must have been a golden age.

      In the 80s I had to rewrite a Pl/1program written in the 70s that used gotos, and not even semi structured gotos.(Manglement ran some sort of program over our entire codebase looking fror files with gotos in them - everybody was given a program to structure properly as a side project for when we were waiting for jobs to run, walkthroughs etc). Code was jumping everywhere.

    3. Bebu
      Windows

      Re: It should never happen, hence the bug check

      Would be interesting to know what the thread reaper was checking just so you could provoke the error on an NT4 kernel and watch the fireworks. :)

      I have a NT4 SP6 CD somewhere - for many years I had to run a NT4 system with a hardware dongle on a centronics port to support(license) some some irreplaceable software for some equally irreplaceable hardware (instrument) from a long gone vendor. I remember the NT4 CD also had a MIPS version (and Alpha?)

      1. Anonymous Coward
        Anonymous Coward

        Re: interesting to know what the thread reaper was checking

        I imagine it was a specific data structure. No structure = no thread corpse.

        Weird things can happen in asynchronous code. Especially at the higher levels. I have had an error message thrown from a section of code that should never have been executed.

    4. swm

      Re: It should never happen, hence the bug check

      Then there was a bug in the early MULTICS system where the swap out module swapped out the swap in module.

  4. nintendoeats

    That's interesting. Now can we get an explanation from Microsoft for this one please?

    #define AF_UNKNOWN1 20 // Somebody is using this!

    1. Michael Wojcik Silver badge

      Since that's an address-family constant for Winsock, I presume the comment means they saw it on a network but didn't know what it was for.

      These days, AF 20 is XTP over IPv6, but I wouldn't be surprised if someone was just using it without registration back when Winsock was first being developed, because networking was a wilder place then.

      1. nintendoeats

        Right, but I want to know...WHO!?

  5. Anonymous Anti-ANC South African Coward Silver badge

    +++ MELON MELON MELON +++

    Punnery Detected

    Insert Punnery Disk 2 Into Left Orifice And Reboot

  6. Sceptic Tank Silver badge
    Windows

    Execution of Threads of Execution

    Who am I to question the mighty Chen? But AFAIK a thread cannot kill itself; it has to call the OS to do so or exit its thread proc which should result in a great deal of garbage collection. So what is there to reap?

    1. Kristian Walsh

      Re: Execution of Threads of Execution

      What you say is true from user-space, but may not necessarily be correct from the kernel’s point of view (but I have very little knowledge of WNT beyond the origin of its name... hint: 'WNT'-0x010101== ?).

      I suspect that you calling the user-space exit function might just set a byte somewhere that prevents the thread from being scheduled, and marks the thread object as ready for disposal, leaving it to another kernel task to go through those marked objects and dispose them.

  7. chuckufarley
    Pirate

    In the days of almost yore...

    ...Microsoft was vying with Novel for the SMB OS crown. Win 3.11 and Win95 were exposing their rotten behaviors in full view of the public and someone had to clean up the mess. That someone was a man I never met and who's name I have never know. He had the bright idea of editing the SYSTEM.INI and changing the "SHELL=" variable to equal "D:\Setup.exe /P f" and if the Windows CD was in the CDROM drive the Windows (DOS) OS would reinstall itself with just a little user intervention. You wouldn't even need to reinstall your programs because of the magical /P switch.

    So yeah, when it comes to legacy baggage I won't put anything past the folks at Redmond. It was all designed from the ground up to be reinstalled when it fell over. They just never made that information public. Yet the public figured it out anyway then Norton Ghost was born and lived a short life before Clonezilla superseded it.

POST COMMENT House rules

Not a member of The Register? Create a new account here.

  • Enter your comment

  • Add an icon

Anonymous cowards cannot choose their icon

Other stories you might like