Перший баг на Марсі

В 1971 році СРСР доставили на Марс перші в світі планетоходи «на лижах», які повинні були щупом (динамічний пенетрометр та гамма-променевої щільності) ткнути поверхню, і сказати — Марс твердий або рідкий курний. Перший апарат розбився 27 листопада, другий здійснив м'яку посадку 2 грудня, але марсоходик не зміг вибратися з «шкаралупи» посадкового модуля, тому спробу не зарахували.

Минуло 25 років.
4 липня 1997 року на Марс прилетів американський апарат і привіз «прибульця» з першим багом.


Кадр з к/ф «Марсіанин». Головний герой тримає в руках марсохід Sojourner

Проект був під загрозою, але потужні інструменти налагодження операційної системи і відмінна робота програмістів на Землі (хлопці, що треба) дозволили в найкоротші терміни всі швиденько виправити.


Соджорнер (Sojourner)
image

Вартість програми була відносно невисокою — 265 млн $.
Марсохід пропрацював протягом 83 сол.

Назва марсохода, Соджорнер, дослівно означає «тимчасовий мешканець» або «проїжджий, воно було дано переможцем голосування — 12-річним хлопчиком зі штату Коннектикут, США. Марсохід названий на честь жінки-борця з негритянським рабством — Соджорнер Труть.

image

Результати місії:

  • 2.3 мільярди біт інформації
  • 16500 зображень з посадкового модуля
  • 550 зображень з марсоходика
  • 15 хімічних аналізів каменів і пилу
  • багато кліматичних даних
  • їжа для роздумів тестувальникам
Priority inversion
image

Інверсія пріоритету відбувається тоді, коли дві або декілька потоків з різними пріоритетами перебувають у спорі, який з них повинен бути обслужений процесором.

image
Комп'ютер на посадковому модулі — радиозащищенный IBM Risc 6000 Single Chip (Rad6000 SC) 20 MIPS CPU з 128 MB RAM і 6 MB EEPROM. Операційка — VxWorks.

image
На ровері був 0.1 MIPS Intel 80C85 CPU з 512 KB of RAM і 176 KB твердотільної флеш-пам'яті.


На 1553 шині висять 3 тягаючи з різними пріоритетами.

При зборі метеорологічних даних ровер завис і став перезавантажуватися. Інженери на Землі дістали копію софта і почали розбиратися в чому справа. Копаючись в докладних логах, за 18 годин інженери зрозуміли в чому справа.
image

image

Залишалося тільки підправити кілька прапорів для семафора.

Як виправляли баг

No, we did not use the vxWorks shell to change the software (although the shell is usable on the spacecraft). The process of «patching» the software on the spacecraft is a specialized process. It involves sending the differences between what you have onboard and what you want (and have on Earth) to the spacecraft. Custom software on the spacecraft (with a whole bunch of validation) modifies the onboard copy. If you want more info you can send me email.

Процес «виправлення» на космічному кораблі є спеціалізованим процесом. Він включає в себе відправлення відмінностей між тим, що ви маєте на борту і тим, що ви хочете (і маєте на Землі) космічному кораблю.

Софт на космічному кораблі змінює вбудовану копію. Якщо хто хоче подробиць, автор софта пропонує йому написати на пошту glenn.e.reeves@jpl.nasa.gov.

— Глен Рівз, тимлид розробників софта для Mars Pathfinder


How the patch was uploaded?

VxWorks contained a C language interpreter to execute statements on the fly during debugging. The JPL engineers decided to launch the spacecraft with this feature still enabled. A short C program was uploaded to the spacecraft, which when interpreted, changed the values of the mutex flag priority for inheritance from to false true. No more system reset occurred!



Глен Рівз на тлі дубліката Mars Pathfinder, інженер, який знайшов і виправив баг

Баг був виявлений при тестах на Землі ще до запуску, але йому присвоїли низький пріоритет.

Подробиці
image

Презентація китайського експерта



Висновок
Глен Рівз дякує розробників операційки з фірми Wind River, за те що вони розробили систему, що дозволяє дебажити навіть у таких аварійних ситуаціях. Цікаво відзначити, що баг був виявлений на Землі, але «дедлайни» і «пріоритети» змушують запускати в космос апарати, свідомо знаючи, що є «слабкі місця».
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.