The Top 10 bugs www.cs4fn.org/bugs/.

Slides:



Advertisements
Similar presentations
THE MACHINE THAT CHANGED THE WORLD
Advertisements

Machine Instructions Operations
1 Today’s lecture  Last lecture we started talking about control flow in MIPS (branches)  Finish up control-flow (branches) in MIPS —if/then —loops —case/switch.
Chapter 7: Introduction to Debugging TECH Prof. Jeff Cheng.
Syllabus Case Histories WW III Almost Medical Killing Machine
Nana Akua Sarkodie-Mensah, Catherine Melendez.  In 1999, people around the world believed that on January 1, 2000 our lives would be changed forever.
CSC 4250 Computer Architectures September 12, 2006 Appendix H. Computer Arithmetic.
Software Engineering Disasters
Computers in Society Week 10: Software System Failures.
1 CHAPTER 8 BUFFER OVERFLOW. 2 Introduction One of the more advanced attack techniques is the buffer overflow attack Buffer Overflows occurs when software.
1 Basic Definitions: Testing What is software testing? Running a program In order to find faults a.k.a. defects a.k.a. errors a.k.a. flaws a.k.a. faults.
Modern Software Development Fawzi Emad Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Computer System Overview
1 CMSC 132: Object-Oriented Programming II Software Development I Department of Computer Science University of Maryland, College Park.
Introduction to a Programming Environment
Administrivia First pieces of assignment 5 Comments about assignment 5 Assignment 6 Labs 5 and 6.
USS Yorktown (1998) A crew member of the guided-missile cruiser USS Yorktown mistakenly entered a zero for a data value, which resulted in a division by.
ITGS Software Reliability. ITGS All IT systems are a combination of: –Hardware –Software –People –Data Problems with any of these parts, or a combination.
Software Engineering Background Dr. David A. Gaitros.
INVARIANTS EEN 417 Fall When is a Design of a System “Correct”? A design is correct when it meets its specification (requirements) in its operating.
Modern Software Development Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
IT253: Computer Organization Lecture 3: Memory and Bit Operations Tonga Institute of Higher Education.
IT253: Computer Organization
OCR GCSE Computing © Hodder Education 2013 Slide 1 OCR GCSE Computing Chapter 2: Memory.
16 October Reminder Types of Testing: Purpose  Functional testing  Usability testing  Conformance testing  Performance testing  Acceptance.
Basic Systems and Software. Were we left off Computers are programmable (formal) machines. Digital information is stored as a series of two states (1.
Introduction to MMX, XMM, SSE and SSE2 Technology
TYPES AND COMPONENTS OF COMPUTER SYSTEMS Camila Rodríguez, Senior I B.
Processor Structure and Function Chapter8:. CPU Structure  CPU must:  Fetch instructions –Read instruction from memory  Interpret instructions –Instruction.
29 March Software Quality and Testing. Why do we care? Therac-25 (1985) Multiple space fiascos (1990s) Ariane V exploded after 40 seconds (conversion)
Pointers 1. Introduction Declaring pointer variables Pointer operators Pointer arithmetic 2 Topics to be Covered.
CSCI1600: Embedded and Real Time Software Lecture 15: Advanced Programming Concepts Steven Reiss, Fall 2015.
 A computer is an electronic device that receives data (input), processes data, stores data, and produces a result (output).  It performs only three.
Chapter 7 Continued Arrays & Strings. Arrays of Structures Arrays can contain structures as well as simple data types. Let’s look at an example of this,
Instruction Set Architectures Continued. Expanding Opcodes & Instructions.
SOFTWARE FAILURES.
Information Technology (IT). Information Technology – technology used to create, store, exchange, and use information in its various forms (business data,
(Java Looping and Conditional Statements). Flow of control Sequential Executes instructions in order Method Calls Transfer control to the methods, then.
Variables Bryce Boe 2012/09/05 CS32, Summer 2012 B.
1 Binghamton University Exam 1 Review CS Binghamton University Birds eye view -- Topics Information Representation Bit-level manipulations Integer.
Lecture # 36 Computer Architecture and Organization.
Secure Coding Rules for C++ Copyright © 2016 Curt Hill
History of gaming By Ryan McGraw.
Winter 2009 Tutorial #6 Arrays Part 2, Structures, Debugger
Chapter 2 Memory and process management
Failure in Railway Signal Box, Altona Germany
Hexadecimal, Signed Numbers, and Arbitrariness
Data Types Variables are used in programs to store items of data e.g a name, a high score, an exam mark. The data stored in a variable is entered from.
Part of the Assembler Language Programmers Toolbox
Samuel Hishmeh EE 585: Fault Tolerant Computing October 12th 2006
Chapter 1. Introduction to Computers and Programming
ECE 103 Engineering Programming Chapter 2 SW Disasters
Secure Coding Rules for C++ Copyright © Curt Hill
Chapter 10 The Stack.
While Loops BIS1523 – Lecture 12.
Testing UW CSE 160 Spring 2018.
Chapter 10 Programming Fundamentals with JavaScript
Introduction to Computer Systems
Moving Arrays -- 1 Completion of ideas needed for a general and complete program Final concepts needed for Final Review for Final – Loop efficiency.
Error Analysis Runtime Errors.
Introduction to Computer Systems
Overloading functions
Tonga Institute of Higher Education IT 141: Information Systems
Data Structures & Algorithms
Tonga Institute of Higher Education IT 141: Information Systems
Linked lists Prof. Noah Snavely CS1114
EET 2259 Unit 7 Case Structures; Sequence Structures
Software Engineering Disasters
SPL – PS2 C++ Memory Handling.
Presentation transcript:

The Top 10 bugs www.cs4fn.org/bugs/

BUG 10: Divide by Zero The USS Yorktown heralded a new generation of “smart” ship. Its propulsion system failed leaving it "dead in the water” for 3 hours after it tried to divide by zero crashing every computer on the ship’s network.

BUG 9: Arithmetic Overflow Keep adding to an integer variable and you run out of bits. Suddenly you have a small number not the bigger one expected. This was one bug in the Therac-25 radiation therapy machine that killed patients. The Boeing 787 Dreamliner had the same problem. Fly for more than 248 days and it would switch off. CC BY-SA 3.0

BUG 8: Timing problems AT&T lost $60 million the day the phones died (all of them). It was a result of changing a few lines of working code. Things happened too fast for the program. The telephone switches reset but were told they needed to reset again before they’d finished, … and so on.

Wrong numbers in a lookup table BUG 6.99999989: Wrong numbers in a lookup table Intel’s Pentium chip turned out not to be able to divide properly. It was due to a wrong entry in a lookup table. Intel set aside $475 million to cover replacing the flawed processors. Some chips were turned in to key rings. Konstantin Lanzet CC BY-SA 3.0

BUG 6: Wrong units The Mars Climate Orbiter spent 10 months getting to Mars …where it promptly disintegrated. It passed too close to the planet’s atmosphere. The programmers assumed numbers were in pound-force seconds when they were actually in newton-seconds.

BUG 5: Non-terminating loop The spinning pizza of death is common. Your computer claims to be working hard, and puts up a progress symbol like a spinning wheel…forever. There are lots of ways that this happens. The simple version is that the program has entered a loop in a way that means the test to continue is never false.

BUG 4: Storing a big number in a small space The first Ariane 5 rocket exploded at a cost of $500 million 40s after lift-off. Despite $7 billion spent on the rocket, the program stored a 64 bit floating point number in to a variable that could only hold a 16 bit integer. DLR German Aerospace Center CC BY 2.0

BUG 3: Memory leak Memory leaks (forgetting to free up space when done with) are responsible for many computer problems. The Firefox browser had one. It was infamous because Firefox (implausibly) claimed their program had no memory leaks. The Mozilla Foundation CC BY 3.0

BUG 2: Following a null pointer Tony Hoare who invented the null pointer (a pointer that points nowhere) called it his “billion-dollar” mistake because programmers struggle to cope with it. Null pointer bugs crash computers, give hackers ways in and generally cause chaos. Photograph by Rama, Wikimedia Commons, Cc-by-sa-2.0-fr

BUG 1: Buffer overflow The Morris Worm, an early Internet worm, came close to shutting down the Internet. It used a buffer overflow bug in network software to move from computer to computer shutting them down. Go Card USA from Boston, USA: CC BY-SA 2.0

BUG 0: Running off the end of an array Arrays in many languages start from position 0. This means the last position is one less than the length of the array. Get it wrong… as every novice programmer does at some point … and you run off the end. Oddly (in Europe), we have no problem in a lift pressing 1 to go to the second floor up. In other situations, count from 0 and you do one too many things.

Download these slides from teachinglondoncomputing.org/bugs/