May 18th, 2026
heartlikemind blown4 reactions

Just shows that nobody cares about debugging the parity flag any more

The x86-64 architecture inherited the parity flag (PF) from the x86-32, which in turn inherited it from the 8080, which inherited it from the 8008, which implemented it because it was the processor for the Datapoint 2200 serial terminal.

The parity flag also has a secondary purpose of being a place for the FXAM (x87) and UCOMISD (SSE) instructions to record the results of floating point comparisons. You can still entice compilers into checking the parity flag by checking a value for NaN or performing a floating point equality or inequality comparison (because NaN always fails equality and inequality comparison).

It turns out that the Windows debugging engine for x86-64 had a bug where it reported the parity flag as the opposite of what it actually is. When the parity flag was set, it said “po” instead of “pe”, and vice versa.

The fact that this went unreported for over two decades tells you that nobody cares about debugging the parity flag.

A fix has gone in. We’ll see if it makes it out before this article gets posted.

Topics

Author

Raymond has been involved in the evolution of Windows for more than 30 years. In 2003, he began a Web site known as The Old New Thing which has grown in popularity far beyond his wildest imagination, a development which still gives him the heebie-jeebies. The Web site spawned a book, coincidentally also titled The Old New Thing (Addison Wesley 2007). He occasionally appears on the Windows Dev Docs Twitter account to tell stories which convey no useful information.

4 comments

Sort by :
  • Melissa P

    part of that is also the confusion around the instruction mnemonics and its unending aliases... JPE JPO JPNE JPNO JP JNP... (CMOVxx SETxx resp)... so you stop caring about what the bit pattern is, you just care about the jump being performed corrected; similar to JA JB JG JL... while most know that JB and JC are the same and refer to the carry bit, I doubt anyone knows the bit condition of JL by heart.. (SF !=OF)

    The flag that absolute no none cared about in the last 30 yrs is the AF flag; it's the architectural appendix; still there...

    Read more
  • cricwood@nerdshack.com

    Did it really go unreported or were all bug reports silently dismissed, triaged, postponed, and eventually deleted?

    Because the dev tools support was amazing until ca. 2018, and after that it got so bad I cannot even find the right words for it.

  • Georg Rottensteiner

    After 20 years, how big are the chances you will be getting bug reports about that suddenly flipped output?

    • Daniel Flöijer

      You’d be surprised how often things break when bugs are fixed 🙂

      Thanks Chen for posting this, it gave me a smile twice as big today that was much needed after a week of troubleshooting a weird intermittent access denied issue that 3 different departments blamed on each other and finally was figured out today to be cause by new software installed that “shouldn’t cause any issues” even thou it was the first thing I pointed out as likely cause (always blame the new thing).