FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung...

40
Lehrstuhl für Informa1k 4 Verteilte Systeme und Betriebssysteme FAIL* Fa ult I njec1on L everaged Mar&n Hoffmann 1

Transcript of FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung...

Page 1: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Lehrstuhl  für  Informa1k  4Verteilte  Systeme  und  Betriebssysteme

FAIL*Fault  Injec1on  LeveragedMar&n  Hoffmann

1

Page 2: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Mo1va1on

•Dynamische  Analyse

• Propaga1on  bzw.  Containment  von  Fehlern

•Wirksamkeit  von  Fehlererkennung  /  Fehlertoleranz

‣Fehlerinjek1onsplaSorm  im  Rahmen  des  DanceOS  Projektes

• Verschiedene  Architekturen

•Mäch1g,  schnell,  wiederverwendbar

2

CoRed

DanceOS  Evolu1on

FT-­‐eCos,  ... Evalua1on:  What  could  possibly  go  wrong?!

Page 3: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Agenda

•Grundlagen  Fehlerinjek1on

• Prak1sche  Probleme

• Lösung  FAIL*

3

Page 4: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Grundlagen  zur  Fehlerinjek1on

• FARM  Modell1

• Fault                      -­‐  Fehlerraum  (Ort,  Zeit,  Typ)

• Ac1va1on  -­‐  Ak1vierungsmuster  (Eingabeparameter)

• Readout      -­‐  Erfassung  der  Ergebnisse

•Measure        -­‐  Maß  der  Fehleranfälligkeit  /  Zuverlässigkeit

4

Theorie Praxis FAIL*

Zielsystem

JTAG,  GDB  Stub

SteuerrechnerUSB,  Ethernet,  RS232

F  A  R  M

1J. Arlat, M. Aguera, L. Amat, Y. Crouzet, J.C. Fabre, J.-C. Laprie, E. Martins, D. Powell, Fault Injection for Dependability Validation: A Methodology and some Applications, IEEE Transactions on Software Engineering, Vol. 16, No. 2, February 1990, pp. 166-182

Page 5: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Fehlerraum

5

Ort

Typ

Zeit

1-­‐Bihehler

32

2-­‐Bihehler

32  *  31  =  992n-­‐B

ihehler

32!  =  2,63  *  1035  

x  Instruk1onen1,  2,  ...  ,  y  Ak1vierungen

1·∙x

2·∙x

y·∙x

(Annahme:  32-­‐bit  Wörter)

Register

ProgrammspeicherDaten

Theorie Praxis FAIL*

Zielsystem

JTAG,  GDB  Stub

Steuerrechner

Fehler-­‐liste

USB,  Ethernet,  RS232

F

Page 6: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Ak1vierungsmuster

• Ausführung  des  Aufgabensystems

• Setzen  von  Eingabeparametern

• Sensordaten

• Netzwerkpakete

• Unterbrechungen

• Erfassung  eines  Referenzlaufs  (Golden  Run)

• Injek1on  von  Fehlern

6

Theorie Praxis FAIL*

Zielsystem

JTAG,  GDB  Stub

Steuerrechner

Eingabe-­‐daten

Fehler-­‐liste

USB,  Ethernet,  RS232

AF

Page 7: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Erfassung  der  Ergebnisse

• Abhängig  von  der  Mäch1gkeit  der  ZielplaSorm

• Beispiele:

• Fehlerparameter  (Ort,  Zeit,  Typ)

• Systemkontext  (Register-­‐,  Speicherauszug)

• Ausführungszeit

• Rückgabewerte  (Rechenergebnisse,  etc.)

• Fehlererkennungsmechanismen

7

Theorie Praxis FAIL*

Zielsystem

JTAG,  GDB  Stub

Steuerrechner

ResultateEingabe-­‐daten

Fehler-­‐liste

USB,  Ethernet,  RS232

A RF

Page 8: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Maß

• Interpreta1on  der  Ergebnisse

• Fehlererkennungsrate

•Maskierungsrate

• Erholungszeit

•Nicht  beschränkt  auf  Fehlerinjek1on  

 g  Integra1onstest

8

Theorie Praxis FAIL*

Zielsystem

JTAG,  GDB  Stub

Steuerrechner

ResultateEingabe-­‐daten

Fehler-­‐liste

USB,  Ethernet,  RS232

A

M

F R

Page 9: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Agenda

•Grundlagen  Fehlerinjek1on

• Prak1sche  Probleme

• Lösung  FAIL*

9

Page 10: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

“Lessons  Learned”  CoRed  Evalua1on

10

Theorie Praxis FAIL*

• Riesiger  Fehlerraum

• Experimentbeschreibung

• nicht  standardisiert

• kaum  wiederverwendbar

• Kampagnendauer

• typisch:  1s  /  Experiment

• 400  000  Exp.  g  110  h

Zielsystem

JTAG,  GDB  Stub,  prop.

Steuerrechner

ResultateEingabe-­‐daten

Fehler-­‐liste

USB,  Ethernet,  RS232

AM

RF

Page 11: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

“Lessons  Learned”  CoRed  Evalua1on

10

Theorie Praxis FAIL*

• Riesiger  Fehlerraum

• Experimentbeschreibung

• nicht  standardisiert

• kaum  wiederverwendbar

• Kampagnendauer

• typisch:  1s  /  Experiment

• 400  000  Exp.  g  110  h

Zielsystem

JTAG,  GDB  Stub,  prop.

Steuerrechner

ResultateEingabe-­‐daten

Fehler-­‐liste

USB,  Ethernet,  RS232

AM

RF...GoldenRUN:

Do ebu.cmm

BREAK.set &FI_Point_next /disablehit

GOSUB awaitHits &hits

WAIT !STATE.run() ; at no_effect

BREAK.delete /ALL

BREAK.set &No_effect /disablehit

Go

WAIT !STATE.run()

DATA.SUM &dumpregion /LONG /CRC32

&golden_crc=DATA.SUM()

PRINT "Golden run ended at "

Y.function(C:REGISTER(PC))

STARTFI:

if DATA.WORD(C:&FI_Point_next)==0x9000

...

Page 12: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

“Lessons  Learned”  CoRed  Evalua1on

10

Theorie Praxis FAIL*

• Riesiger  Fehlerraum

• Experimentbeschreibung

• nicht  standardisiert

• kaum  wiederverwendbar

• Kampagnendauer

• typisch:  1s  /  Experiment

• 400  000  Exp.  g  110  h

Zielsystem

JTAG,  GDB  Stub,  prop.

Steuerrechner

ResultateEingabe-­‐daten

Fehler-­‐liste

USB,  Ethernet,  RS232

AM

RF

...

GoldenRUN:

Do ebu.cmm

BREAK.set &FI_Point_next /disablehit

GOSUB awaitHits &hits

WAIT !STATE.run() ; at no_effect

BREAK.delete /ALL

BREAK.set &No_effect /disablehit

Go

WAIT !STATE.run()

DATA.SUM &dumpregion /LONG /CRC32

&golden_crc=DATA.SUM()

PRINT "Golden run ended at "

Y.function(C:REGISTER(PC))

STARTFI:

if DATA.WORD(C:&FI_Point_next)==0x9000

...

Page 13: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Probleme  exis1erender  Lösungen

11

Theorie Praxis FAIL*

• Viele  exis1erende  Fehlerinjek1onswerkzeuge,  aber:

• Jeweils  unterschiedliche  ZielplaSormen,  Fehlermodelle,  Experimentbeschreibungen,  Ergebnisauswertung

• z.B.  FAUmachine,  Qinject,  Goofi,  FTAPE,  Ferrari,  Fiat,  Xcep1on,  Mefisto,  ...  u.v.m.  Namenlose

• Zum  Teil  Abspaltungen  von  exis1erenden  Emulatoren  (Qemu  -­‐>  Qinject)

• Basierend  auf  veralteter  Emulator  Version

•Wartung  problema1sch

Page 14: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Herausforderungen

Unterstützung  verschiedener  Architekturen  (x86,  ARM,  Sparc,  ...)

Wiederverwendbare,  mäch1ge  Experimentbeschreibung

Flexible  Auswertung  der  Ergebnisse

Prak1kable  Kampagnendauer  

12

Theorie Praxis FAIL*

CoRed

DanceOS  Evolu1on:

FT-­‐eCos,  ... Fail*

Page 15: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Agenda

•Grundlagen  Fehlerinjek1on

• Prak1sche  Probleme

• Lösung  FAIL*

13

Page 16: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Entwurfsentscheidungen

14

Theorie Praxis FAIL*

• Ziel:  Flexibilität

• Erweiterung  exis1erender  virtueller  PlaSormen  (Bochs,  gem5,  ...)

• Aktuelle  und  gewartete  Sovwarebasis

• Schnelle  Experimente

• Volle  Kontrolle  der  Umgebung,  voller  Zugriff  

• Abstrakte  Schniwstelle  zur  PlaSorm

•Wiederverwendbare  Experimentbeschreibung  

• “Leihaden”  für  Erweiterungen  (neue  Prozessoren,  etc)

Page 17: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Erweiterung existierender Plattformen

15

Theorie Praxis FAIL*

Bochs  (x86,  x86-­‐64)

Experiment-­‐specific  user-­‐defined

Exis1ng  Emulator Fail*  Code

Page 18: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Erweiterung existierender Plattformen

15

Theorie Praxis FAIL*

Bochs  (x86,  x86-­‐64)

Plahorm  Abstrac1ons

CPU RAM NIC . . .

• Abstrakte  PlaSormbeschreibung

Experiment-­‐specific  user-­‐defined

Exis1ng  Emulator Fail*  Code

Page 19: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Erweiterung existierender Plattformen

15

Theorie Praxis FAIL*

Bochs  (x86,  x86-­‐64)

Plahorm  Abstrac1ons

CPU RAM NIC . . .

• Abstrakte  PlaSormbeschreibung

Experiment-­‐specific  user-­‐defined

Exis1ng  Emulator Fail*  Code

Hook Aspects

Page 20: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Erweiterung existierender Plattformen

15

Theorie Praxis FAIL*

Bochs  (x86,  x86-­‐64)

Plahorm  Abstrac1ons

CPU RAM NIC . . .

• Abstrakte  PlaSormbeschreibung

Experiment-­‐specific  user-­‐defined

Exis1ng  Emulator Fail*  Code

Hook Aspects

Aspektverteilung  in  FailBochs

Page 21: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Erweiterung existierender Plattformen

15

Theorie Praxis FAIL*

Bochs  (x86,  x86-­‐64)

Plahorm  Abstrac1ons

CPU RAM NIC . . .

• Abstrakte  PlaSormbeschreibung

Experiment-­‐specific  user-­‐defined

Exis1ng  Emulator Fail*  Code

Hook Aspects

Page 22: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Erweiterung existierender Plattformen

15

Theorie Praxis FAIL*

Bochs  (x86,  x86-­‐64)

Plahorm  Abstrac1ons

CPU RAM NIC . . .

• Abstrakte  PlaSormbeschreibung

Open  Virtual  Plahorm  (ARM,  Sparc)

OVP Callback API

Experiment-­‐specific  user-­‐defined

Exis1ng  Emulator Fail*  Code

Hook Aspects

Page 23: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Erweiterung existierender Plattformen

15

Theorie Praxis FAIL*

Bochs  (x86,  x86-­‐64)

Plahorm  Abstrac1ons

CPU RAM NIC . . .

• Abstrakte  PlaSormbeschreibung

Open  Virtual  Plahorm  (ARM,  Sparc)

OVP Callback API

Experiment-­‐specific  user-­‐defined

Exis1ng  Emulator Fail*  Code

Hook Aspects

Page 24: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Erweiterung existierender Plattformen

15

Theorie Praxis FAIL*

Bochs  (x86,  x86-­‐64)

Plahorm  Abstrac1ons

CPU RAM NIC . . .

Kampagenverwaltung

• Abstrakte  PlaSormbeschreibung

• Auveilung  Kampagne/Experiment

• 1  Kampagne  -­‐>  N  Experimente

Open  Virtual  Plahorm  (ARM,  Sparc)

OVP Callback API

Experiment-­‐specific  user-­‐defined

Exis1ng  Emulator Fail*  Code

Hook Aspects

Page 25: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Erweiterung existierender Plattformen

15

Theorie Praxis FAIL*

Bochs  (x86,  x86-­‐64)

Plahorm  Abstrac1ons

CPU RAM NIC . . .

Kampagenverwaltung

• Abstrakte  PlaSormbeschreibung

• Auveilung  Kampagne/Experiment

• 1  Kampagne  -­‐>  N  Experimente

Kampagne

Open  Virtual  Plahorm  (ARM,  Sparc)

OVP Callback API

Experiment-­‐specific  user-­‐defined

Exis1ng  Emulator Fail*  Code

Hook Aspects

Page 26: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Erweiterung existierender Plattformen

15

Theorie Praxis FAIL*

Bochs  (x86,  x86-­‐64)

Plahorm  Abstrac1ons

CPU RAM NIC . . .

Kampagenverwaltung

Experiment

• Abstrakte  PlaSormbeschreibung

• Auveilung  Kampagne/Experiment

• 1  Kampagne  -­‐>  N  Experimente

Kampagne

Open  Virtual  Plahorm  (ARM,  Sparc)

OVP Callback API

Experiment-­‐specific  user-­‐defined

Exis1ng  Emulator Fail*  Code

Hook Aspects

Page 27: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Erweiterung existierender Plattformen

15

Theorie Praxis FAIL*

Bochs  (x86,  x86-­‐64)

Plahorm  Abstrac1ons

CPU RAM NIC . . .

Kampagenverwaltung

Experiment

• Abstrakte  PlaSormbeschreibung

• Auveilung  Kampagne/Experiment

• 1  Kampagne  -­‐>  N  Experimente

•Nachrichtenaustausch  per  Google  Protocol  Buffers

Kampagne

Open  Virtual  Plahorm  (ARM,  Sparc)

OVP Callback API

.proto

Experiment-­‐specific  user-­‐defined

Exis1ng  Emulator Fail*  Code

Hook Aspects

Page 28: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Erweiterung existierender Plattformen

15

Theorie Praxis FAIL*

Bochs  (x86,  x86-­‐64)

Plahorm  Abstrac1ons

CPU RAM NIC . . .

Kampagenverwaltung

Experiment

• Abstrakte  PlaSormbeschreibung

• Auveilung  Kampagne/Experiment

• 1  Kampagne  -­‐>  N  Experimente

•Nachrichtenaustausch  per  Google  Protocol  Buffers

• beliebige  Nachverarbeitung  

Kampagne

Open  Virtual  Plahorm  (ARM,  Sparc)

OVP Callback API

.proto

Experiment-­‐specific  user-­‐defined

Exis1ng  Emulator Fail*  Code

Hook Aspects

Page 29: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Beispielexperiment

16

Theorie Praxis FAIL*

• Analysierte  Sovware:  einzelne  C-­‐Funk8on

• Fehlermodell:  Einzelbitkipper

•Überdeckung:  Alle  Register,  Bits,  Instruk8onen

R0R1R2R3R4R5R6...

t  (#  Instruk1on  ab  Einsprungpunkt)

Injek1onsziel

Page 30: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Beispielexperiment  -­‐  Nachrichtenbeschreibung

17

Theorie Praxis FAIL*

message FaultCoverageMsg { // input parameters required int32 instr_offset = 1; required int32 bitpos = 2; required int32 inject_register = 3; // results enum ResultType { LOG_NORMAL = 1; LOG_TRAP = 2; LOG_TIMEOUT = 3; } optional ResultType resulttype = 4; optional String details = 5;}

FaultCoverageMsg.proto

•Google  Protocol  Buffers• Erzeugt  Datenstrukturen  mit  Zugriffsmethoden,  (De-­‐)  Serialisierung• C++,  Java,  Python,  Matlab,  Perl,  R,  Lua,  Scala,  Haskell,  Erlang,  Ruby,  OCaml,  Visual  Basic,  ...

Page 31: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Beispielexperiment  -­‐  Kampagnenbeschreibung

18

Theorie Praxis FAIL*

• Erzeugt  Parametersätze  für  Einzelexperimente• Sammelt  Ergebnisse

// iterate over all target registersRegisterManager& rm = simulator.getRegisterManager();for (RegisterManager::iterator it = rm.begin(); it != rm.end(); ++it) { Register *reg = &(*it); // iterate over all bit positions within this register for (int bitpos = 0; bitpos < reg->getWidth(); ++bitpos) { // iterate over all injection positions for (int instr = 0; instr < COVERAGE_NUMINSTR; ++instr) { FaultCoverageParam *p = new FaultCoverageParam; p->msg.set_instr_offset(instr); p->msg.set_bitpos(bitpos); p->msg.set_inject_register(reg->getId()); campaignmanager.addParam(p); // enqueue parameter set} } }FaulCoverageParam *result; // gather resultswhile(result = static_cast<FaultCoverageParam *>(campaignmanager.getDone())){ doSomeAftermathWith(result); // post process results}

Kampagne

Page 32: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Beispielexperiment  -­‐  Experimentbeschreibung

19

Theorie Praxis FAIL*

• Konsumiert  (einzelnen)  Parametersatz• Eigentliche  Fehlerinjek1on

// retrieve parameter set from campaignjc.getParam(par);

// restore previously saved simulator state (from golden run):// we're now at the entry of the analyzed functionsimulator.restore("sav/p_entry.sav");// breakpoint n instructions (def. in parameter set) in the futureBPEvent ev_fi_instr(ANY_ADDR, par.instr_offset());addEventAndWait(&ev_fi_instr); // Switch to emulator Coroutine// Emulator coroutine runs until breakpoint event ...// FI: single bit-flip in register specified in parameter setRegister r = simulator.getRegisterManager(). getRegister(par.inject_register());r.setData(r.getData() ^ (1 << par.bitpos()));

// ...

Experiment

Ak1vierungs-­‐muster

Fehlerinjek1on

Page 33: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Beispielexperiment  -­‐  Experimentbeschreibung

20

Theorie Praxis FAIL*

// ...// Aftermath: traps, timeout, or normal exitTrapEvent ev_trap(ANY_TRAP);addEvent(&ev_trap);BPEvent ev_timeout(ANY_ADDR, 10000);addEvent(&ev_timeout);BPEvent ev_func_end(ADDR_FUNC_END);addEvent(&ev_func_end);// wait for function exit, trap or timeoutBaseEvent *ev = waitAny();// store experiment result in parameter set object ...if (ev == &id_func_end) { int result = simulator.abi_func_retval();

par.set_resulttype(LOG_NORMAL);

par.set_result(result);} else if (ev == &ev_trap) {

par.set_resulttype(LOG_TRAP);} else if (ev == &ev_timeout) {

par.set_resulttype(LOG_TIMEOUT);}// ... and communicate it back to the campaign controllerjc.sendResult(par);

Experiment

Beobachtung

Zurücksendender  Ergebnisse

Page 34: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

FAIL* Zwischenresümee

21

Theorie Praxis FAIL*

Unterstützung  verschiedener  Architekturen

• Erweiterung  exis1erender  virtueller  PlaSormen

Wiederverwendbare,  mäch1ge  Experimentbeschreibung

• “Simulator  Abstrac1on  Layer”

Flexible  Auswertung  der  Ergebnisse

• Sprachunabhängige  Nachrichtenbeschreibung  (Protocol  Buffers)

CoRedDanceOS  Evolu1on:

FT-­‐eCos,  ... Fail* Dependable  CiAO

Prak1kable  Kampagnendauer

Page 35: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Praktikable Kampagnendauer I

22

Theorie Praxis FAIL*

• Fehlerraum  noch  immer  riesig

• Einschränkung  durch  “Fault-­‐Space  Pruning”

‣ Tilgung  von  unwirksamen  und  idempotenten  Injek1onen

R0R1R2R3R4R5R6...

t  (#  Instruk1on  ab  Einsprungpunkt)

Injek1onsziel

Lese  R0Schreibe  R0Lese  R0

Page 36: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Praktikable Kampagnendauer I

22

Theorie Praxis FAIL*

• Fehlerraum  noch  immer  riesig

• Einschränkung  durch  “Fault-­‐Space  Pruning”

‣ Tilgung  von  unwirksamen  und  idempotenten  Injek1onen

R0R1R2R3R4R5R6...

t  (#  Instruk1on  ab  Einsprungpunkt)

Injek1onsziel

Lese  R0Schreibe  R0Lese  R0

Page 37: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Praktikable Kampagnendauer I

22

Theorie Praxis FAIL*

• Fehlerraum  noch  immer  riesig

• Einschränkung  durch  “Fault-­‐Space  Pruning”

‣ Tilgung  von  unwirksamen  und  idempotenten  Injek1onen

R0R1R2R3R4R5R6...

t  (#  Instruk1on  ab  Einsprungpunkt)

Injek1onsziel

Lese  R0Schreibe  R0Lese  R0

Page 38: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Praktikable Kampagnendauer I

22

Theorie Praxis FAIL*

• Fehlerraum  noch  immer  riesig

• Einschränkung  durch  “Fault-­‐Space  Pruning”

‣ Tilgung  von  unwirksamen  und  idempotenten  Injek1onen

R0R1R2R3R4R5R6...

t  (#  Instruk1on  ab  Einsprungpunkt)

Injek1onsziel

Lese  R0Schreibe  R0Lese  R0

Page 39: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Praktikable Kampagnendauer II

23

Theorie Praxis FAIL*

• Einzelexperimente  sind  voneinander  unabhängig

‣ Leicht  parallelisierbar

Bochs

Experiment

Kampagne

Plahorm  Abstrac1ons

CPU RAM NIC . . .

Kampagenverwaltung .proto

Hook Aspects

Page 40: FAIL€¦ · Kampagne. 04.07.2012 Fail*C)Mar1n)Hoffmann BeispielexperimentC)Experimentbeschreibung 19 Theorie Praxis FAIL* •Konsumiert(einzelnen))Parametersatz •Eigentliche)Fehlerinjek1on

Fail*  -­‐  Mar1n  Hoffmann04.07.2012

Praktikable Kampagnendauer II

23

Theorie Praxis FAIL*

• Einzelexperimente  sind  voneinander  unabhängig

‣ Leicht  parallelisierbar

Bochs

Experiment

Kampagne

Plahorm  Abstrac1ons

CPU RAM NIC . . .

Kampagenverwaltung .proto

Hook AspectsBochs

Experiment

Kampagne

Plahorm  Abstrac1ons

CPU RAM NIC . . .

Kampagenverwaltung .proto

Hook Aspects