LINUX.ORG.RU
ФорумTalks

Christine или у вашей машины может быть своя душа

 , , , ,


0

1

... и она вполне может захотеть вас убить.

Возможно, кто–нибудь помнит дело о «Внезапном ускорении в машинах Toyota, Scion и Lexus» 2010–2012 годов. Национальное управление безопасностью движения на трассах США (NHTSA) считает, что с 2000 года по середину мая 2010 года в подобных авариях погибло 89 человек и 57 получили увечья. Также NHTSA считает, что аварии связаны с проблемами в электронике
В ходе годичного исследования было выявлено, что программное обеспечение не соответствует стандартам MISRA (Motor Industry Software Reliability Association) и содержит 7134 нарушения (Toyota парировали тем, что у них свои собственные стандарты). Точную причину «залипания» педали установить не удается.
По результату исков Toyota выплачивает 1,6 миллиарда долларов в досудебном порядке и выпускает апдейт ПО для некоторых моделей машин, хотя и отвергает все обвинения
К делу подключаются два инженера: Майкл Барр и Филипп Купман. На 20 месяцев они погружаются в самый страшный кошмар, который только может себе представить любой программист, — разбирать чужой код на 800 страниц. Номер отеля, в котором работали инженеры, круглосуточно охранялся — охрана следила, чтобы никто не вносил и не выносил никаких бумаг.
NASA нашли 7134 нарушения в коде. Барр нашел в коде 81 514 нарушений, в том числе и нарушений собственных стандартов Toyota. Большая часть функций была полностью нетестируема. Также код содержал более 10 000 (я напишу это прописью — десяти тысяч) глобальных переменных.
Ясное дело, ни к чему хорошему это приводить не могло. Переполнения стека, ошибки памяти. В результате машина могла ВНЕЗАПНО решить разгоняться и отказываться тормозить. Также в последние секунды перед аварией в черный ящик писалась неверная информация.
Неисправности в машинах Toyota — далеко не уникальный случай так называемой проблемы внезапного непреднамеренного ускорения. Похожая проблема встречалась ранее у Audi.


Я пошел пересматривать Christine (1983). А вы проверьте не называется ли ваша машина Toyota. Или Audi

★★★★★

Также код содержал более 10 000 (я напишу это прописью — десяти тысяч) глобальных переменных.(...)Переполнения стека, ошибки памяти.

может они как раз полностью отказались от использования стека и любых других способов выделения памяти в рантайме?
(и таки да, боянъ)

Anonymous ★★★★★ ()

разбирать чужой код на 800 страниц.

никто не вносил и не выносил никаких бумаг.

ОМГ, они код анализировали на бумаге вручную? По-моему, они упоролись.

81 514 нарушений

Все эти цифры не имеют никакого смысла. Пусть показывают конкретные проблемы. А то, может, там отступы были не того размера, что и даёт 81514/800 ~= 101 нарушение на лист.

10000 глобальных переменных.

Может, это был вообще автосгенерированный код?

В общем, код в студию.

true_admin ★★★★★ ()

Также код содержал более 10 000 (я напишу это прописью — десяти тысяч) глобальных переменных.

Я просто не представляю себе как нужно писать код, что бы так получилось.

rezedent12 ☆☆☆ ()
Ответ на: комментарий от rezedent12

10 000 глобальных переменных в JS - это просто!

вот на сях сложнее.

Deleted ()
Ответ на: комментарий от Karapuz

Вообще я не знал, что на ЛОРе была эта тема, но помнил, что претензии эти видел ещё два года назад, сразу после окончания суда. Так что в любом случае инфа два года как известная.

kim-roader ★★ ()

Также код содержал более 10 000 (я напишу это прописью — десяти тысяч) глобальных переменных.

Переменные, значит, все проблемы от них.

ieeya ()

Номер отеля, в котором работали инженеры, круглосуточно охранялся — охрана следила, чтобы никто не вносил и не выносил никаких бумаг.(...) (я напишу это прописью — десяти тысяч)

по большому счёту, всё сводится к тому, что проделана основательная работа по пусканию пыли в глаза присяжным - а конкретную ошибку, которая привела к гибели людей(если она была) так и не нашли.

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

Anonymous ★★★★★ ()

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

Sadler ★★★ ()

Большая часть функций была полностью нетестируема. Также код содержал более 10 000 (я напишу это прописью — десяти тысяч) глобальных переменных.

Был какой-то event-driven код на спец. DSL, из которого был сгенерированы сишные простыни.

Потом пришли два петуха, взяли автогенерированные сишные простыни и закукарекали.

SystemD-hater ()

Это не возможно!

более 10 000 (я напишу это прописью — десяти тысяч) глобальных переменных.

У меня строго после 10 глобальных переменных превышающих 64Kb начинались произвольные глюки, значит они профессионалы, раз смогли костылями так подпереть код, чтобы машина смогла вообще тронуться с места.
P.S. Получается что мой код тогда идеален.

xwicked ★★ ()

вот на сях сложнее.

На геймдев.ру один школьник как-то запостил свою игрушку. До 10 000 там наверное всё-таки не дотягивало, но тренд был :) Называлась «ЩИ - симулятор жестокости»

Harald ★★★★★ ()
Ответ на: Это не возможно! от xwicked

У меня строго после 10 глобальных переменных превышающих 64Kb начинались произвольные глюки

Точно глобальных, не на стеке?

Harald ★★★★★ ()
Ответ на: комментарий от rezedent12

очень просто: ради экономии памяти, и, там, скорее всего, массив считали за несколько переменных a[0] — одна переменная, a[1] — другая...

next_time ★★★★★ ()

То ли дело ВАЗ с электроникой на механических реле.

Myau ★★★★ ()
Ответ на: комментарий от Myau

А как же е-газ и жатка? Хотя тормоз и ручник по прежнему классические.

Suigintou ★★★★ ()
Ответ на: комментарий от next_time

массив считали за несколько переменных a[0] — одна переменная, a[1] — другая...

Надеюсь хоть индексы массива были константами, а не магическими числами.

rezedent12 ☆☆☆ ()

Ну так, потогонное производство, программисты за чашку риса и рабочий день по 12 часов. Чего вы хотели?

dogbert ★★★★★ ()
Ответ на: комментарий от dogbert

Чего вы хотели?

Для начала независимой экспертизы кода перед выпуском в производство.

vurdalak ★★★★★ ()
Ответ на: комментарий от vurdalak

Хе. Хе-хе. Может еще и каждый подшипник насосной системы Протонов проверять перед запуском? Это ж сколько дармоедов-контролеров придется держать

Karapuz ★★★★★ ()
Ответ на: комментарий от Karapuz

Ну например в архитектуре вполне себе держали и держат — прежде чем чертежи планировщиков будут реализовывать строители, их должны просмотреть государственные эксперты. А когда построят, ещё раз смотрят уже другие эксперты. Иначе бы у нас дома и заводы рушились только так.

vurdalak ★★★★★ ()
Ответ на: комментарий от vurdalak

Зато чертежи дорог никто не смотрит, ни перед укладкой асфальта, ни после укладки. Тоже экономят, как и в тоёте. а потом машины колесом в яму - и в кювет

Karapuz ★★★★★ ()
Ответ на: комментарий от Karapuz

Дороги на момент постройки нормальные, и планы у них есть. А то что они говённо построены — так это по чертежу не проверишь.

vurdalak ★★★★★ ()
Ответ на: комментарий от vurdalak

А то что они говённо построены — так это по чертежу не проверишь.

Неправда, у них есть оборудование для промера параметров асфальта ультразвуком. просто не хотят

Karapuz ★★★★★ ()
Ответ на: комментарий от Harald

на каком-то форуме видел изливания на тему, 32k именованных параметра для функции? кто придумал такое ограничение. человек хотел в фунцию передать массив произвольного размера, распаковывал их в переменные и упирался в количество

bl ★★★ ()

NASA нашли 7134 нарушения в коде. Барр нашел в коде 81 514 нарушений, в том числе и нарушений собственных стандартов Toyota. Большая часть функций была полностью нетестируема.

И эти люди запрещают ковыряться в носу коде прошивок!

Hurenweibel ★★ ()
Ответ на: комментарий от Harald

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

xwicked ★★ ()

Поэтому я собираюсь отреставрировать старый карбюраторный Форд. Никакого проприетарного кода в моей машине не будет.

Chaser_Andrey ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.