Bug compatibility

Source: Wikipedia, the free encyclopedia.

Computer hardware or software is said to be bug compatible if it exactly replicates an undesirable feature[1] of a previous version. The phrase is found in the Jargon File.[2]

An aspect of maintaining

bugs and unintended behaviour. That must also be preserved by the newer replacement. Besides the significantly higher complexity that needs to be maintained during the natural evolution of the code or interface, it can sometimes cause performance or security issues, and the inconsistencies in the behaviour of interfaces can sometimes lead to new bugs in the software using it, creating difficult to resolve multi-directional cross dependencies between various pieces of code.[3]

Examples

DOS

Examples can be found in

PC DOS
: When MS-DOS/PC DOS 3.1 and higher (including
off-by-one calculation errors caused by some of their formatter software under earlier issues of these systems.[4][5][6][7] While this undocumented behaviour allows them to cope with these incorrectly formatted volumes specifically, it limits the flexibility of disk geometries they can work with in general and can cause them to trash validly formatted volumes created by third-parties if they deviate from the defaults used by Microsoft and IBM.[6][7]
When MS-DOS/PC DOS 5.0 and higher are running on 286 or higher processors, the resident
Rational Systems' 386 DOS extenders) by patching the loaded program image before executing it.[8] Under certain conditions an underlying DOS also patches Windows (WINA20.386).[9]

Over the course of development,

Current Directory Structure (CDS) internally[9][13][14]), but also actual bugs in the kernel and several drivers, in order to make certain other drivers and applications run on DR-DOS, when they were tested on specific versions of MS-DOS only.[9][6][8][15][16][17]

Windows

Windows, which has traditionally emulated many old system bugs to allow older low-level programs to run, is another example. As a result, Wine, which makes it possible to run many Windows applications on other platforms, also needs to maintain bug compatibility with Windows.[18]

When Microsoft phased out support for 16-bit code in Windows by no longer including

NTVDM in 64-bit editions of the operating system, the executable loader was modified to recognize some specific 16-bit stub launchers and installers and replace them on-the-fly with equivalent code stubs that run on 64-bit processors.[19][20]

Other

During development of its

IBM Personal Computer/AT A20 address line to emulate the behaviour in older processors.[8][15]

leap year bug, which falsely treats 29 February 1900 as an actual date, to ensure backward compatibility with Lotus 1-2-3.[22]

See also

Notes

  1. DR-DOS 7.02 and higher now including tiny stubs to exit gracefully when invoked inappropriately.[a][b]

References

  1. ^ "bug-for-bug compatible". catb.org. Same as bug-compatible, with the additional implication that much tedious effort went into ensuring that each (known) bug was replicated.
  2. ^ "Bug-compatible - www.jargon.net". Retrieved 2010-02-03.
  3. ^ Pontin, Jason (1994-12-26). "Windows 95's third delay; needs polish". InfoWorld. 16 (52). InfoWorld Media Group, Inc.: 18.
  4. . DOSREF. Retrieved 2012-01-08. (NB. The author mentions that DOS 4.0 checks the OEM label, but denies that DOS 3.2 checks it as well (although it does).)
  5. ^ Bass, Wally (1994-02-14). "Cluster Size". Newsgroupcomp.os.msdos.programmer. Archived from the original on 2017-09-09. Retrieved 2006-10-14.
  6. ^ a b c Paul, Matthias R. (2002-02-20). "Need DOS 6.22 (Not OEM)". alt.msdos.programmer. Archived from the original on 2017-09-09. Retrieved 2006-10-14.
  7. ^ a b Paul, Matthias R. (2004-08-25). "NOVOLTRK.REG". www.drdos.org. Archived from the original on 2016-03-04. Retrieved 2011-12-17. [1]
  8. ^ a b c Paul, Matthias R. (2002-10-07). "Re: masm .com (PSP) related trouble". alt.lang.asm. Archived from the original on 2017-09-03. Retrieved 2017-09-03.
  9. ^
    ISBN 0-201-63287-X. (xviii+856+vi pages, 3.5"-floppy) Errata: [2][3]
  10. ^ Paul, Matthias R. (1997-10-02). "Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM README.TXT". Archived from the original on 2003-10-04. Retrieved 2009-03-29. [4]
  11. Caldera, Inc. 1998-12-24. Archived from the original
    on 2019-04-08. Retrieved 2019-04-08.
  12. ^ Paul, Matthias R. (2001-06-10) [1995]. "DOS COUNTRY.SYS file format" (COUNTRY.LST file) (1.44 ed.). Archived from the original on 2016-04-20. Retrieved 2016-08-20.
  13. ^ Paul, Matthias R. (1997-06-07) [April 1994]. "Chapter 1.3.xi: Überlange Pfade". NWDOS7UN.TXT — Zusammenfassung der dokumentierten und undokumentierten Fähigkeiten von Novell DOS 7. MPDOSTIP (in German). Archived from the original on 2016-11-07. Retrieved 2016-11-07.
  14. ^ Paul, Matthias R. (1997-07-30) [1994-05-01]. NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds. MPDOSTIP (in German) (3 ed.). Archived from the original on 2017-09-10. Retrieved 2014-08-06. (NB. NWDOSTIP.TXT is a comprehensive work on Novell DOS 7 and OpenDOS 7.01, including the description of many undocumented features and internals. It is part of the author's yet larger MPDOSTIP.ZIP collection maintained up to 2001 and distributed on many sites at the time. The provided link points to a HTML-converted older version of the NWDOSTIP.TXT file.) [5]
  15. ^
    HMA
    and the non-obvious design constraints to be observed when developing resident system extensions to be loaded into the HMA.)
  16. ^ Paul, Matthias R. (2002-04-01). "Fix for CauseWay DOS extender under DR-DOS 7.0x EMM386.EXE". Newsgroupcomp.os.msdos.programmer. Archived from the original on 2018-09-19. Retrieved 2018-09-19.
  17. ^ Paul, Matthias R. (2001-08-18). "Re: [fd-dev] On GRAFTABL and DISPLAY.SYS (Was: Changing codepages in FreeDOS)". freedos-dev. Archived from the original on 2017-09-04. Retrieved 2017-09-04.
  18. ^ "WineFeatures - The Official Wine Wiki". Retrieved 2010-02-03.
  19. ^ "Application Installation on 64-bit Systems". Microsoft. 2018-05-31. Archived from the original on 2021-07-22. Retrieved 2016-05-26.
  20. ^ "64-bit versions of Windows do not support 16-bit components, 16-bit processes, or 16-bit applications". 2.0. Microsoft. 2020-09-08 [2011-09-11]. KB896458. Archived from the original on 2021-09-12. Retrieved 2016-05-26.
  21. ^ Yakal, Kathy (January 1985). "Bruce Artwick / The Designer Behind Flight Simulator II". Compute!'s Gazette. p. 32. Retrieved 2014-07-06.
  22. ^ Excel incorrectly assumes that the year 1900 is a leap year. Retrieved 2019-05-01.
  23. ^ "Software Engineering at Google [Book]". www.oreilly.com. Retrieved 2022-05-31.