From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,LOTS_OF_MONEY autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail From: Keith Thompson Newsgroups: comp.lang.ada Subject: Re: Mariner 1 / FORTRAN bug Date: Thu, 08 Aug 2019 10:51:03 -0700 Organization: None to speak of Message-ID: References: <1992Dec4.141816.1@happy.colorado.edu> <86986725-f34e-46d7-9efc-d15d94379048@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: reader02.eternal-september.org; posting-host="c2e3c649afb59b0d1215e9c099fa96fa"; logging-data="20850"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX181sgXRfXlj8B1KkhHOl2wZ" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) Cancel-Lock: sha1:A64v8d2OswLyUFN3XUBwEtvAqCc= sha1:pfZ7LwM0xDezA1GOUq3VFV+Trew= Xref: reader01.eternal-september.org comp.lang.ada:57013 Date: 2019-08-08T10:51:03-07:00 List-Id: robin.vowels@gmail.com writes: > On Saturday, December 5, 1992 at 7:18:16 AM UTC+11, srhe...@happy.colorado.edu wrote: > >> I heard a rumer about a multi-million (or multi-billion) dollar satellite going >> astray because some one left a comma out of a FORTRAN DO loop and it was still >> syntactically legal. Can anybody give me a reference on this? > > A google search produced this first try: > > > This has come up in a couple of threads in the last month or two, so I > finally got around to looking it up. The famous FORTRAN punctuation > error occured on Mariner 1 in 1962. Here is a description of the > error: > > "There is a useful lesson to be learned from the failure of one of the >earliest planetary probes launched by NASA. The cause of the failure >was eventually traced to a statement in its control software similar to >this: > > DO 15 I = 1.100 > > when what should have been written was: > > DO 15 I = 1,100 > > but somehow a dot had replaced the comma. Because Fortran ignores > spaces, this was seen by the compiler as: > > DO15I = 1.100 > which is a perfectly valid assignment to a variable called DO15I and > not at all what was intended." > > Information found here: > > http://www.star.le.ac.uk/~cgp/prof77.html#tth_sEc1.3 According to https://en.wikipedia.org/wiki/Mariner_1 : In other accounts, the bug consisted of: * a period typed in place of a comma, causing a FORTRAN DO loop statement to be misinterpreted (although there is no evidence that FORTRAN was used in the mission), of the form "DO 5 K=1. 3" interpreted as assignment "DO5K = 1.3" There are anecdotal reports that there was in fact such a bug in a NASA orbit computation program at about this time, but it was a program for Project Mercury, not Mariner, and the claim was that the bug was noticed and fixed before any serious consequences resulted. Also discussed on RISKS Digest, including an account from someone who worked at NASA in 1963. The error caused a DO loop to execute just once rather than iterating to a more precise solution. The resulting calculation was good enough for the Mercury suborbital flights, but not for the later orbital flights. http://catless.ncl.ac.uk/Risks/9.54.html#subj1.1 And see here: http://catless.ncl.ac.uk/Risks/8/75#subj1 for a description of a missing "bar" in a hand-written calculation that apparently caused the loss of the Mariner 1 Venus probe in 1962. -- Keith Thompson (The_Other_Keith) kst-u@mib.org Will write code for food. void Void(void) { Void(); } /* The recursive call of the void */