Для получения триального ключа
заполните форму ниже
Team License (базовая версия)
Enterprise License (расширенная версия)
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
GBP
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте папку
Spam/Junk и нажмите на письме кнопку "Не спам".
Так Вы не пропустите ответы от нашей команды.

>
>
Первый баг на Марсе

Первый баг на Марсе

19 Дек 2016

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

Статья впервые была опубликована на русском языке на сайте habrahabr.ru. Статья и её перевод размещаются на нашем сайте с согласия автора.

Прошло 25 лет.

4 июля 1997 года на Марс прилетел американский аппарат и привез "пришельца" с первым багом.

0462_Bug_on_Mars_ru/image1.png

Кадр из к/ф "Марсианин". Главный герой держит в руках марсоход Sojourner

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

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

0462_Bug_on_Mars_ru/image2.png

Стоимость программы была относительно невысокой — 265 млн $.

Марсоход проработал в течение 83 сол.

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

0462_Bug_on_Mars_ru/image3.png

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

  • 2.3 миллиарда бит информации
  • 16500 изображений с посадочного модуля
  • 550 изображений с марсоходика
  • 15 химических анализов камней и пыли
  • много климатических данных
  • пища для размышления тестировщикам

Priority inversion

Инверсия приоритета происходит тогда, когда два или несколько потоков с различными приоритетами находятся в споре, который из них должен быть обслужен процессором.

0462_Bug_on_Mars_ru/image4.png

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

0462_Bug_on_Mars_ru/image5.png

На ровере был 0.1 MIPS Intel 80C85 CPU с 512 KB of RAM и 176 KB твердотельной флэш-памяти.

0462_Bug_on_Mars_ru/image6.png

На 1553 шине висят 3 таска с различными приоритетами.

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

0462_Bug_on_Mars_ru/image8.png

0462_Bug_on_Mars_ru/image9.png

Оставалось только подправить пару флагов для семафора.

Как исправляли баг

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 for priority inheritance from false to true. No more system reset occurred!

0462_Bug_on_Mars_ru/image10.png

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

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

Подробности

0462_Bug_on_Mars_ru/image11.png

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

http://www.slideshare.net/jserv/priority-inversion-30367388

Заключение

Глен Ривз благодарит разработчиков операционки из фирмы Wind River, за то что они разработали систему, позволяющую дебажить даже в таких аварийных ситуациях. Интересно отметить, что баг был обнаружен на Земле, но "дедлайны" и "приоритеты" заставляют запускать в космос аппараты, заведомо зная, что есть "слабые места".

Популярные статьи по теме
Эффект последней строки

Дата: 31 Май 2014

Автор: Андрей Карпов

Я изучил множество ошибок, возникающих в результате копирования кода. И утверждаю, что чаще всего ошибки допускают в последнем фрагменте однотипного кода. Ранее я не встречал в книгах описания этого …
PVS-Studio ROI

Дата: 30 Янв 2019

Автор: Андрей Карпов

Время от времени нам задают вопрос, какую пользу в денежном эквиваленте получит компания от использования анализатора PVS-Studio. Мы решили оформить ответ в виде статьи и привести таблицы, которые по…
Как PVS-Studio оказался внимательнее, чем три с половиной программиста

Дата: 22 Окт 2018

Автор: Андрей Карпов

PVS-Studio, как и другие статические анализаторы кода, часто выдаёт ложные срабатывания. Но не стоит спешить считать странные срабатывания ложными. Это короткая история о том, как PVS-Studio вновь ок…
PVS-Studio для Java

Дата: 17 Янв 2019

Автор: Андрей Карпов

В седьмой версии статического анализатора PVS-Studio мы добавили поддержку языка Java. Пришло время немного рассказать, как мы начинали делать поддержку языка Java, что у нас получилось и какие дальн…
Технологии, используемые в анализаторе кода PVS-Studio для поиска ошибок и потенциальных уязвимостей

Дата: 21 Ноя 2018

Автор: Андрей Карпов

Краткое описание технологий, используемых в инструменте PVS-Studio, которые позволяют эффективно обнаруживать большое количество паттернов ошибок и потенциальных уязвимостей. Статья описывает реализа…
Зло живёт в функциях сравнения

Дата: 19 Май 2017

Автор: Андрей Карпов

Возможно, читатели помнят мою статью под названием "Эффект последней строки". В ней идёт речь о замеченной мной закономерности: ошибка чаще всего допускается в последней строке однотипных блоков текс…
Любите статический анализ кода!

Дата: 16 Окт 2017

Автор: Андрей Карпов

Я в шоке от возможностей статического анализа кода, хотя сам участвую в разработке инструмента PVS-Studio. На днях я был искренне удивлён тому, что анализатор оказался умнее и внимательнее меня.
Как и почему статические анализаторы борются с ложными срабатываниями

Дата: 20 Мар 2017

Автор: Андрей Карпов

В своей предыдущей статье я писал, что мне не нравится подход, при котором статические анализаторы кода оцениваются с помощью синтетических тестов. В статье приводился пример, воспринимаемый анализат…
Бесплатный PVS-Studio для тех, кто развивает открытые проекты

Дата: 22 Дек 2018

Автор: Андрей Карпов

В канун празднования нового 2019 года команда PVS-Studio решила сделать приятный подарок всем контрибьюторам open-source проектов, хостящихся на GitHub, GitLab или Bitbucket. Им предоставляется возмо…
Статический анализ как часть процесса разработки Unreal Engine

Дата: 27 Июн 2017

Автор: Андрей Карпов

Проект Unreal Engine развивается - добавляется новый код и изменятся уже написанный. Неизбежное следствие развития проекта - появление в коде новых ошибок, которые желательно выявлять как можно раньш…

Комментарии (0)

Следующие комментарии

На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Этот сайт использует куки и другие технологии, чтобы предоставить вам более персонализированный опыт. Продолжая просмотр страниц нашего веб-сайта, вы принимаете условия использования этих файлов. Если вы не хотите, чтобы ваши данные обрабатывались, пожалуйста, покиньте данный сайт. Подробнее →
Принять