calling context abstraction with shapes

30
Calling Context Abstraction with Shapes National Taiwan University December 17, 2010 Work to Appear in POPL 2011 Xavier Rival INRIA/ENS Paris Bor-Yuh Evan Chang 張博聿 U of Colorado, Boulder

Upload: vuongkhanh

Post on 14-Feb-2017

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Calling Context Abstraction with Shapes

Calling Context Abstraction

with Shapes

National Taiwan University – December 17, 2010

Work to Appear in POPL 2011

Xavier Rival

INRIA/ENS Paris

Bor-Yuh Evan Chang 張博聿

U of Colorado, Boulder

If some of the symbols are garbled, try either installing TexPoint

Page 2: Calling Context Abstraction with Shapes

Programming Languages Research

at the University of Colorado,

Boulder

Page 3: Calling Context Abstraction with Shapes

3

Interprocedural analysis is important

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

Procedures Central to

Programming

int f(int x) { … }

let f x = …

function f(x) { … }

Interprocedural Analysis Key

to Program Reasoning

Page 4: Calling Context Abstraction with Shapes

4

Two approaches to interprocedural analysis

Each procedure separately

“build procedure

summaries”

+ modular

+ reuse computed

pre/post invariants

- abstracts state relations

- complex tabulation

strategy

Whole program simulation

“simulate inlined

procedures”

- non-modular

- reanalyze procedure at

each call site

+ abstracts states

+ simple iteration

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

analyzeeach definition vs. each call

infer abstractions ofpairs vs. individual

states

Page 5: Calling Context Abstraction with Shapes

5

Two approaches to interprocedural analysis

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

f() {

g();

}

g() {

g();

}

pre1 post1

pre2 post2

pre1 post1

inv

inv

tabulation

usual

iteration

Challenge: Frame Inference Challenge: Unbounded Calls

framecallee

statecaller state “infinite inlining”

State of Practice:

Almost all

interprocedural

analyses today

This Talk:

Using shape

analysis

techniques

Page 6: Calling Context Abstraction with Shapes

6

Our approach is to …

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

Apply inductive shape analysis to summarize

unbounded calling contexts in a whole program,

state-based interprocedural analysis.

Xisa shape analyzer

Parametric

interprocedural

analyzer

• “Very” context-sensitive

– Simultaneous summarization of the stack and heap

• Use simpler base domains with precision

– Need only abstract sets of states not relations

Page 7: Calling Context Abstraction with Shapes

7

Splitting of summaries

To reflect updates precisely

And summarizing for termination

Shape analysis is an abstract interpretation

on abstract memory descriptions with …

l

curcur

doubly-linked

listl

cur

l

cur

l

cur

l

cur

l

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

Here, summarize

the call stack of

activation records

with “shapes”

Page 8: Calling Context Abstraction with Shapes

8

Challenge: Obtain stack inductives

• Reasonable to expect user-supplied inductive

definitions for user-defined heap structures

• Unreasonable to expect inductive definitions

describing possible call stacks.

– Contribution: derived automatically

Xisa is a shape analysis with an precise abstraction

based around user-supplied invariant checkers.

Xisa

h.dll(p) =

if (h = null) then

true

else

h!prev = prev and

h!next.dll(h)

checkers

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

Page 9: Calling Context Abstraction with Shapes

9

Roadmap

• Background: Memory as graphs

• Abstracting calling contexts

• Deriving inductive cases for calling context

summarization

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

Page 10: Calling Context Abstraction with Shapes

10

memory cell

(points-to: °!next = ±)

Memory as separating shape graphs

h.dll(p) =

if (h = null) then

true

else

h!prev = p and

h!next.dll(h)

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

l

®dll(null) dll(¯)

cur

°dll(°)

¯prev

next±

Analogous to separation logic formulas

l dll(±, °)±

“dll segment”

cur

°

®

segment summary

checker

summary

(inductive pred)

memory

address (value,

not cell)

Some number of

memory cells

(thin edges)

¯

Page 11: Calling Context Abstraction with Shapes

11

Unfolding inductive summaries

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

dll(¯)°

dll(¯)°

unfold

unfold°

dll(°)

¯prev

next±

emp

Possible unfoldings give an

inductive definition

Page 12: Calling Context Abstraction with Shapes

12

Roadmap

• Background: Memory as graphs

• Abstracting calling contexts

• Deriving inductive cases for calling context

summarization

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

Page 13: Calling Context Abstraction with Shapes

13

Concrete view of a recursive example

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

void main() {

l = fix(l, NULL);

}

// c is a singly-linked list

dll* fix(dll* c, dll* p) {

dll* ret;

if (c != NULL) {

c->prev = p;

c->next = fix(c->next,c);

if (check(c->data)) {

ret = c->next;

remove(c);

}

else { ret = c; }

}

return c;

} stack heap

heap

unbounded,

needs

summarization

stack

unbounded,

needs

summarization

complex

relations

Page 14: Calling Context Abstraction with Shapes

14

Putting calling contexts into shape graphs

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

heap

summary

local variables

are fields of

activation

records

activation

record base

“frame pointer”

eliding data

field

Need

summarization

Page 15: Calling Context Abstraction with Shapes

15

Calling context is a list

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

Inductive

structure

always a “list”

“Node” kinds

program-specific

Summarize calling

context using an

inductive predicate stack whose definition

is derived “on-the-fly”

Page 16: Calling Context Abstraction with Shapes

16

Calling context summarization

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

Example instance (with all fields)

A call stack summary

Call to fix

from main

Any number of

recursive calls

Top activation

Page 17: Calling Context Abstraction with Shapes

17

Roadmap

• Background: Memory as graphs

• Abstracting calling contexts

• Deriving inductive cases for calling context

summarization

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

Page 18: Calling Context Abstraction with Shapes

18

Deriving the stack inductive definition

Intuition

– At a call, new activation record added

– Need to widen to obtain summaries with stack

instances (but need the definition of stack)

– Compare a few iterations to augment the definition of stack, then apply widening.

• Subtraction

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

Page 19: Calling Context Abstraction with Shapes

19

Subtraction

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

void main() {

walk(l);

}

void walk(list* x) {

if (x != NULL)

walk(x->next);

}

Iteration 1 Iteration 2

Bottom

Match

Top

Match

Diff

yields one-

step

unfolding

Page 20: Calling Context Abstraction with Shapes

20

Preliminary Experience

• Iterative: one fixed point (per loop)

• Recursive: stack definition inference + two fixed

points per recursion (call site and return site)

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

Benchmark Recursive (ms) Iterative (ms)

list traversal 11 4

list get nth element 22 4

list insert at nth element 48 16

list remove nth element 27 11

list deletion 13 4

list append 20 13

list reverse 29 5

Case Study:

Discussing precision with this approach

versus the modular approach.

[see paper]

Page 21: Calling Context Abstraction with Shapes

21

Conclusion

• Xisa applied straightforwardly

– folding at call sites

– unfolding at return sites

– widening applied on recursion

– core analysis algorithms remain

– evidence for flexibility of the framework

• New option for interprocedural analysis

– “very” context-sensitive

– no need to abstract relations simpler base

domains Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

Page 22: Calling Context Abstraction with Shapes

http://www.cs.colorado.edu/~bec/

Page 23: Calling Context Abstraction with Shapes

Programming Languages Research

at the University of Colorado,

Boulder

Amer Diwan Jeremy Siek Sriram SankaranarayananBor-Yuh Evan Chang

Page 24: Calling Context Abstraction with Shapes

24

How do we assist

reasoning about programs?program analysis,

development tools

PL research at CU has breadth!

How do we effectively

express computation?language design, type

systems, logic

How do we make programs

run efficiently?performance analysis,

compilation

How do we get reliable,

secure software?verification, model checking

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

Page 25: Calling Context Abstraction with Shapes

25

PL researchers at CU collaborate!

Gradual

Programming

Dynamic Algorithmic

Complexity

Preventing Resource

Exhaustion Attacks

language design performance analysis

program analysis verification

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

Page 26: Calling Context Abstraction with Shapes

26

Formal methods connections

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

Prof. Aaron Bradley (ECEE)

Prof. Fabio Somenzi (ECEE)

Page 27: Calling Context Abstraction with Shapes

27

The PL group has fun together!

Successes: 2 papers at each of

POPL’11, PLDI’10, and POPL’10

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

Page 28: Calling Context Abstraction with Shapes

28

Our group

Devin Weiyu

PhD

Amer Jeremy

SriramEvan

Faculty

James

BS

MS

Huck

Sam Jonathan

Aleks

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

Page 29: Calling Context Abstraction with Shapes

Programming Languages Research

at the University of Colorado,

Boulder

Page 30: Calling Context Abstraction with Shapes

30

Applying to Colorado

• Computer Science Department information

• Deadlines

• Graduate Advisor: Jackie DeBoard

• Talk to me about application fee waiver

Bor-Yuh Evan Chang 張博聿, University of Colorado at Boulder

http://www.cs.colorado.edu/grad/admission/

http://www.cs.colorado.edu/~bec/

[email protected]

Jan 2 for Fall (Oct 1 for Spring)