В этой статье будет затронут вопрос надёжности встраиваемого программного обеспечения, используемого / программирование :: длиннопост :: баги :: ошибки :: Patriot :: военная техника

программирование военная техника Patriot ошибки баги длиннопост песочница удалённое 

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


1 TiK*«m>'0'*rA»o»0«M,программирование,военная техника,Patriot,ошибки,баги,длиннопост,песочница,удалённое


11 февраля 1991 года Patriot Project Office получил израильские данные о дефекте в ракетной системе Patriot. Они нашли, что, если система работает 8 часов, она начинает мазать на 20%. Они прикинули, что после 20 часов работы система начинает промахиваться настолько, что перестанет быть способной захватывать, отслеживать и поражать баллистические ракеты. Американские военные не приняли во внимание всю важность открытия, заявив, что система предназначена для портативных и краткосрочных защитных операций и что никто никогда не будет использовать систему больше 8 часов.


16 февраля был выпущен Bug Fix, но, чтобы его внедрить во все единицы боевой техники, требовалось время, ибо война.


21 февраля военные выпускают указание, что система не должна работать "долго". Военные не уточнили сколько длится "долго".


25 февраля в Дахране (Саудовская Аравия) в казарму в гости к американцам прилетела баллистичекая ракета "керосинка" (она же Р-17, она же Scud). 28 убито 96 ранено, потому что ЗРК "Патриот" промахнулся из-за программной ошибки.


26 февраля Bug Fix был доставлен в Дахран.


Figure 5: Incorrectly Calculated Range Gate
3. Track Action - Only Range Gated Portion of Beam Processed,программирование,военная техника,Patriot,ошибки,баги,длиннопост,песочница,удалённое


программирование,военная техника,Patriot,ошибки,баги,длиннопост,песочница,удалённое


Р-17 (по классификации МО США и НАТО — SS-1c Scud B, экспортное обозначение R-300, неофициально — "керосинка") — советская жидкостная одноступенчатая баллистическая ракета на долгохранимых компонентах топлива.


программирование,военная техника,Patriot,ошибки,баги,длиннопост,песочница,удалённое


программирование,военная техника,Patriot,ошибки,баги,длиннопост,песочница,удалённое


Военные осматривают ракету типа Р-17 сбитую в пустыне ЗРК MIM-104 "Патриот" во время операции Desert Storm


MIM-104 "Патриот" (англ. MIM-104 Patriot, перевод с английского — Патриот) — американский зенитный ракетный комплекс (ЗРК), используемый армией США и их союзниками.


Patriot Air & Missile Defense System: How Patriot Works
T) Mscfcmve signal
Control Station.
communicate with friendly forces, monitor threats and prioritize targets, but the system is capable of working autonomously
[3] Missile Launcher.
Launcher points and fires a missile, which is shipped


программирование,военная техника,Patriot,ошибки,баги,длиннопост,песочница,удалённое


программирование,военная техника,Patriot,ошибки,баги,длиннопост,песочница,удалённое


A detailed view of an AN/MPQ-53 radar set. The circular pattern on the front of the vertical component is the system's main phased array, consisting of over 5,000 individual elements, each about 39 millimeters (1.535 in) diameter.


	к	P Г .	- if* ; ■ »< ... rim	шш		
f fe	yv	1 ОШ1 * Ш1 	 ЙГг	/ 1 I. V;»' > А» г ¿U* I» “ -GJE 4^ • ■• • — -, a i ^		ч__ *,программирование,военная техника,Patriot,ошибки,баги,длиннопост,песочница,удалённое


PAC-3 missile launcher, note four missiles in each canister


В программном обеспечении, отвечающем за ведение цели, присутствовал баг, из-за которого со временем внутренние часы постепенно отходили от истинного значения времени.


Системное время хранилось как integer в 24-битном регистре с точностью до одной десятой секунды. Поэтому на каждом такте по 0.1 сек "терялась" часть времени. При рассчете данные переводились в real numbers [источник].


Число 1/10 равно 1/24+1/25+1/28+1/29+1/212+1/213+... Другими словами, бинарное разложение 1/10 = 0.0001100110011001100110011001100... Поэтому 24 bit регистр в системе Patriot хранил вместо этого 0.00011001100110011001100 внося ошибку равную 0.0000000000000000000000011001100... в двоичном исчислении, или примерно 0.000000095 в десятичном. За сто часов работы набегает 0.000000095?100?60?60?10=0.34 секунды


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


Софт был написан на ассемблере 15-20 лет назад и с тех пор несколько раз модифицировался различными командами программистов.


Несколько слайдов из отчета, где выявляется проблемы с системой Patriot:


Acquire. Search all of radar volume Validate. Detection received narrow search volume to establish a range gate. Track. Only established range gate area processed
Patriot Operational Cycle
TBM,программирование,военная техника,Patriot,ошибки,баги,длиннопост,песочница,удалённое


Patriot Range Gate
■ Computer constraints
-	Patriot ECS performs calculations in floating point
-	Registers(4) are only 24 bits long
• Therefore conversion of time from an integer to real is precise to only 24 bits
24
-	[0.1T] is non-terminating in binary —*■ infinite number of bits to


Patriot Range Gate
■ A naive analysis would indicate following RGA errors
Hours	Seconds	Calculated Time (sec)	Inaccuracy (sec)	Approximate Shift In RGA (m)
0	0	0	0	0
1	3600	3599.9966	0.0034	7
8	28800	28799.9725	0.0025	55
20(a)	72000	71999.9313	0.0687	137
48	172800	172799.8352	0.1648	330
72


Золотые правила:


Правильно подбирайте размер. Всегда тщательно перепроверяйте, сколько бит вам требуется для хранения каждой переменной выбрать (long, int, double, float, и пр) в конкретном языке и конкретной операционной системе.
Используйте целые числа вместо float где только возможно. Храните деньги в центах, а не долларах. Если все же необходимо использовать float, используйте двойную точность.
Никогда не используйте float в качестве счетчика цикла.
Избегайте смешанных типов (signed, unsigned; integer, floating point; single precision, double precision). Тщательно производите конвертацию.
Проверяйте возможные ситуации переполнения. Проверяйте деление на ноль.
Читать еще про Patriot
Обсуждение бага на hackernews
New York Times: AFTER THE WAR; Army Is Blaming Patriot's Computer For Failure to Stop the Dhahran Scud
Lethal Software Defects: Patriot Missile Failure
Software Bug Report: Patriot Missile Software Problem
Заключение

Мы хотим привлечь внимание людей к проблемам надежности программного обеспечения. Программы — это давно не только странные непонятные расчёты ученых на Fortran или компьютерные игры. Это то, что давно и повсеместно нас окружает.


Раньше серьезные баги наносили вред в узких специфичных областях — ракетостроение мирное (Ariane 5) и военное. Сейчас же с ошибкой в программе вы можете столкнуться, не только сидя за компьютером, но и сидя в автомобиле (Toyota) или посещая больницу (Therac-25). Мы одни из тех, кто сражается на стороне программистов против багов. Нами разработан статический анализатор кода PVS-Studio, позволяющий выявлять ещё на этапе кодирования многие ошибки в программах на языке С, С++ и С#. 




Подробнее
1 TiK*«m>'0'*rA»o»0«M
Figure 5: Incorrectly Calculated Range Gate 3. Track Action - Only Range Gated Portion of Beam Processed



Patriot Air & Missile Defense System: How Patriot Works T) Mscfcmve signal Control Station. communicate with friendly forces, monitor threats and prioritize targets, but the system is capable of working autonomously [3] Missile Launcher. Launcher points and fires a missile, which is shipped ready to launch in a canister A missile can be made ready to fire in less than 9 seconds. The launcher can be remotely located from the radar, ^ Patriot missile. The missile is tracked by the radar set and guided to a target with help from the control station's computer and its own homing sensors. 5^ PAC-3 missile. Destroys targets by ramming them; 16 per launcher. Length: 17.1 ft. Weight: 688 lbs Speed: Mach 5* 6^ Guidance Enhanced Missile Plus (GEM»). Warhead explodes near the target; four per launcher Missile features enhanced fuzing and gjidance capabilities. Length: 17.4 ft. Weight: 2000 lbs Speed: Mach 5» [1 Radar Set. Radar sweeps the sky for threats. If an incoming object is found, the radar helps determine il it is a missile, fighte' jet. cruise missile, or a remotely piloted vehicle. Copyright © 2002 Raytheon Company


 к P Г . - if* ; ■ »< ... rim шш f fe yv 1 ОШ1 * Ш1 ЙГг / 1 I. V;»' > А» г ¿U* I» “ -GJE 4^ • ■• • — -, a i ^ ч__ *
Acquire. Search all of radar volume Validate. Detection received narrow search volume to establish a range gate. Track. Only established range gate area processed Patriot Operational Cycle TBM
Patriot Range Gate ■ Computer constraints - Patriot ECS performs calculations in floating point - Registers(4) are only 24 bits long • Therefore conversion of time from an integer to real is precise to only 24 bits 24 - [0.1T] is non-terminating in binary —*■ infinite number of bits to represent - Therefore [0.1] 2/24 = 0.1T (1- 2 20) {Propagation error £ = 0.0001%} - Or [T] 2/24 (fp) = T - 6(T) ....ON PAPER A PROBLEM
Patriot Range Gate ■ A naive analysis would indicate following RGA errors Hours Seconds Calculated Time (sec) Inaccuracy (sec) Approximate Shift In RGA (m) 0 0 0 0 0 1 3600 3599.9966 0.0034 7 8 28800 28799.9725 0.0025 55 20(a) 72000 71999.9313 0.0687 137 48 172800 172799.8352 0.1648 330 72 259200 259199.7528 0.2472 494 100(b) 360000 359999.6667 0.3433 687 a. Continuous operation exceeding about 20 hours-target outside range gate b. AJpha Battery ran continuously for about 100 hours ■ But actually we use 5(T) Next relative to 5(T) Now for RGA ■ Therefore negligible errors
программирование,военная техника,Patriot,ошибки,баги,длиннопост,песочница,удалённое
Еще на тему
Развернуть
Это же не научны журнал.
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
Не знаю, кто писал большую часть птиц, но я хочу обратить внимание на особенность, позволяющую провести инъекцию произвольного яйца в гнездо. Дело в том, что птица проверяет только расположение и количество яиц, но не их хэши. В 20% случаев кукушка, эксплуатирующая этот баг, может внести яйцо с сох
подробнее»

баги программирование животные длиннопост

Не знаю, кто писал большую часть птиц, но я хочу обратить внимание на особенность, позволяющую провести инъекцию произвольного яйца в гнездо. Дело в том, что птица проверяет только расположение и количество яиц, но не их хэши. В 20% случаев кукушка, эксплуатирующая этот баг, может внести яйцо с сох
Тестировшик: *не накодит ни одного Бага в моем коде*
Я следующие 5 дней: 1 TiK*«m>'0'*rA»o»0«M