From: "ME" <abcdefg@nonodock.net>
Subject: Re: Martian Rover Spirit's mulitasking software reset.
Date: Thu, 7 Sep 2006 20:46:09 -0700
Date: 2006-09-07T20:46:09-07:00 [thread overview]
Message-ID: <12g1ps4mqkpj3de@corp.supernews.com> (raw)
In-Reply-To: 44fff0ed$1_4@newsfeed.slurp.net
Paul,
I think that you are thinking go an earlier problem which was the flash but
this latest problem was as described above. There have been others as
well...
"Paul Anderson" <notme@nowhere.com> wrote in message
news:44fff0ed$1_4@newsfeed.slurp.net...
> All:
>
>>>>>The mars rover Spirit suffered a software reset as a result of a
>>>>>multitasking problem.
>>>>>"The apparent cause was that the rover's central processing unit was
>>>>>overworked as several tasks were running in parallel at the time."
>>>>> The rover uses VX works and I believe C. Testing obviously did not
>>>>>catch this fault. Would the use of Ada made any difference?
>>>>>
>>>>
>>>>My understanding is that there was a "priority inverstion", so had
>>>
>>>That is also my understanding.
>
> This isn't right. The problem with Spirit was with the flash
> memory. It is hard to find a good description of exactly what
> went wrong, but the reboots happened because there were too
> many files open. Whether Ada might have helped is really
> impossible to say, given the paucity of information available.
>
> The Mars Pathfinder mission from 1997 was the one that had the
> priority inversion problem. I doubt that they were aware of
> the problem before launch, as it turned out to be so easy
> to fix. In VxWorks, when you create a semaphore you do
> something like:
>
> sem_id = semMCreate(options);
>
> where options is a bitmask that specifies the set of options
> you want for the semaphore. VxWorks implements the priority
> inheritance protocol, so if you want to use it, you would do:
>
> sem_id = semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE);
>
> On the Pathfinder, they simply did not specify the
> SEM_INVERSION_SAFE option.
>
> Fortunately, the options were held in a global variable, and
> they were able to upload a patch that updated that variable to
> specify that option.
>
> I don't believe that VxWorks had an implementation of the
> priority ceiling protocol at that time.
>
> For more information, see:
> http://en.wikipedia.org/wiki/Priority_inversion
> http://research.microsoft.com/~mbj/Mars_Pathfinder/Mars_Pathfinder.html
>
> There was a third Mars mission that had a software problem: the Mars
> Polar Lander. In this case, during entry to the atmosphere, a sensor
> generated a spurious signal indicating that the craft had landed, and
> the software set a bit accordingly. This shut down the descent engines
> prematurely. The craft then plummetted to the surface and was
> destroyed. The software should have detected that the sensor input
> was invalid at that time, and unset the problematic bit. Apparently
> the addition of a single line of code would have prevented the problem.
>
> It is hard to see how Ada could have helped here either.
>
> Paul
next prev parent reply other threads:[~2006-09-08 3:46 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <12fsfpic0ccq16b@corp.supernews.com>
2006-09-06 4:47 ` Martian Rover Spirit's mulitasking software reset jimmaureenrogers
2006-09-06 10:29 ` Pascal Obry
2006-09-06 6:05 ` Martin Dowie
2006-09-06 12:52 ` jimmaureenrogers
2006-09-06 14:13 ` Bob Spooner
2006-09-06 22:43 ` Mark Lorenzen
2006-09-07 3:22 ` ME
2006-09-07 13:47 ` Paul Anderson
2006-09-08 3:46 ` ME [this message]
2006-09-08 15:01 ` Paul Anderson
2006-09-06 18:39 ` Jeffrey R. Carter
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox