Koda v Toyotinih vozilih lahko povzroči prometno nesrečo

Matej Huš

2. nov 2013 ob 12:57:15

Toyota se je v razvpitem oklahomskem procesu poravnala z voznico avtomobila Toyota Camry letnik 2005, ki je septembra 2007 povzročila prometno nesrečo s smrtnim izidom za sopotnico. Toyota bo morala zaradi težav z elektroniko v avtomobilu, ki je povzročila prometno nesrečo, izplačati tri milijone dolarjev. Če se stranki ne bi poravnali, bi sodišče prisodilo kazensko oziroma eksemplarično odškodnine (punitive damages), kjer so zneski še bistveno večji.

O slabi kodi, ki poganja svet, smo že pisali. Večina kode v modernih elektronskih napravah zaradi ekonomskih razlogov ne gre skozi temeljit postopek nadzora kvalitete. Kodo je mogoče pisati praktično brez hroščev, kot dokazujejo vesoljska plovila in letala, a to terja nesorazmerno veliko časa in stroškov. Prav v letalih so začeli uvajanje elektronike kot vmesni člen med upravljavca in stroj – eden prvih pomembnejših primerkov je Boeing 777. Dandanes je fly-by-wire (FBW) standard v letalski industriji in na prste ene roke lahko preštejemo nesreče, ki so bile posledica nedelovanja tega sistema (bistveno pogostejše so sicer težave, ko piloti niso ustrezno usposobljeni za posamezen model in ne poznajo vseh podrobnosti izvedbe FBW v konkretnem primeru). Tudi v modernih avtomobilih je elektronika, kamor pogledamo, in ni redko, ko odpove. Včasih pomaga računalnik v avtomobilu ponovno zagnati, spet drugič je treba na servis.

Toyota je v tem primeru nesrečni proizvajalec, ki je imel obilico težav svojimi avtomobili, saj so v zadnjih letih kar trikrat vpoklicali različne modele zaradi težav s pedalom za plin in zavorami. Leta 2007 so v ZDA vpoklicali nekatere modele (med njimi tudi Camry) zaradi težav s preprogo pred voznikovim sedežem, v katero se je lahko zagozdili pedal za plin. Na koncu so preoblikovali dizajn pedala, zamenjali preproge in dodali sistem za zasilno zaviranje (brake override).

Leta 2010 so vpoklicali novo serijo vozil več modelov, to pot tako v ZDA kot v Evropi. Pedal za plin se je namreč zatikal tudi v modelih brez preproge. Ugotovili so, da se zaradi oblike zagozdi v delno potisnjenem položaju, kar lahko privede do neželenega pospeševanja. Težava je bila resna, saj so izkušnje voznikov, ki se jim je to zgodilo, kazale, da takega vozila ni mogoče ustaviti niti z zavoro niti z ročno zavoro (pomagala pa je izključitev motorja, kar pa hkrati ugasne tudi servo volan, dodatni pritisk v hidravliki zavor itn.).

Istega leta je bil sprva na Japonskem kasneje pa tudi drugod prostovoljni vpoklic vozil zaradi težav z zavornim sistemom v Priusu. Toyota je težavo rešila z nadgradnjo programske opreme, ki je okrepila delovanje sistema proti blokadi koles (ABS). Poleg teh velikih vpoklicev se je zgodilo še nekaj manjših zaradi nepovezanih težav.

Najnovejša poravnava pa je pomembno različna od omenjenih vpoklicev. Težave z nepojasnjenim pospeševanjem je Toyota v tem primeru pripisovala mehanskim težavam, sedaj pa je prvikrat krivec elektronika, in to ne iztrošenost, izrabljenost ali napaka, temveč hroščata koda. Sodni izvedenci, ki so si ogledali izvorno kodo Toyotinega računalniškega sistema v avtomobilih, so ugotovili resne pomanjkljivosti v kodi. Leta 2011 je NASA sicer preiskovala to isto kodo in ni našla pomanjkljivosti, zato je NHTSA (National Highway Traffic Safety Administration) leta 2011 zaprla preiskavo. A vsi niso bili zadovoljni s tem izidom, saj NASA možnosti za nepojasnjeno pospeševanje ni izključila, le potrditi je ni mogla. Zato je istega leta stekla neodvisna preiskava, ki je na koncu izdala 800-stransko poročilo in ugotovila marsikaj, česar NASA ni imela časa ali mogla ali želela. Javnosti pa je postalo dostopno šele po koncu oklahomskega procesa.

Podrobna preiskava in testiranje v simulatorju vožnje pokazala, da je NASA storila nekaj napak v analizi, Toyotina koda pa da še zdaleč ni brez hroščev. Dokazali so, da lahko računalnik registrira napačne ukaze voznika. Problem je zaščita spremenljivk, saj jih lahko spremeni že preskok bita (bit flip) v pomnilniku. Ustrezne zaščite namreč niso implementirali. Zunanji dejavniki, kot so preskoki bitov, ali notranji hrošči, na primer za prekoračitev sklada (stack overflow) ali tekmovanje med klici (race condition), lahko povzročijo prekinitev posameznih podprogramov. Če se to zgodi v nesrečni kombinaciji, je odziv vozila nepričakovan in nezaželen. Raziskovalcem je dejansko uspelo poustvariti en scenarij, v katerem to povzroči neželeno pospeševanje.

V čem se ta primer razlikuje od prejšnjih poravnav? Toyota je namreč že lani dosegla milijardno poravnavo v skupinski tožbi zaradi nepojasnjenega pospeševanja svojih vozil, kar je bila največja v ameriški zgodovini. Tista poravnava je vključevala mehanske težave s pedalom za plin, preproge in težave z zavorami. Tožniki tedaj niso uspeli dokazati, da je težava tudi v izvorni kodi pogonskega sistema, zato se je Toyota zavezala zgolj izplačati odškodnine (do 250 milijonov dolarjev za izgubo vrednosti, do 250 milijonov dolarjev za vozila, ki jih ni mogoče nadgraditi), popraviti pedala in vgraditi sistem za zasilno zaviranje (200-400 milijonov dolarjev) ter seveda plačati sodne stroške (227 milijonov dolarjev). Hkrati je Toyota tedaj dosegla, da se je izognila priznanju kakršnekoli krivde. V poravnavi iz leta 2012 je Toyota izplačala odškodnine zaradi izgubljene vrednosti avtomobilov zaradi slabe publicitete in pokrila stroške izboljšav, ni pa prevzela nikakršne odgovornosti za nesreče.

Tokratna poravnava pa prvič dokazuje, da je težava globlja - koda je hroščata, zato je Toyota prevzela odgovornost za nesrečo. Porota je namreč ugotovila, da je Toyota ravnala malomarno, zato se je Toyota hitro poravnala še pred določitvijo sodne odškodnine. Hkrati so s tem dosegli, da besedilo poravnave ne bo javno. S tem sodnih postopkov še ni konec; analitiki pravijo, da so se šele resno začeli po tej prelomni odločitvi. Naslednji primer bo že prihodnji mesec v Kaliforniji, kjer se bo Toyota zagovarjala pred zveznim sodiščem. V Evropi model Camry ni naprodaj.