Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Bug It's funny.  Laugh.

Crashing an In-Flight Entertainment System 322

rabblerouzer writes "Hugh Thompson, who was interviewed by Slashdot on the dangers of e-voting, now has a cool blog entry on how he was able to bring down the gaming/movie console on an airplane. He calls it one of the most interesting examples of a software 'abuse case' he has ever seen." Fortunately the IFE system is totally disjoint from the avionics.
This discussion has been archived. No new comments can be posted.

Crashing an In-Flight Entertainment System

Comments Filter:
  • Re:Err (Score:5, Informative)

    by dxlts ( 1037812 ) on Wednesday February 21, 2007 @12:55AM (#18092622)

    No offense, but I don't think avionics are your run of the mill programmers
    I assume you meant "avionics programmers" aren't run of the mill. I hate to burst your bubble, but for the most part that's not true. I've been a programmer in the aerospace industry for 10 years. Seven of those years were at Boeing, doing (among other things) avionics programming. Unfortunately, from what I saw, avionics programmers for the most part are no smarter than your average programmer. There are a handful of really smart guys who do all the really hard (and high risk) parts of the code, and the remaining 99% of the programmers do the kind of simple, tedious code that you could (almost) train monkeys to do. Not surprisingly, most of them really aren't all that smart. I understand how you might have that misconception though. I used to have that misconception too. I remember when I got my first aerospace job, and I was really intimidated by the fact that I was going to be working with the "big dogs", the hardcore programmers who all had 180 IQ's, etc. I also remember the total shock and disappointment when it turned out to be just the opposite.
  • by UnknownSoldier ( 67820 ) on Wednesday February 21, 2007 @12:58AM (#18092636)
    It's called a 'fencepost [wikipedia.org]' bug, or 'off-by-one [wikipedia.org]' bug.

    Dam lazy programmers not using Assert() these days... :)

    (And yes, I am one, programmer that is, not lazy :)
  • Re:Err (Score:5, Informative)

    by colfer ( 619105 ) on Wednesday February 21, 2007 @01:00AM (#18092658)
    SwissAir 111 went down because the in-flight entertainment & gambling system had been rushed into service, and due to its design overheated and burned down the plane in-flight. This was its design: a separate computer for each seat. The computers (presumably single cards) were located in the ceiling near the front of the passenger compartment. So were the avionics wires. The entertainment/gambling devices overheated, caught fire and the plane crashed near Nova Scotia. Greed. SwissAir is no more.
  • Avionics programmers (Score:5, Informative)

    by Okian Warrior ( 537106 ) on Wednesday February 21, 2007 @01:05AM (#18092690) Homepage Journal
    Okay, I *am* an avionics programmer. Here's some background.

    FAA regulations categorize software in 5 different levels of criticality, depending on how a failure of the software would affect the safety of the plane. Level "A" software is reserved for things like the "low fuel" alarm, which could potentially knock the plane out of the air on failure, to level "C" for things like the cabin pressurization system where the pilots can take emergency actions to compensate, to level "E" for things like the microwave in the kitchen.

    (Beware: I gloss over a few details for clarity.)

    The higher levels of software criticality have progressively higher levels of standards for testing. In the case of level-A software, each individual line of code must be examined for correctness in the context of the rest of the code. Each line of code must be executed as part of testing and actively shown to be correct, and each line of code must be individually code reviewed by another engineer.

    At the higher levels of software, limit testing is required for all function arguments and if-statements. Multiple-clause if statements such as "if A and B but not C" must be tested for all combinations of the subject clauses, and so on.

    In addition to this, all avionics software I've worked on makes a distinction between showing erroneous information and showing *no* information (or, working incorrectly versus not working at all). If the digital altimeter goes blank, the pilots will notice and can take corrective action. If the altimeter is reading the wrong information, then that's a critical failure which could cause an accident.

    Thus, avionics software innards are heavily checked throughout execution to ensure proper operation, and any failure causes the system to immediately go offline. All function arguments are ASSERT'ed for correct range, all calculations are checked for range and accuracy, &c.

    The entertainment system, and in particular a game within the entertainment system, is almost certainly a level-E software component, and so is not required to go through such rigorous testing. The hardware has to be shown to not interfere with the avionics and that's about it.
  • As a side note... (Score:4, Informative)

    by Rackemup ( 160230 ) on Wednesday February 21, 2007 @01:07AM (#18092698) Homepage
    On a recent Air Canada flight the flight attendant actually came on the PA to tell everyone that the in-flight entertainment system was being turned on for our use. She then proceeded to tell us to be sure we didn't push 4 of the buttons on the main screen or else the screen at your seat would crash and they would be unable to fix it in flight. I thought it strange that a computer entertainment system installed in an aircraft would be a "work in progress" instead of just installing a full-functional system. Among the buttons we were not to touch? Weather and Flight tracking...of course.
  • Re:Err (Score:4, Informative)

    by Anonymous Coward on Wednesday February 21, 2007 @01:52AM (#18092918)
    TFA

    One of the most interesting examples of a software "abuse case" came to me rather abruptly on an airplane flight from Las Vegas to Orlando in mid 2005.

    Each seat in the airplane had a small touch screen monitor built into the head rest of the chair in front, and on this particular airline, passengers could watch a variety of television channels and play a few simple games. One such game looked remarkably similar to the classic strategy game Tetris, where players use their skills to manipulate falling blocks on a screen to try and form horizontal lines. I'm a big fan of Tetris; for a few months in 1998 I was borderline obsessed with it. I would start looking at everyday objects and start mentally fitting them together with other tings in the room to form weird line configurations. One of the options on this particular airborne version of Tetris was to alter the number of blocks one could see in advance on the screen before they started falling.

    To give myself the biggest advantage in the game, I pressed the + control as many times as it would allow and got to the maximum value of 4. I then put on my "bad guy" hat on and asked: How *else* can I change the value in this field? Near my armrest was a small phone console; you know, the one where you can make very important calls for a mere $22 per minute. I noticed that the phone had a numeric keypad and that it also controlled this television monitor embedded in the seat in front of me.

    I then touched the screen in front of me to highlight the number "4" in the options configuration shown in Figure 1. I tried to enter the number 10 into that field through the phone keypad with no luck: it first changed to the number "1" followed by the number "0". Frustrated, I then made the assumption that it would only accept single digit values. My next test case was the number "8"; no luck there either, the number didn't change at all. I then tried the number 5: success! '5' is an interesting test case, it's a "boundary value" just beyond the maximum allowed value of the field which was '4'. A classic programming mistake is to be off by 1 when coding constraints. For example, the programmer may have intended to code the statements:

    0 value 5

    When what actually got coded was

    0 value = 5

    I now had the software exactly where I wanted it, in an unintended state; the illegal value 5 was now in my target field. I then turn my attention back to the screen and hit the + button which, to my complete surprise, incremented the value to 6! Again, an implementation problem, the increment constrain probably said something like "if value = 4 do not increment." In this case, the value wasn't 4 but 5 so it happily incremented it to 6! I then continue to increment the value by pressing the + button until I get to 127 and then I pause for a moment of reflection. 127 is a very special number; it is the upper bound of a 1 byte signed integer. Strange things can happen when we add 1 to this value, namely that 127 + 1 = -128! I considered this for a moment as I kicked back a small bag of peanuts and in the interest of science I boldly pressed the + button once more. Suddenly, the display now flashes -128 just for an instant and then poof...screen goes black.

    Poof...screen of the person next to me goes black.

    Screens in front of me and behind me go black.

    The entire plane entertainment system goes down (and thankfully the cascading system failure didn't spill over to the plane navigation system)!

    After a few minutes of mumbling from some of the passengers, a fairly emotionless flight attendant reset the system and all was well. I landed with a new-found respect for the game of Tetris and consider this to be the most entertaining version of it I have ever played.

    .
  • Abuse case (Score:4, Informative)

    by tcdk ( 173945 ) on Wednesday February 21, 2007 @02:07AM (#18092998) Homepage Journal

    He calls it one of the most interesting examples of a software 'abuse case' he has ever seen.
    He doesn't get out much.... oh, on a plane?

    I think it's more of a case of bad quality control. If the testing environment of the developers had contained a single "lets throw an exception" or maybe a "lets try to lock up a process at 100%" test, they would have see that they needed to at a bit of exception handling (in the first case).

    But writing good test cases can be hard.

    Anyway. I've seen code like this tons of times. Some people apparently have issues with (how hard can it be), so they use equal instead, but one day, the step value is changed from 1 to 2 (make it go directly from 99 to 101), or some routine fails and returns a default value of -1. And suddenly the code is in the twilight zone.

    Anyway^2, I actually did find this rather un-interesting.
  • Way too much effort (Score:3, Informative)

    by plsuh ( 129598 ) <plsuh@noSpAM.goodeast.com> on Wednesday February 21, 2007 @02:09AM (#18093012) Homepage
    Deliberately crashing the IFE system is no great accomplishment. At least some of the darn things crash themselves just fine with no abuse. I was on a Virgin Atlantic flight from Washington, DC to London a couple of years ago, and the IFE systems would crash on a regular basis by groups of four seats. You could be blissfully watching a movie and then poof, everything goes dark. The flight attendant would reset the system and then sometimes it would come back up and other times it would just sit there at a dark screen. Uptimes varied from 10 minutes to a couple of hours. Very, very frustrating, both for the kids trying to play but getting frustrated and cranky and for the parents trying to keep their sanity during an eight hour flight.

    --Paul
  • by Foerstner ( 931398 ) on Wednesday February 21, 2007 @02:12AM (#18093030)
    The word wasn't "fortune," though. It was "fortunately." Unlike "fortune," "fortunately" does not imply that luck was involved. It simply means that it was a beneficial arrangement. The sentence in the summary does not imply, in any way, that mere luck is responsible for the arrangement of the avionics and entertainment systems. You invented that ridiculousness on your own. "Fortunately" is derived from "fortune," but that does not mean that they carry the same meaning, as any dictionary will tell you.

    Another example...if I give you "a murderous look" it does not mean (or even imply) that I killed you, attempted to kill you, or even contemplated a violent act toward you. "Murder" and "murderous" are not as close in definition as they are in derivation.
  • by Spritzer ( 950539 ) * on Wednesday February 21, 2007 @02:27AM (#18093076) Journal
    Based on the description of the IFE system and having recently flown and played a version of Tetris which fits his description ..... Delta 767 I'll see if I can confirm the hack without the crash (I guess I'm just too nice) next week.
  • by iabervon ( 1971 ) on Wednesday February 21, 2007 @02:38AM (#18093120) Homepage Journal
    Looks like the terminal was doing fine, but the server was down so it didn't have anything to run.
  • Re:Err (Score:5, Informative)

    by Dhalka226 ( 559740 ) on Wednesday February 21, 2007 @03:25AM (#18093326)

    IQ scores are a standard distribution with a standard deviation of 10 and a mean of 100. Therefore,

    IQs +/- 1 standard deviation from the mean, that is, 90-110, account for approximately 68% of all scores.

    The 80-120 range will account for roughly 95% of the scores.

    And 70-130 will include over 99%.

    Obviously, an IQ of 180 is astoundingly high. An IQ of 55-60 is, I believe, in the mentally retarded range. Since there's not really a good way to quantify "half as smart" and "twice as smart," you could consider that accurate if you wanted, I suppose. Personally, when I think of somebody who is "half as smart as average," I don't think it's that bad.

    From Wikipedia: [wikipedia.org]

    * mild mental disability: IQ 50-55 to 70; children require mild support; formally called "Educable Mentally Retarded".

    * moderate disability: IQ 35-40 to 50-55; children require moderate supervision and assistance; formally called "Trainable Mentally Retarded".

    * severe mental disability: IQ 20-25 to 35-40; can be taught basic life skills and simple tasks with supervision.

    * profound mental disability: IQ below 20-25; usually caused by a neurological condition; require constant care.

    There are also a bunch of debates as to bias and whether IQs really measure anything worthwhile which I'm sure you can find on the same Wikipedia page if you're interested.

  • by greyc ( 709363 ) on Wednesday February 21, 2007 @03:44AM (#18093412)
    The output is pretty clearly that of a shell script being executed with 'set -x'. There's quite a bit of debug output there; aside from that, it seems to be doing little aside from setting a few environmental variables.

    The ldd call would make sense for debug output, but interestingly it doesn't print anything like what ldd would. In fact, it likely isn't the usual ldd(1) [tin.org], but another binary that happens to have the same name; especially since the debug output stops there, suggesting that it didn't return and the following output was generated by that ldd process, or its children.

    The Debug output could have been deactivated with a 'set +x', but before the deactivation went through that command itself would have been printed, so that's out. What is possible, though, is that the ldd was in fact the last command executed in a subshell, and the parent (which wasn't even necessarily a shell), wasn't set up to produce that kind of debug output.

    A search for "seatapps" [google.com] brings up very few results, those apparently being first-hand accounts of people who have seen similar screens during a flight, suggesting that the whole setup, as you suggested, highly specific and non-standard.
  • Re:Err (Score:5, Informative)

    by bigwave111 ( 1046082 ) on Wednesday February 21, 2007 @04:39AM (#18093624)
    Actually, no, it takes more inside information than that. My dad worked for Swissair for 30 years and its downfall was actually the acquisition of Sabena and the contractual agreement created in the acquisition. At the time, it was a solid investment, but as the overall financial state of Sabena fell apart, Swissair was legally obligated to have to try and save them, draining their resources. The in-flight entertainment was simply a last can of gasoline tossed on an intensely burning flame.
  • Re:I've done this (Score:3, Informative)

    by Cheesey ( 70139 ) on Wednesday February 21, 2007 @07:48AM (#18094318)
    Here is another picture of an in-flight entertainment system running Linux, seemingly booting up:

    http://www.shelleytherepublican.com/2006/12/01/lin ux-the-reliability-myth-debunked.aspx [shelleytherepublican.com]
  • Level of Safety (Score:4, Informative)

    by s31523 ( 926314 ) on Wednesday February 21, 2007 @09:18AM (#18094784)

    The entire plane entertainment system goes down (and thankfully the cascading system failure didn't spill over to the plane navigation system)!

    There was/is no danger of this happening. I develop software for major airline Flight Management Systems (FMS) and the entertainment system is physically separated from the FMS as well as other "flight critical" systems. Also, Software on an aircraft needs to be developed according to the guidelines of RTCA's DO-178B, which classifies the fallout of software into "levels". The most critical, Level A, like autopilot and flight controls requires very stringent evidence of verification. The least critical, Level E, requires basically no verification or documentation whatsoever, and this is what entertainment systems are developed under.

    There was a case in the early days when in-flight entertainment systems were first put on planes where a short in the video system crashed other critical computer components due to the entertainment system and flight system being on the same electrical bus. This obviously caused changes to the rules, so now everything is separated.
  • Re:Err (Score:3, Informative)

    by dr_canak ( 593415 ) on Wednesday February 21, 2007 @11:34AM (#18096218)
    Actually,

    per the WAIS-III manual sitting in front of me, the std. dev is 15, not 10. Therefore, 85-115 is +/- 1 s.d. from the mean of 100. But your point is still accurate that a an IQ of 185 is astoundingly high. Mental retardation is -2 s.d.'s below average, which puts that at an I.Q. of =70. You also need significant adaptive impairment in at least two domains (e.g. communication, self care, interpersonal skills, etc...)

    just my .02
    jeff
  • Re:Err (Score:1, Informative)

    by Anonymous Coward on Wednesday February 21, 2007 @06:26PM (#18102102)
    You must be an American who rarely left the country. If you have flown most Asian airlines, you'd know that Emirates, Malaysian Airlines, Singapore Airlines, Cathay Pacific and some others have this in economy class.

"Engineering without management is art." -- Jeff Johnson

Working...