interrupt driven software
play

Interrupt-driven Software 2 3 Interrupt 1 Interrupt 2 Interrupt - PowerPoint PPT Presentation

Interrupt-driven Software 2 3 Interrupt 1 Interrupt 2 Interrupt ?? Interrupt 3 4 5 6 7 T1() { T2() { a = 1; a = 2; x = a; }; }; T1() { T2() { a = 1; a = 2; x = a; }; }; 8 9 10 Interrupt-driven Abstract Interpretation


  1. Interrupt-driven Software 2

  2. 3

  3. Interrupt 1 Interrupt 2 Interrupt ?? Interrupt 3 4

  4. 5

  5. 6

  6. 7

  7. T1() { T2() { a = 1; a = 2; x = a; }; }; T1() { T2() { a = 1; a = 2; x = a; }; }; 8

  8. 9

  9. 10

  10. Interrupt-driven Abstract Interpretation Invariants programs with inter-interrupt propagation Query CFG Checking the feasibility LLVM Front-end of Dataflow between interrupts Interrupt behavior modeling 11

  11. Abstract Interpretation with inter-interrupt propagation L1-S1 L2-S2 L2-S2 L4-S4 L3-S3 L4-S4 12

  12. Priority: L < H Irq_L() { Irq_H() { x = 1; x = 0; }; assert(x == 0); }; 13

  13. Priority: L < H Irq_L() { Irq_H() { x = 1; x = 0; }; assert(x == 0); }; Thread behavior: The assertion can be violated! 13

  14. Priority: L < H Irq_L() { Irq_H() { x = 1; x = 0; }; assert(x == 0); }; Interrupt behavior: The assertion holds! 13

  15. Priority: L < H Irq_L() { Irq_H() { x = 1; assert(x == 0); }; }; 14

  16. Priority: L < H Irq_L() { Irq_H() { x = 1; assert(x == 0); }; }; Thread behavior: The assertion can be violated! 14

  17. Priority: L < H Irq_L() { Irq_H() { x = 1; assert(x == 0); }; }; Thread behavior: The assertion can be violated! Interrupt behavior: The assertion can be violated as well! 14

  18. Priority: L < H Irq_L() { Irq_H() { if (…) assert(x == 0); }; x = 1; x = 0; }; 15

  19. Priority: L < H Irq_L() { Irq_H() { if (…) assert(x == 0); }; x = 1; x = 0; }; Thread behavior: The assertion can be violated! 15

  20. Priority: L < H Irq_L() { Irq_H() { if (…) assert(x == 0); Post-dominate }; x = 1; x = 0; }; Interrupt behavior: The assertion holds! 15

  21. Thread behavior Interrupt behavior (Existing) (Our approach) Example1 Warning Proof Example2 Warning Warning Example3 Warning Proof 16

  22. Interrupt-driven Abstract Interpretation Invariants programs with inter-interrupt propagation Query Datalog CFG Facts Feasibility Checking LLVM Front-end (Z3 fixed-point) Datalog Rules Interrupt behavior modeling 17

  23. Interrupt-driven Abstract Interpretation Invariants programs with inter-interrupt propagation Query Datalog CFG Facts Feasibility Checking LLVM Front-end (Z3 fixed-point) Datalog Rules Interrupt behavior modeling 17

  24. [Whaley & Lam, 2004] [Livshits & Lam, 2005] Interrupt-driven software  Datalog facts Datalog Engine Datalog rules Data-flow Feasibility between interrupts 18

  25. Declarative language for deductive databases [Ullman 1989] Facts parent (bill, mary) parent (mary, john) Rules ancestor (X, Y) ← parent (X, Y) ancestor (X, Y) ← parent (X, Z), ancestor (Z, Y) New relationship: ancestor (bill, john) 19

  26. Irq_L() { Irq_H() { NoPreempt x = 1; x = 0; }; assert(x == 0); }; NoPreempt (s1, s2) <- Pri(s1, p1) & Pri(s2, p2) & (p2 ≥ p1) NoPreempt (x=1, x==0) <- Pri(x=1, L) & Pri (x==0, H) & (H ≥ L) 20

  27. Irq_L() { Irq_H() { x = 1; x = 0; Dominate }; assert(x == 0); }; CoveredLoad CoverdLoad(l) <- Load(l, v) & Store (s, v) & Dom (s, l) CoveredLoad(x==0) <- Load(x==0) & Store(x=0) & Dom(x=0, x==0) 20

  28. Irq_L() { Irq_H() { NoPreempt x = 1; x = 0; }; assert(x == 0); MustNotReadFrom }; CoveredLoad MustNotReadFrom(l, s) <- CoveredLoad(l) & NoPreempt (s, l) for the same variable MustNotReadFrom(x==0, x=1) <- CoveredLoad(x==0) & NoPreempt (x=1, x==0) for x 20

  29. Irq_L() { Irq_H() { if (…) NoPreempt assert(x == 0); }; x = 1; x = 0; }; NoPreempt (s1, s2) <- Pri(s1, p1) & Pri(s2, p2) & (p2 ≥ p1) NoPreempt (x==0, x=1) <- Pri(x==0, L) & Pri (x=1, H) & (H ≥ L) 21

  30. Irq_L() { Irq_H() { if (…) assert(x == 0); Post-dominate }; x = 1; InterceptedStore x = 0; }; InterceptedStore(s1) <- Store(s1, v) & Store(s2, v) & PostDom(s1, s2) InterceptedStore(x=1) <- Store(x=1) & Store(x=0) & PostDom(x=0, x=1) 21

  31. Irq_L() { Irq_H() { NoPreempt if (…) assert(x == 0); }; x = 1; InterceptedStore MustNotReadFrom x = 0; }; MustNotReadFrom(l, s) <- InterceptedStore(s) & NoPreempt(l, s) for the same variable MustNotReadFrom(x==0, x=1) <- InterceptedStore(x=1) & NoPreempt(x==0, x=1) for x 21

  32. Interrupt-driven Abstract Interpretation Invariants programs with inter-interrupt propagation Query Datalog CFG Facts Feasibility Checking LLVM Front-end (Z3 fixed-point) Datalog Rules Interrupt behavior modeling 22

  33. Abstract Interpretation with inter-interrupt propagation L1-S1 L2-S2 L2-S2 L3-S3 L4-S4 L4-S4 MustNotReadFrom(L1, S1) MustNotReadFrom(L3, S3) 23

  34. Summary Num. of Benchmarks 35 Total LOC 22,541 lines Total number of pairs 5,116 69% Number of filtered pairs 3,560 64.21 s Analysis time 24

  35. 25

  36. 300 200 100 0 violation proofs warnings proofs warnings proofs BMC base Thread behavior Interrupt behavior BMC IntAbs Modular [DATE 15] (Our method) [VMCAI 14] Number of warnings & proofs w.r.t each method 26

  37. 300 200 Unsound 100 0 violation proofs warnings proofs warnings proofs BMC base Thread behavior Interrupt behavior BMC IntAbs Modular [DATE 15] (Our method) [VMCAI 14] Number of warnings & proofs w.r.t each method 26

  38. 300 200 100 0 violation proofs warnings proofs warnings proofs BMC base Thread behavior Interrupt behavior BMC IntAbs Modular [DATE 15] (Our method) [VMCAI 14] Number of warnings & proofs w.r.t each method 26

  39. • Proposed the first modular static analysis method for sound verification of interrupt- driven software • Precisely identified infeasible data flows between interrupts with a declarative interrupt model • Showed significant precision and performance improvements 27

  40. Thank you! https://github.com/chunghasung/intabs

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend