fbpx
Wikipedia

Bug compatibility

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 backward compatibility with an older system is that such systems' client programs often do not only depend on their specified interfaces but also 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 edit

DOS edit

Examples can be found in MS-DOS/PC DOS: When MS-DOS/PC DOS 3.1 and higher (including Windows 9x) and OS/2 detect certain FAT OEM labels, they do not trust some BIOS Parameter Block (BPB) values and recalculate them from other disk geometry parameters in order to work around several 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 executable loader contains code specially designed to detect and fix certain widespread applications and stub loaders (such as programs linked with older versions of Microsoft's EXEPACK or 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, DR-DOS also had to be modified to not only emulate many undocumented peculiarities and undesirable properties of MS-DOS and PC DOS (like having to use certain misleading filenames such as IBMBIO.COM, IBMDOS.COM or COUNTRY.SYS for files which do not follow the specs for executables under DOS,[10][11][12][nb 1] or having to introduce a directory path length-limited 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 edit

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 edit

During development of its IBM PC compatible, Compaq engineers found that Microsoft Flight Simulator would not run because of what subLOGIC's Bruce Artwick described as "a bug in one of Intel's chips", forcing them to make their computer bug-compatible with the IBM PC.[21] Another hardware example is found in the design of the IBM Personal Computer/AT A20 address line to emulate the behaviour in older processors.[8][15]

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

Hyrum Wright, an engineer at Google, talks about this problem that he observed firsthand while working on C++ core libraries. It was Titus Winters, also an engineer at Google, who popularized this concept on a larger scale as "Hyrum's Law".[23]

See also edit

Notes edit

  1. ^ The IBMBIO.COM and IBMDOS.COM files are special binary images containing executable code. Accidentally trying to run them from the prompt as if they were normal COM-style programs would result in the system to crash. This is the reason why these files have the hidden attribute set under MS-DOS/PC DOS. This could have been avoided by choosing other file extensions (like with DRBIOS.SYS and DRBDOS.SYS), but could not be done later on in order to remain compatible with various tools expecting these particular filenames. To eliminate the risk of crashes, these files were changed into fat binaries with DR-DOS 7.02 and higher now including tiny stubs to exit gracefully when invoked inappropriately.[a][b]

References edit

  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. InfoWorld Media Group, Inc. 16 (52): 18.
  4. ^ Williams, Dave (1992-01-12). Programmer's Technical Reference for MSDOS and the IBM PC. ISBN 1-878830-02-3. 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". Newsgroup: comp.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). . www.drdos.org. Archived from the original on 2016-03-04. Retrieved 2011-12-17.
  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. ^ a b c Schulman, Andrew; Brown, Ralf D.; Maxey, David; Michels, Raymond J.; Kyle, Jim (1994) [November 1993]. Undocumented DOS: A programmer's guide to reserved MS-DOS functions and data structures - expanded to include MS-DOS 6, Novell DOS and Windows 3.1 (2 ed.). Reading, Massachusetts: Addison Wesley. ISBN 0-201-63287-X. (xviii+856+vi pages, 3.5"-floppy) Errata:
  10. ^ Paul, Matthias R. (1997-10-02). . Archived from the original on 2003-10-04. Retrieved 2009-03-29.
  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.). 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). 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.). 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.)
  15. ^ a b Paul, Matthias R. (2002-02-02). "Treiber dynamisch nachladen (Intra-Segment-Offset-Relokation zum Laden von TSRs in die HMA)" [Loading drivers dynamically (Intra-segment offset relocation to load TSRs into the HMA)]. de.comp.os.msdos (in German). Archived from the original on 2017-09-09. Retrieved 2017-07-02. (NB. Gives a comprehensive overview on the history and "nature" of the 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". Newsgroup: comp.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. 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. 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.

compatibility, computer, hardware, software, said, compatible, exactly, replicates, undesirable, feature, previous, version, phrase, found, jargon, file, aspect, maintaining, backward, compatibility, with, older, system, that, such, systems, client, programs, . 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 backward compatibility with an older system is that such systems client programs often do not only depend on their specified interfaces but also 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 Contents 1 Examples 1 1 DOS 1 2 Windows 1 3 Other 2 See also 3 Notes 4 ReferencesExamples editDOS edit Examples can be found in MS DOS PC DOS When MS DOS PC DOS 3 1 and higher including Windows 9x and OS 2 detect certain FAT OEM labels they do not trust some BIOS Parameter Block BPB values and recalculate them from other disk geometry parameters in order to work around several 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 executable loader contains code specially designed to detect and fix certain widespread applications and stub loaders such as programs linked with older versions of Microsoft s EXEPACK or 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 DR DOS also had to be modified to not only emulate many undocumented peculiarities and undesirable properties of MS DOS and PC DOS like having to use certain misleading filenames such as IBMBIO COM IBMDOS COM or COUNTRY SYS for files which do not follow the specs for executables under DOS 10 11 12 nb 1 or having to introduce a directory path length limited 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 edit 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 edit During development of its IBM PC compatible Compaq engineers found that Microsoft Flight Simulator would not run because of what subLOGIC s Bruce Artwick described as a bug in one of Intel s chips forcing them to make their computer bug compatible with the IBM PC 21 Another hardware example is found in the design of the IBM Personal Computer AT A20 address line to emulate the behaviour in older processors 8 15 Microsoft Excel has always had a deliberate leap year bug which falsely treats 29 February 1900 as an actual date to ensure backward compatibility with Lotus 1 2 3 22 Hyrum Wright an engineer at Google talks about this problem that he observed firsthand while working on C core libraries It was Titus Winters also an engineer at Google who popularized this concept on a larger scale as Hyrum s Law 23 See also edit nbsp Engineering portalAARD code Plug compatible Software bug APINotes edit The IBMBIO COM and IBMDOS COM files are special binary images containing executable code Accidentally trying to run them from the prompt as if they were normal COM style programs would result in the system to crash This is the reason why these files have the hidden attribute set under MS DOS PC DOS This could have been avoided by choosing other file extensions like with DRBIOS SYS and DRBDOS SYS but could not be done later on in order to remain compatible with various tools expecting these particular filenames To eliminate the risk of crashes these files were changed into fat binaries with DR DOS 7 02 and higher now including tiny stubs to exit gracefully when invoked inappropriately a b References edit 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 Bug compatible www jargon net Retrieved 2010 02 03 Pontin Jason 1994 12 26 Windows 95 s third delay needs polish InfoWorld InfoWorld Media Group Inc 16 52 18 Williams Dave 1992 01 12 Programmer s Technical Reference for MSDOS and the IBM PC ISBN 1 878830 02 3 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 Bass Wally 1994 02 14 Cluster Size Newsgroup comp os msdos programmer Archived from the original on 2017 09 09 Retrieved 2006 10 14 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 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 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 a b c Schulman Andrew Brown Ralf D Maxey David Michels Raymond J Kyle Jim 1994 November 1993 Undocumented DOS A programmer s guide to reserved MS DOS functions and data structures expanded to include MS DOS 6 Novell DOS and Windows 3 1 2 ed Reading Massachusetts Addison Wesley ISBN 0 201 63287 X xviii 856 vi pages 3 5 floppy Errata 2 3 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 DR DOS 7 03 WHATSNEW TXT Changes from DR DOS 7 02 to DR DOS 7 03 Caldera Inc 1998 12 24 Archived from the original on 2019 04 08 Retrieved 2019 04 08 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 Paul Matthias R 1997 06 07 April 1994 Chapter 1 3 xi Uberlange Pfade NWDOS7UN TXT Zusammenfassung der dokumentierten und undokumentierten Fahigkeiten von Novell DOS 7 MPDOSTIP in German Archived from the original on 2016 11 07 Retrieved 2016 11 07 Paul Matthias R 1997 07 30 1994 05 01 NWDOS TIPs Tips amp 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 a b Paul Matthias R 2002 02 02 Treiber dynamisch nachladen Intra Segment Offset Relokation zum Laden von TSRs in die HMA Loading drivers dynamically Intra segment offset relocation to load TSRs into the HMA de comp os msdos in German Archived from the original on 2017 09 09 Retrieved 2017 07 02 NB Gives a comprehensive overview on the history and nature of the HMA and the non obvious design constraints to be observed when developing resident system extensions to be loaded into the HMA Paul Matthias R 2002 04 01 Fix for CauseWay DOS extender under DR DOS 7 0x EMM386 EXE Newsgroup comp os msdos programmer Archived from the original on 2018 09 19 Retrieved 2018 09 19 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 WineFeatures The Official Wine Wiki Retrieved 2010 02 03 Application Installation on 64 bit Systems Microsoft 2018 05 31 Archived from the original on 2021 07 22 Retrieved 2016 05 26 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 Yakal Kathy January 1985 Bruce Artwick The Designer Behind Flight Simulator II Compute s Gazette p 32 Retrieved 2014 07 06 Excel incorrectly assumes that the year 1900 is a leap year Retrieved 2019 05 01 Software Engineering at Google Book www oreilly com Retrieved 2022 05 31 Retrieved from https en wikipedia org w index php title Bug compatibility amp oldid 1189218376, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.