self-adaptive static analysis - penn engineeringmhnaik/slides/eth2014.pdf · mayur naik georgia...

49
Self-Adaptive Static Analysis Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi Mangal Georgia Tech Mooly Sagiv Tel-Aviv University Percy Liang Stanford University

Upload: others

Post on 27-Mar-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Self-Adaptive Static Analysis

Mayur Naik Georgia Tech

Joint work with:

Hongseok Yang, Radu Grigore Oxford University

Xin Zhang, Ravi Mangal Georgia Tech

Mooly Sagiv Tel-Aviv University

Percy Liang Stanford University

Page 2: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

p"²"q1? p"²"q2?

Static Analysis: 70’s to 90’s

!  client-oblivious

“Because"clients"have"different"precision"and"scalability"needs,"future"work"should"iden>fy"the"client"they"are"addressing"…”""M."Hind,"Pointer(Analysis:(Haven’t(We(Solved(This(Problem(Yet?,"2001"

10/6/14 2 ETH Workshop on Software Correctness & Reliability

abstrac>on"a"

program"p"

query"q1" query"q2"

Page 3: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

p"²"q1? p"²"q2?

Static Analysis: 00’s to Present

!  client-driven

abstrac>on"a"

program"p"

query"q1" query"q2"

10/6/14 3 ETH Workshop on Software Correctness & Reliability

Page 4: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Static Analysis: 00’s to Present

!  client-driven !  modern pointer analyses !  software model checkers

abstrac>on"a2"abstrac>on"a1"q1" p" q2"

10/6/14 4 ETH Workshop on Software Correctness & Reliability

p"²"q1?" p"²"q2?"

Page 5: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Our Static Analysis Setting

!  client-driven + parametric !  new search algorithms: testing, machine learning, … !  new analysis questions: optimality, impossibility, …

abstrac>on"a2"abstrac>on"a1"q1" p" q2"

"""0"""""1""""""0""""""0"""""0" """1""""""0"""""0""""""0""""""1"

10/6/14 5 ETH Workshop on Software Correctness & Reliability

p"²"q1?" p"²"q2?"

Page 6: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Example 1: Type-State Analysis

x = new File; y = x;

if (*) z = x; x.open(); y.close(); if (*) assert1(x, closed);

else assert2(x, opened);

10/6/14 6 ETH Workshop on Software Correctness & Reliability

<closed, {x}> <closed, {x}>

<closed, {x}> <opened, {x}>

<closed �opened, {x}>

<closed, {x}> <closed, {x,y}>

<closed, {x,y}> <opened, {x,y}>

<closed, {x,y}>

Must-Alias Set to Track: { x } { x, y }

Page 7: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Heap abstraction:

Example 2: Thread-Escape Analysis

L E E L

and optimal!

10/6/14 7 ETH Workshop on Software Correctness & Reliability

L L E L

but not optimal

L L L L

h1 h2 h3 h4 h1 h2 h3 h4 h1 h2 h3 h4

while (*) {

u = new h1;

v = new h2;

g = new h3;

v.f = g;

w = new h4;

u.f2 = w;

assert(local(w));

u.spawn();

}

Page 8: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Example 3: Approximation Safety Analysis

1: v1 = input(); 2: v2 = input(); restrict(v1); while (v1 > 0) { 3: v1 = f(v1); 4: v2 = g(v2); restrict(v1); } relax(v2); restrict(v2); output(v2);

10/6/14 8 ETH Workshop on Software Correctness & Reliability

{ {v1} } { {v1,v2} } { Τ } { Τ } { Τ } { Τ } { Τ } { Τ } { Τ } { Τ } { Τ }

Approximated Operations: { 1, 2, 3, 4 } { 2, 3, 4 } { 2, 4 }

{ Ø } { {v2} } { {v2} } { {v2}, Τ } { {v1,v2}, Τ } { {v1,v2}, Τ } { Τ } { {v2}, Τ } { Ø, Τ } { Ø, Τ } { Ø, Τ }

{ Ø } { {v2} } { {v2} } { {v2} } { {v2} } { {v2} } { {v2} } { {v2} } { Ø } { Ø } { Ø }

Page 9: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Problem Statement

!  An efficient algorithm with:

INPUTS: !  program p and query q !  abstractions A = { a1, …, an } !  boolean function S(p, q, a)

OUTPUT: !  Impossibility: @ a 2 A: S(p, q, a) = true !  or Proof: some a 2 A: S(p, q, a) = true

8 a’ 2 A: (a’ · a Æ S(p, q, a’) = true) ) a’ = a

q"p" S"

a"

Op>mal"Abstrac>on"

AND"

10/6/14 9 ETH Workshop on Software Correctness & Reliability

p"`"q" p"0"q"

Page 10: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Why Optimal Abstraction?

!  Yields smallest/largest solution

!  Provides empirical lower bounds

!  Efficient to compute

!  Better for user consumption !  analysis imprecision facts !  assumptions about missing program parts

!  Suitable for machine learning

6/12/2014 10 SOAP 2014

¬"S(p,"q,"a)"

S(p,"q,"a)"

1111"finest"

0100"op>mal"

0000"coarsest"

Page 11: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Why is this Hard in Practice?

!  |A| exponential in size of p, or even infinite

!  S(p, q, a) = false for most p, q, a

!  Different a is optimal for different p, q

10/6/14 11 ETH Workshop on Software Correctness & Reliability

¬"S(p,"q,"a)"

S(p,"q,"a)"

1111"finest"

0100"op>mal"

0000"coarsest"

Page 12: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

10/6/14 12

Example: Size of Optimal Abstractions

ETH Workshop on Software Correctness & Reliability

|A| = 2^10k |Q| = 14k |Q_proven| = 55% of |Q|

5436

954 892

164 68 110 13 181 41 13 123 0

1000

2000

3000

4000

5000

6000

1 2 3 4 5 6 7 8 9 10 11-96

# p

rove

n qu

erie

s

size of abstraction |a|

avrora

Page 13: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

10/6/14 13

Example: Runtime under Optimal Abstractions

ETH Workshop on Software Correctness & Reliability

(seconds)

Page 14: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Summary of Our Results

!  Machine Learning [POPL’11] !  “Learning Minimal Abstractions”

!  Dynamic Analysis [POPL’12] !  “Abstractions from Tests”

!  Static Refinement [PLDI’13] !  “Finding Optimum Abstractions in Parametric Dataflow Analysis”

!  Constraint Solving [PLDI’14] !  “On Abstraction Refinement for Program Analyses in Datalog”

10/6/14 14 ETH Workshop on Software Correctness & Reliability

All implementations available in Chord, an extensible program analysis framework for Java bytecode (jchord.googlecode.com).

Page 15: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Datalog for Program Analysis

10/6/14 15 ETH Workshop on Software Correctness & Reliability

Page 16: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

What is Datalog?

10/6/14 16 ETH Workshop on Software Correctness & Reliability

Page 17: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

What is Datalog?

Input relations: Output relations: Rules:

Least fixpoint computation:

edge(i, j). path(i, j).

(1) path(i, i). (2) path(i, k) :- path(i, j), edge(j, k).

Input: edge(0, 1), edge(1, 2). path(0, 0). path(1, 1). path(2, 2). path(0, 1) :- path(0, 0), edge(0, 1). path(0, 2) :- path(0, 1), edge(1, 2).

10/6/14 17 ETH Workshop on Software Correctness & Reliability

Page 18: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Why Datalog?

If there exists a path from a to b, and there is an edge from b to c, then there exists a path from a to c:

path(a, c) :- path(a, b), edge(b, c).

10/6/14 18 ETH Workshop on Software Correctness & Reliability

Page 19: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Why Datalog?

k-object-sensitivity, k = 2, ~100KLOC

10/6/14 19 ETH Workshop on Software Correctness & Reliability

Page 20: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Limitation

k-object-sensitivity, k = 2, ~100KLOC

k-object-sensitivity, k = 10, ~500KLOC

10/6/14 20 ETH Workshop on Software Correctness & Reliability

Page 21: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Pointer Analysis as Graph Reachability

0

1

2

3

4

5

6’

7

6 6’’

7’ 7’’

a1 a0 b0

c1 c0 d0 d1

a1

c1 c0

b0 b1

d1 d0

a0

b1

10/6/14 21 ETH Workshop on Software Correctness & Reliability

Page 22: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Graph Reachability in Datalog

Input relations: edge(i, j, n), abs(n)

Output relations: path(i, j)

Rules: (1) path(i, i). (2) path(i, j) :- path(i, k), edge(k, j, n), abs(n).

0

1

2

3

4

5

6’

7

6 6’’

7’ 7’’

a1 a0 b0

c1 c0 d0 d1

a1

c1 c0

b0 b1

d1 d0

a0

b1

Input tuples: edge(0, 6, a0), edge(0, 6’, a1), edge(3, 6, b0),

… Query Tuple Original Query

q1: path(0, 5) assert(v6!= v1)

q2: path(0, 2) assert(v3!= v1)

16 possible abstractions in total

10/6/14 22 ETH Workshop on Software Correctness & Reliability

Page 23: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Desired Result

0

1

2

3

4

5

6’

7

6

7’

6’’

7’’

a1 b0

c1 d0

a1

c1

b0

d0

a0

c0 d1

c0

b1

d1

a0

b1

Input tuples: edge(0, 6, a0), edge(0, 6’, a1), edge(3, 6, b0),

… Query Answer

q1: path(0, 5) a1b0c1d0

q2: path(0, 2) Impossibility

Input relations: edge(i, j, n), abs(n)

Output relations: path(i, j)

Rules: (1) path(i, i). (2) path(i, j) :- path(i, k), edge(k, j, n), abs(n).

10/6/14 23 ETH Workshop on Software Correctness & Reliability

Page 24: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Iteration 1

0

1

2

3

4

5

7

6 6’

7’

6’’

7’’

b0

d0

b0

d0

a0

c0

c0

a0

a1

c1

a1

c1

d1

b1

d1

b1

Query Eliminated Abstractions

q1: path(0, 5)

q2: path(0, 2)

path(0, 0). path(0, 6) :- path(0, 0), edge(0, 6, a0), abs(a0). path(0, 1) :- path(0, 6), edge(6, 1, a0), abs(a0). path(0, 7) :- path(0, 1), edge(1, 7, c0), abs(c0). path(0, 2) :- path(0, 7), edge(7, 2, c0), abs(c0). path(0, 4) :- path(0, 6), edge(6, 4, b0), abs(b0). path(0, 7) :- path(0, 4), edge(4, 7, d0), abs(d0). path(0, 5) :- path(0, 7), edge(7, 5, d0), abs(d0). …

10/6/14 24 ETH Workshop on Software Correctness & Reliability

Page 25: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Iteration 1 - Derivation Graph

0

1

2

3

4

5

7

6 6’

7’

6’’

7’’

b0

d0

b0

d0

a0

c0

c0

a0

a1

c1

a1

c1

d1

b1

d1

b1

Query Eliminated Abstractions

q1: path(0, 5)

q2: path(0, 2)

10/6/14 25 ETH Workshop on Software Correctness & Reliability

Page 26: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Iteration 1 - Derivation Graph

abs(d0)

path(0,6) edge(6,1,a0) edge(6,4,b0)

path(0,1) path(0,4) abs(c0) edge(1,7,c0) edge(4,7,d0)

path(0,7) edge(7,2,c0) edge(7,5,d0)

path(0,2) path(0,5)

abs(a0) edge(0,6,a0) path(0,0)

abs(a0) abs(b0)

abs(c0) abs(d0)

10/6/14 26 ETH Workshop on Software Correctness & Reliability

Page 27: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Iteration 1 - Derivation Graph

abs(d0)

path(0,6) edge(6,1,a0) edge(6,4,b0)

path(0,1) path(0,4) abs(c0) edge(1,7,c0) edge(4,7,d0)

path(0,7) edge(7,2,c0) edge(7,5,d0)

path(0,2) path(0,5)

abs(a0) edge(0,6,a0) path(0,0)

abs(a0) abs(b0)

abs(c0) abs(d0)

10/6/14 27 ETH Workshop on Software Correctness & Reliability

Page 28: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Iteration 1 - Derivation Graph

abs(d0)

path(0,6) edge(6,1,a0) edge(6,4,b0)

path(0,1) path(0,4) abs(c0) edge(1,7,c0) edge(4,7,d0)

path(0,7) edge(7,2,c0) edge(7,5,d0)

path(0,2) path(0,5)

abs(a0) edge(0,6,a0) path(0,0)

abs(a0) abs(b0)

abs(c0) abs(d0)

10/6/14 28 ETH Workshop on Software Correctness & Reliability

Page 29: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Iteration 1 - Derivation Graph

0

1

2

3

4

5

7

6 6’

7’

6’’

7’’

b0

d0

b0

d0

a0

c0

c0

a0

a1

c1

a1

c1

d1

b1

d1

b1

Query Eliminated Abstractions

q1: path(0, 5) a0c0d0, a0b0d0 (4/16)

q2: path(0, 2) a0c0 (4/16)

10/6/14 29 ETH Workshop on Software Correctness & Reliability

Page 30: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Encoded as MAXSAT Hard Constraints Soft Constraints

10/6/14 30 ETH Workshop on Software Correctness & Reliability

Page 31: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Encoded as MAXSAT

Avoid all the counterexamples

Minimize the abstraction cost

10/6/14 31 ETH Workshop on Software Correctness & Reliability

Page 32: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Encoded as MAXSAT

Query Eliminated Abstractions

q1: path(0, 5) a0c0d0, a0b0d0 (4/16)

q2: path(0, 2) a0c0 (4/16)

10/6/14 32 ETH Workshop on Software Correctness & Reliability

Page 33: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Iteration 2 and Beyond

MAXSAT solver

Datalog solver

Iteration 1

Query Answer Eliminated Abstractions

q1: path(0, 5) a0c0d0, a0b0d0, a1d0 (4/16)

q2: path(0, 2) a0c0, a1c0 (4/16)

10/6/14 33 ETH Workshop on Software Correctness & Reliability

Page 34: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Iteration 2 and Beyond

MAXSAT solver

Datalog solver

Iteration 2

Query Answer Eliminated Abstractions

q1: path(0, 5) a0c0d0, a0b0d0, a1d0 (4/16)

q2: path(0, 2) a0c0, a1c0 (4/16)

10/6/14 34 ETH Workshop on Software Correctness & Reliability

Page 35: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Iteration 2 and Beyond

MAXSAT solver

Datalog solver

Iteration 2

Query Answer Eliminated Abstractions

q1: path(0, 5) a0c0d0, a0b0d0, a1d0 (4/16)

q2: path(0, 2) a0c0 (4/16)

10/6/14 35 ETH Workshop on Software Correctness & Reliability

Page 36: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Iteration 2 and Beyond

MAXSAT solver

Datalog solver

Iteration 2

Query Answer Eliminated Abstractions

q1: path(0, 5) a0c0d0, a0b0d0, a1c0d0 (6/16)

q2: path(0, 2) a0c0, a1c0 (8/16)

10/6/14 36 ETH Workshop on Software Correctness & Reliability

Page 37: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Query Answer Eliminated Abstractions

q1: path(0, 5) a0c0d0, a0b0d0, a1c0d0 (6/16)

q2: path(0, 2) a0c0, a1c0 (8/16)

Iteration 2 and Beyond

MAXSAT solver

Datalog solver

Iteration 3

q1 is proven.

10/6/14 37 ETH Workshop on Software Correctness & Reliability

Page 38: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Iteration 2 and Beyond

MAXSAT solver

Datalog solver

Query Answer Eliminated Abstractions

q1: path(0, 5) a0c0d0, a0b0d0, a1c0d0 (6/16)

q2: path(0, 2) a0c0, a1c0, a1c1, a0c1 (16/16)

Iteration 3

q2 is impossible to prove.

Impossibility

q1 is proven.

10/6/14 38 ETH Workshop on Software Correctness & Reliability

Page 39: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Mixing Counterexamples

Iteration 1 Iteration 3

Eliminated Abstractions:

10/6/14 39 ETH Workshop on Software Correctness & Reliability

Page 40: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Mixing Counterexamples

Iteration 1 Iteration 3 Mixed!

Eliminated Abstractions:

10/6/14 40 ETH Workshop on Software Correctness & Reliability

Page 41: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

!  Implemented in JChord using off-the-shelf solvers: !  Datalog: bddbddb !  MAXSAT: MiFuMaX

!  Applied to two analyses that are challenging to scale: !  k-object-sensitivity pointer analysis:

!  flow-insensitive, weak updates, cloning-based

!  typestate analysis: !  flow-sensitive, strong updates, summary-based

!  Evaluated on 8 Java programs from DaCapo and Ashes.

Experimental Setup

10/6/14 41 ETH Workshop on Software Correctness & Reliability

Page 42: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Benchmark Characteristics

classes methods bytecode(KB) KLOC

toba-s 1K 6K 423 258

javasrc-p 1K 6.5K 434 265

weblech 1.2K 8K 504 326

hedc 1K 7K 442 283

antlr 1.1K 7.7K 532 303

luindex 1.3K 7.9K 508 295

lusearch 1.2K 8K 511 314

schroeder-m 1.9k 12K 708 460

10/6/14 42 ETH Workshop on Software Correctness & Reliability

Page 43: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Results: Pointer Analysis

queries abstraction size iterations

total resolved

current baseline final max

toba-s 7 7 0 170 18K 10

javasrc-p 46 46 0 470 18K 13

weblech 5 5 2 140 31K 10

hedc 47 47 6 730 29K 18

antlr 143 143 5 970 29K 15

luindex 138 138 67 1K 40K 26

lusearch 322 322 29 1K 39K 17

schroeder-m 51 51 25 450 58K 15

4-object-sensitivity < 50%

< 3% of max

10/6/14 43 ETH Workshop on Software Correctness & Reliability

Page 44: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Performance of Datalog: Pointer Analysis

lusearch k = 1, 153s

k = 2, 214s

k = 4, 3h28m

k = 3, 590s Baseline

10/6/14 44 ETH Workshop on Software Correctness & Reliability

Page 45: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Performance of MAXSAT: Pointer Analysis

lusearch

10/6/14 45 ETH Workshop on Software Correctness & Reliability

Page 46: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Statistics of MAXSAT Formulae

pointer analysis

variables clauses

toba-s 0.7M 1.5M

javasrc-p 0.5M 0.9M

weblech 1.6M 3.3M

hedc 1.2M 2.7M

antlr 3.6M 6.9M

luindex 2.4M 5.6M

lusearch 2.1M 5M

schroeder-m 6.7M 23.7M

10/6/14 46 ETH Workshop on Software Correctness & Reliability

Page 47: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Conclusion

Abstraction

Datalog MAXSAT

10/6/14 47 ETH Workshop on Software Correctness & Reliability

Page 48: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

Conclusion

Datalog

Soundness

Tradeoffs

MAXSAT

Hard Constraints

Soft Constraints Precise vs. Scalable

Sound vs. Complete

A(x, y):- B(x, z), C(z, y)

1 0 1 1 0

10/6/14 48 ETH Workshop on Software Correctness & Reliability

Page 49: Self-Adaptive Static Analysis - Penn Engineeringmhnaik/slides/eth2014.pdf · Mayur Naik Georgia Tech Joint work with: Hongseok Yang, Radu Grigore Oxford University Xin Zhang, Ravi

http://pag.gatech.edu/prism

10/6/14 49

Thank You!

ETH Workshop on Software Correctness & Reliability