SlideShare ist ein Scribd-Unternehmen logo
1 von 73
Downloaden Sie, um offline zu lesen
Kevin Hoffman, Patrick Eugster, Suresh Jagannathan
Roadmap
 Motivation
 Prior Approaches
 Semantics-Aware Trace Analysis (SATA)
 Applying SATA to Regression Analysis
 Evaluation
 Conclusions
Motivation
   Apache XalanJ 2.4.1 works:
      java … xslt.Process -xsl case1.xsl -in test.xml
      java … xslt.Process -xsl case2.xsl -in test.xml
      java … xslt.Process -xsl case3.xsl -in test.xml


   Upgrade to 2.5.1, now it‟s broken!
      java … xslt.Process -xsl case1.xsl -in test.xml
      java … xslt.Process -xsl case2.xsl -in test.xml
      java … xslt.Process -xsl case3.xsl -in test.xml
How to find the cause?
   Manual inspection is hard
     12 months of development from 2.4.1 to 2.5.1
     79K new or changed lines of code
     97 new features and bugfixes
How to find the cause?
   Debugging is hard
     Separation of cause and effect
      ○ e.g. in XalanJ, bug in XSLT compiler
     Complex web of interacting components
   Debugging requires in-depth domain-
    specific knowledge (limited resource)
Roadmap
 Motivation
 Prior Approaches
 Semantics-Aware Trace Analysis (SATA)
 Applying SATA to Regression Analysis
 Evaluation
 Conclusions
Challenges: Static Analysis
 Dynamically generated code
 Advanced language features
     Dynamic dispatch (e.g., Polymorphism)
     Reflection
   Advanced aspect-oriented language features
Challenges: Dynamic Analysis
   Dynamic program slicing
     Slices are still quite large (e.g. 1000s of events)
 Control-flow similarity metrics
 State-space exploration / refinement
Execution Indexing
 Use structure/state of execution to compute
  an „index‟ at each execution point
 Find correlations between indices for
  profiling, debugging, execution comparison
Roadmap
 Motivation
 Prior Approaches
 Semantics-Aware Trace Analysis (SATA)
 Applying SATA to Regression Analysis
 Evaluation
 Conclusions
Semantic Trace Views
           Execution Trace
 --> LOG-1.addMsg('Handling..')
     ...
 <-- LOG-1.addMsg(..)
 --> SP-1.setRequestType('text/html')
     --> STR-1.equals('text/html')
     <-- STR-1.equals(..) ret=true
     --> NUM-1.new(32, 127)
         set NUM-1._minCharRange = 32
         set NUM-1._maxCharRange = 127
     <-- NUM-1.new(..)
     set SP-1._binConv = NUM-1
     ...
     --> LOG-1.addMsg('Set req..')
         ...
     <-- LOG-1.addMsg(..)
 <-- SP-1.setRequestType(..)



   Organize execution traces into “views”
Semantic Trace Views
     Execution Trace (Thread View)
 --> LOG-1.addMsg('Handling..')
     ...
 <-- LOG-1.addMsg(..)
 --> SP-1.setRequestType('text/html')
     --> STR-1.equals('text/html')
     <-- STR-1.equals(..) ret=true
     --> NUM-1.new(32, 127)
         set NUM-1._minCharRange = 32
         set NUM-1._maxCharRange = 127
     <-- NUM-1.new(..)
     set SP-1._binConv = NUM-1
     ...
     --> LOG-1.addMsg('Set req..')
         ...
     <-- LOG-1.addMsg(..)
 <-- SP-1.setRequestType(..)



        Thread views based on thread ID
Semantic Trace Views
   Execution Trace (and Thread View)
 --> LOG-1.addMsg('Handling..')
     ...
 <-- LOG-1.addMsg(..)
 --> SP-1.setRequestType('text/html')
     --> STR-1.equals('text/html')
     <-- STR-1.equals(..) ret=true
     --> NUM-1.new(32, 127)              Method View for SP.setRequestType
         set NUM-1._minCharRange = 32
         set NUM-1._maxCharRange = 127    -->   STR-1.equals('text/html')
     <-- NUM-1.new(..)                    <--   STR-1.equals(..) ret=true
     set SP-1._binConv = NUM-1            -->   NUM-1.new(32, 127)
     ...                                  <--   NUM-1.new(..)
     --> LOG-1.addMsg('Set req..')        set   SP-1._binConv = NUM-1
         ...                              ...
     <-- LOG-1.addMsg(..)                 -->   LOG-1.addMsg('Set req..')
 <-- SP-1.setRequestType(..)              <--   LOG-1.addMsg(..)




   Method views based on top of call stack
Semantic Trace Views
   Execution Trace (and Thread View)           Method View for NUM.new
 --> LOG-1.addMsg('Handling..')          set NUM-1._minCharRange = 32
     ...                                 set NUM-1._maxCharRange = 127
 <-- LOG-1.addMsg(..)
 --> SP-1.setRequestType('text/html')
     --> STR-1.equals('text/html')
     <-- STR-1.equals(..) ret=true
     --> NUM-1.new(32, 127)               Method View for LOG.addMsg
         set NUM-1._minCharRange = 32
         set NUM-1._maxCharRange = 127   ...
     <-- NUM-1.new(..)                   ...
     set SP-1._binConv = NUM-1
     ...
     --> LOG-1.addMsg('Set req..')
         ...
     <-- LOG-1.addMsg(..)
 <-- SP-1.setRequestType(..)



   Method views based on top of call stack
Semantic Trace Views
   Execution Trace (and Thread View)      Active Object View for NUM-1.new
 --> LOG-1.addMsg('Handling..')           set NUM-1._minCharRange = 32
     ...                                  set NUM-1._maxCharRange = 127
 <-- LOG-1.addMsg(..)
 --> SP-1.setRequestType('text/html')
     --> STR-1.equals('text/html')
     <-- STR-1.equals(..) ret=true
     --> NUM-1.new(32, 127)              Active Object View for LOG-1.addMsg
         set NUM-1._minCharRange = 32
         set NUM-1._maxCharRange = 127    ...
     <-- NUM-1.new(..)                    ...
     set SP-1._binConv = NUM-1
     ...
     --> LOG-1.addMsg('Set req..')
         ...
     <-- LOG-1.addMsg(..)
 <-- SP-1.setRequestType(..)



Active object views based on top of call stack
Semantic Trace Views
   Execution Trace (and Thread View)       Target Object View for NUM-1
 --> LOG-1.addMsg('Handling..')          -->   NUM-1.new(32, 127)
     ...                                 set   NUM-1._minCharRange = 32
 <-- LOG-1.addMsg(..)                    set   NUM-1._maxCharRange = 127
 --> SP-1.setRequestType('text/html')    <--   NUM-1.new(..)
     --> STR-1.equals('text/html')
     <-- STR-1.equals(..) ret=true
     --> NUM-1.new(32, 127)                Target Object View for LOG-1
         set NUM-1._minCharRange = 32
         set NUM-1._maxCharRange = 127   -->   LOG-1.addMsg('Handling..')
     <-- NUM-1.new(..)                   <--   LOG-1.addMsg(..)
     set SP-1._binConv = NUM-1           -->   LOG-1.addMsg('Set req..')
     ...                                 <--   LOG-1.addMsg(..)
     --> LOG-1.addMsg('Set req..')
         ...
     <-- LOG-1.addMsg(..)
 <-- SP-1.setRequestType(..)



                       Target object views
Semantic Trace Views
   Execution Trace (and Thread View)        Target Object View for NUM-1
                                          -->   NUM-1.new(32, 127)
 --> LOG-1.addMsg('Handling..')           set   NUM-1._minCharRange = 32
     ...                                  set   NUM-1._maxCharRange = 127
 <-- LOG-1.addMsg(..)                     <--   NUM-1.new(..)
 --> SP-1.setRequestType('text/html')
     --> STR-1.equals('text/html')       Method View for SP.setRequestType
     <-- STR-1.equals(..) ret=true        -->   STR-1.equals('text/html')
     --> NUM-1.new(32, 127)               <--   STR-1.equals(..) ret=true
         set NUM-1._minCharRange = 32     -->   NUM-1.new(32, 127)
         set NUM-1._maxCharRange = 127    <--   NUM-1.new(..)
     <-- NUM-1.new(..)                    set   SP-1._binConv = NUM-1
     set SP-1._binConv = NUM-1            ...
                                          -->   LOG-1.addMsg('Set req..')
     ...
                                          <--   LOG-1.addMsg(..)
     --> LOG-1.addMsg('Set req..')
         ...                                Target Object View for LOG-1
     <-- LOG-1.addMsg(..)
                                          -->   LOG-1.addMsg('Handling..')
 <-- SP-1.setRequestType(..)              <--   LOG-1.addMsg(..)
                                          -->   LOG-1.addMsg('Set req..')
                                          <--   LOG-1.addMsg(..)


Views are linked allowing for multilevel analysis
Roadmap
 Motivation
 Prior Approaches
 Semantics-Aware Trace Analysis (SATA)
 Applying SATA to Regression Analysis
 Evaluation
 Conclusions
What if we just used diff?
   Collect dynamic traces:
      2.4.1: sssdyntracer … xslt.Process -xsl case2.xsl -in test.xml
      2.5.1: sssdyntracer … xslt.Process -xsl case2.xsl -in test.xml
   Traces are about 48K entries
What if we just used diff?
   Collect dynamic traces:
       2.4.1: sssdyntracer … xslt.Process -xsl case2.xsl -in test.xml
       2.5.1: sssdyntracer … xslt.Process -xsl case2.xsl -in test.xml
 Traces are about 48K entries
 Run “diff” tool on traces:
     Requires 25 minutes on a 1.8GHZ x64 CPU
     Requires 27 GB of RAM
     Produces 1594 differences (3.3% of trace)
Challenges of diff / LCS
Old:



New:

   diff based on LCS algorithm:
     Intractable on large traces: Ω(n2)
     Can‟t detect moved sequences
     Is not semantic-aware
   diff produces too many differences
Leveraging Semantic Views
   Use secondary views (method/object) to
    find correlations in primary view (thread)
     Robust against reorderings in other views
     Correlations are semantically sound
   Apply LCS/diff over fixed-sized
    windows in primary view to find „best
    overall correlation‟ in primary view
Recall: What LCS would produce

Old:




New:
View-based Semantic Differencing
           Main View
Old:   CBDHXYFEF Z


New:    CADFEFXYZ
View-based Semantic Differencing
           Main View
Old:   CBDHXYFEF Z


New:    CADFEFXYZ
          Secondary View

           DHXYZ           View construction
                           (only one of many
                            secondary views
                             displayed here)
              DXYZ
View-based Semantic Differencing
           Main View
Old:   CBDHXYFEF Z


New:    CADFEFXYZ
          Secondary View

           DHXYZ
                           Lock-step scanning
                              of main view

              DXYZ
View-based Semantic Differencing
                Main View
Old:   CBDHXYFEF Z
        

            
New:    CADFEFXYZ
            Secondary View

                DHXYZ
                             Lock-step scanning
                                of main view

                  DXYZ
View-based Semantic Differencing
                Main View
Old:   CBDHXYFEF Z
        

            
New:    CADFEFXYZ
            Secondary View

                DHXYZ          Discovery of
                                correlating
                             secondary views
                  DXYZ
View-based Semantic Differencing
                Main View
Old:   CBDHXYFEF Z
        

            
New:    CADFEFXYZ
            Secondary View

                DHXYZ         Exploration of
                                correlating
                             secondary views
                  DXYZ
View-based Semantic Differencing
                Main View
Old:   CBDHXYFEF Z
        

            
New:    CADFEFXYZ
            Secondary View

                DHXYZ
                             Exploration of
                                correlating
                             secondary views
                  DXYZ
View-based Semantic Differencing
                Main View
Old:   CBDHXYFEF Z
        

            
New:    CADFEFXYZ
            Secondary View

                DHXYZ
                             Exploration of
                                correlating
                             secondary views
                  DXYZ
View-based Semantic Differencing
                Main View
Old:   CBDHXYFEF Z
        

            
New:    CADFEFXYZ
            Secondary View

                DHXYZ
                             Exploration of
                                correlating
                             secondary views
                  DXYZ
View-based Semantic Differencing
                Main View
Old:   CBDHXYFEF Z
        

            
New:    CADFEFXYZ
            Secondary View

                DHXYZ
                             Exploration of
                                correlating
                             secondary views
                  DXYZ
View-based Semantic Differencing
                Main View
Old:   CBDHXYFEF Z
        

            
New:    CADFEFXYZ
            Secondary View

                DHXYZ
                  
                             Lock-step scanning
                                of main view

                  DXYZ
View-based Semantic Differencing
                Main View
Old:   CBDHXYFEF Z
        

            
New:    CADFEFXYZ
            Secondary View

                DHXYZ
                  
                             Lock-step scanning
                                of main view

                  DXYZ
View-based Semantic Differencing
                Main View
Old:   CBDHXYFEF Z
               

                   
New:    CADFEFXYZ
            Secondary View

                DHXYZ        Lock-step scanning
                    
                                of main view;
                               exploration of
                              secondary views
                    DXYZ
View-based Semantic Differencing
                Main View
Old:   CBDHXYFEF Z
               

                   
New:    CADFEFXYZ
            Secondary View

                DHXYZ           Apply LCS over
                    
                             fixed-size window in
                             main view to find the
                                next correlation
                    DXYZ
View-based Semantic Differencing
                Main View
Old:   CBDHXYFEF Z
               

            
New:    CADFEFXYZ
            Secondary View

                DHXYZ           Apply LCS over
                    
                             fixed-size window in
                             main view to find the
                                next correlation
                    DXYZ
View-based Semantic Differencing
                Main View
Old:   CBDHXYFEF Z
               

            
New:    CADFEFXYZ
            Secondary View

                DHXYZ
                    
                             Lock-step scanning
                                of main view

                    DXYZ
View-based Semantic Differencing
                Main View
Old:   CBDHXYFEF Z
               

            
New:    CADFEFXYZ
            Secondary View

                DHXYZ
                    
                             Lock-step scanning
                                of main view

                    DXYZ
View-based Semantic Differencing
                Main View
Old:   CBDHXYFEF Z
               

            
New:    CADFEFXYZ
            Secondary View

                DHXYZ
                    
                             Lock-step scanning
                                of main view

                    DXYZ
View-based Semantic Differencing
                Main View
Old:   CBDHXYFEF Z
               

            
New:    CADFEFXYZ
            Secondary View

                DHXYZ           Apply LCS over
                    
                             fixed-size window in
                             main view to find the
                                next correlation
                    DXYZ
View-based Semantic Differencing
                Main View
Old:   CBDHXYFEF Z
               

            
New:    CADFEFXYZ
            Secondary View

                DHXYZ
                    
                             Lock-step scanning
                                of main view

                    DXYZ
View-based Semantic Differencing
                Main View
Old:   CBDHXYFEF Z
               

            
New:    CADFEFXYZ
            Secondary View

                DHXYZ           View-based
                    
                                 differencing
                              identified moved
                             sequences properly
                    DXYZ
View-Based Differencing vs. LCS
   Collect dynamic traces:
       2.4.1: sssdyntracer … xslt.Process -xsl case2.xsl -in test.xml
       2.5.1: sssdyntracer … xslt.Process -xsl case2.xsl -in test.xml
 Traces are about 48K entries
 Run view-based differencing tool on traces:
     Requires 0.3 minutes instead of 25 minutes
     Requires 0.1 GB instead of 27 GB of RAM
     Produces 598 differences (1.2% of trace)
      ○ vs 1594 differences (3.3% of trace) for LCS
Regression Analysis Process
 Old Program
                      AspectJ
                                    Old Program w/        New Program w/
 New Program         Load-time
                                    Instrumentation        Instrumentation
                      Weaver
Tracing Aspects

                                                                 Trace
                                         Trace
                                                                Working
                                      Regressing
                                                              Test Case(s)
   Likely                              Test Case
                  RPrism Analysis                             (but similar)
 Regression         Algorithm
  Causes


                    View Trace
                                                   Traces for 4
                    Differencing
                                                      Cases
RPrism Analysis Algorithm
               Suspected differences set:
        Old Program                 New Program
    Regressing Test Case   VS    Regressing Test Case



                Expected differences set:
       Old Program                 New Program
     Working Test Case     VS     Working Test Case



               Regression differences set:
      New Program                   New Program
     Working Test Case     VS    Regressing Test Case
RPrism Analysis Algorithm

                               Regression
 Results                     differences set




  Suspected                     Expected
differences set              differences set
Roadmap
 Motivation
 Prior Approaches
 Semantics-Aware Trace Analysis (SATA)
 Applying SATA to Regression Analysis
 Evaluation
 Conclusions
4 Regressions on 3 Projects
   Daikon
     Dynamic invariant detector from MIT
     Used as a test subject in 11 other publications
   Apache XalanJ
     Implements XML XPath and XSLT
     Interprets XSLT or compiles XSLT to Java bytecode
     Used in Sun JDK to implement javax.xml.* classes
   Apache Derby (720 KLOC)
     Embedded or client/server relational DB
     AKA Sun Java DB, included in JDK 6
Daikon Regression
   About Daikon
     169 KLOC, 1100 classes
     Dynamic invariant detector from MIT
     Used as a test subject in 11 other publications
   About the Regression
     Regression first studied by JUnit/CIA [FSE „06]
      ○ 1 week of differences
     Execution traces about 15K entries in length
Daikon Regression




 42 differences before, 3 after analysis
 Same accuracy as LCS
 12.9x speedup
 12.1 times less memory
XalanJ-1725 Regression
   About XalanJ
     365 KLOC, 1500 classes
     Implements XPath and XSLT for XML
     Used by Sun to implement javax.xml.* classes
   About the Regression
     Regression from version 2.5.1 to 2.5.2
      ○ 4 months of code changes, 84 major changes
     Execution traces about 98K entries in length
     Regressing behavior exhibited within
     dynamically generated code
XalanJ-1725 Regression




 296 differences before, 1 after analysis
 LCS failed to find the regression cause
 82.8x speedup
 269 times less memory
XalanJ-1802 Regression
   About XalanJ
     365 KLOC, 1500 classes
     Implements XPath and XSLT for XML
     Used by Sun to implement javax.xml.* classes
   About the Regression
     Regression from version 2.4.1 to 2.5.1
      ○ 79K changed code over 12 months
      ○ 97 bugfixes and feature enhancements
     Execution traces about 44K entries in length
     Regressing behavior exhibited within a completely
     rearchitected module
XalanJ-1802 Regression




 184 differences before, 10 after analysis
 Same accuracy as LCS
 9.4x speedup
 35.4 times less memory
Derby-1633 Regression
   About Derby
     720K lines of code
     Embedded or client/server relational DB
     AKA Sun Java DB, included in JDK 6
   About the Regression
     Regression from version 10.1.2.1 to 10.1.3.1
      ○ 7 months of changes, 9 enhancements, 97 bugfixes
     Execution traces about 335K entries in length
     Involves multiple threads, larger code base (2x),
     and longer running traces (3x)
Derby-1633 Regression




 2663 differences before, 6 after analysis
 LCS completely failed (out of memory
  failure at 32 GB)
Roadmap
 Motivation
 Prior Approaches
 Semantics-Aware Trace Analysis (SATA)
 Applying SATA to Regression Analysis
 Evaluation
 Conclusions
Summary / Future Directions
   New view-based model for traces
   Facilitates semantics-aware dynamic analyses
   One application is efficient trace differencing
   Full formal framework in paper
   Other potential applications:
     Race detection
     Object-protocol enforcement
     Data-mining from traces
     Malware detection
Download RPrism, try it out!
http://cs.purdue.edu/homes/kjhoffma/rprism/




              Contact Information:
                 Kevin Hoffman
           kjhoffma@cs.purdue.edu
View-based Diff vs LCS
Regression Cause Analysis
   Factors affecting false negatives:
     Dynamic traces are complete, set A must contain cause
     Differences in set B produced correct output, not likely to
      contain the direct regression cause
     Intersecting with set C can introduce false negatives (e.g.,
      regression caused by code removal)
   Factors affecting false positives:
     Choice of similar test case affects quality of set B
     Intersecting/subtracting set C also helps


                    Set A is the suspected differences set
                     Set B is the expected differences set
                    Set C is the regression differences set
Lock-step Scanning of Main View
Lock-step Scanning of Main View
Exploration of Secondary Views with LCS
Apply LCS over Fixed-size Window in
Main View to Find the Next Correlation
Exploration of Secondary Views with LCS
Apply LCS over Fixed-size Window in
Main View to Find the Next Correlation
Lock-step Scanning of Main View

Weitere ähnliche Inhalte

Was ist angesagt?

groovy databases
groovy databasesgroovy databases
groovy databasesPaul King
 
The Ring programming language version 1.7 book - Part 84 of 196
The Ring programming language version 1.7 book - Part 84 of 196The Ring programming language version 1.7 book - Part 84 of 196
The Ring programming language version 1.7 book - Part 84 of 196Mahmoud Samir Fayed
 
Mobile Fest 2018. Александр Корин. Болеутоляющее
Mobile Fest 2018. Александр Корин. БолеутоляющееMobile Fest 2018. Александр Корин. Болеутоляющее
Mobile Fest 2018. Александр Корин. БолеутоляющееMobileFest2018
 
collectd & PostgreSQL
collectd & PostgreSQLcollectd & PostgreSQL
collectd & PostgreSQLMark Wong
 
Automated Testing with CMake, CTest and CDash
Automated Testing with CMake, CTest and CDashAutomated Testing with CMake, CTest and CDash
Automated Testing with CMake, CTest and CDashRichard Thomson
 
The Ring programming language version 1.5.2 book - Part 9 of 181
The Ring programming language version 1.5.2 book - Part 9 of 181The Ring programming language version 1.5.2 book - Part 9 of 181
The Ring programming language version 1.5.2 book - Part 9 of 181Mahmoud Samir Fayed
 
BDD - Behavior Driven Development Webapps mit Groovy Spock und Geb
BDD - Behavior Driven Development Webapps mit Groovy Spock und GebBDD - Behavior Driven Development Webapps mit Groovy Spock und Geb
BDD - Behavior Driven Development Webapps mit Groovy Spock und GebChristian Baranowski
 
The Ring programming language version 1.5.2 book - Part 76 of 181
The Ring programming language version 1.5.2 book - Part 76 of 181The Ring programming language version 1.5.2 book - Part 76 of 181
The Ring programming language version 1.5.2 book - Part 76 of 181Mahmoud Samir Fayed
 
The Ring programming language version 1.6 book - Part 82 of 189
The Ring programming language version 1.6 book - Part 82 of 189The Ring programming language version 1.6 book - Part 82 of 189
The Ring programming language version 1.6 book - Part 82 of 189Mahmoud Samir Fayed
 
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...Paul King
 
Optimizing Slow Queries with Indexes and Creativity
Optimizing Slow Queries with Indexes and CreativityOptimizing Slow Queries with Indexes and Creativity
Optimizing Slow Queries with Indexes and CreativityMongoDB
 
concurrency gpars
concurrency gparsconcurrency gpars
concurrency gparsPaul King
 
The Ring programming language version 1.10 book - Part 94 of 212
The Ring programming language version 1.10 book - Part 94 of 212The Ring programming language version 1.10 book - Part 94 of 212
The Ring programming language version 1.10 book - Part 94 of 212Mahmoud Samir Fayed
 
Sequencing Audio Using React and the Web Audio API
Sequencing Audio Using React and the Web Audio APISequencing Audio Using React and the Web Audio API
Sequencing Audio Using React and the Web Audio APIVincent Riemer
 
[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization
[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization
[Pgday.Seoul 2021] 2. Porting Oracle UDF and OptimizationPgDay.Seoul
 

Was ist angesagt? (20)

groovy databases
groovy databasesgroovy databases
groovy databases
 
PostgreSQL: Advanced indexing
PostgreSQL: Advanced indexingPostgreSQL: Advanced indexing
PostgreSQL: Advanced indexing
 
The Ring programming language version 1.7 book - Part 84 of 196
The Ring programming language version 1.7 book - Part 84 of 196The Ring programming language version 1.7 book - Part 84 of 196
The Ring programming language version 1.7 book - Part 84 of 196
 
Mobile Fest 2018. Александр Корин. Болеутоляющее
Mobile Fest 2018. Александр Корин. БолеутоляющееMobile Fest 2018. Александр Корин. Болеутоляющее
Mobile Fest 2018. Александр Корин. Болеутоляющее
 
collectd & PostgreSQL
collectd & PostgreSQLcollectd & PostgreSQL
collectd & PostgreSQL
 
Automated Testing with CMake, CTest and CDash
Automated Testing with CMake, CTest and CDashAutomated Testing with CMake, CTest and CDash
Automated Testing with CMake, CTest and CDash
 
Jersey Guice AOP
Jersey Guice AOPJersey Guice AOP
Jersey Guice AOP
 
The Ring programming language version 1.5.2 book - Part 9 of 181
The Ring programming language version 1.5.2 book - Part 9 of 181The Ring programming language version 1.5.2 book - Part 9 of 181
The Ring programming language version 1.5.2 book - Part 9 of 181
 
BDD - Behavior Driven Development Webapps mit Groovy Spock und Geb
BDD - Behavior Driven Development Webapps mit Groovy Spock und GebBDD - Behavior Driven Development Webapps mit Groovy Spock und Geb
BDD - Behavior Driven Development Webapps mit Groovy Spock und Geb
 
XTW_Import
XTW_ImportXTW_Import
XTW_Import
 
The Ring programming language version 1.5.2 book - Part 76 of 181
The Ring programming language version 1.5.2 book - Part 76 of 181The Ring programming language version 1.5.2 book - Part 76 of 181
The Ring programming language version 1.5.2 book - Part 76 of 181
 
The Ring programming language version 1.6 book - Part 82 of 189
The Ring programming language version 1.6 book - Part 82 of 189The Ring programming language version 1.6 book - Part 82 of 189
The Ring programming language version 1.6 book - Part 82 of 189
 
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
 
webScrapingFunctions
webScrapingFunctionswebScrapingFunctions
webScrapingFunctions
 
Optimizing Slow Queries with Indexes and Creativity
Optimizing Slow Queries with Indexes and CreativityOptimizing Slow Queries with Indexes and Creativity
Optimizing Slow Queries with Indexes and Creativity
 
concurrency gpars
concurrency gparsconcurrency gpars
concurrency gpars
 
Dun ddd
Dun dddDun ddd
Dun ddd
 
The Ring programming language version 1.10 book - Part 94 of 212
The Ring programming language version 1.10 book - Part 94 of 212The Ring programming language version 1.10 book - Part 94 of 212
The Ring programming language version 1.10 book - Part 94 of 212
 
Sequencing Audio Using React and the Web Audio API
Sequencing Audio Using React and the Web Audio APISequencing Audio Using React and the Web Audio API
Sequencing Audio Using React and the Web Audio API
 
[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization
[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization
[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization
 

Ähnlich wie Semantics-Aware Trace Analysis for Regression Debugging

Introduction to-mongo db-execution-plan-optimizer-final
Introduction to-mongo db-execution-plan-optimizer-finalIntroduction to-mongo db-execution-plan-optimizer-final
Introduction to-mongo db-execution-plan-optimizer-finalM Malai
 
Introduction to Mongodb execution plan and optimizer
Introduction to Mongodb execution plan and optimizerIntroduction to Mongodb execution plan and optimizer
Introduction to Mongodb execution plan and optimizerMydbops
 
Using R on Netezza
Using R on NetezzaUsing R on Netezza
Using R on NetezzaAjay Ohri
 
MongoDB Performance Tuning
MongoDB Performance TuningMongoDB Performance Tuning
MongoDB Performance TuningPuneet Behl
 
The Ring programming language version 1.5.3 book - Part 26 of 184
The Ring programming language version 1.5.3 book - Part 26 of 184The Ring programming language version 1.5.3 book - Part 26 of 184
The Ring programming language version 1.5.3 book - Part 26 of 184Mahmoud Samir Fayed
 
The Ring programming language version 1.2 book - Part 55 of 84
The Ring programming language version 1.2 book - Part 55 of 84The Ring programming language version 1.2 book - Part 55 of 84
The Ring programming language version 1.2 book - Part 55 of 84Mahmoud Samir Fayed
 
Apache Spark in your likeness - low and high level customization
Apache Spark in your likeness - low and high level customizationApache Spark in your likeness - low and high level customization
Apache Spark in your likeness - low and high level customizationBartosz Konieczny
 
The Ring programming language version 1.9 book - Part 91 of 210
The Ring programming language version 1.9 book - Part 91 of 210The Ring programming language version 1.9 book - Part 91 of 210
The Ring programming language version 1.9 book - Part 91 of 210Mahmoud Samir Fayed
 
ML with python.pdf
ML with python.pdfML with python.pdf
ML with python.pdfn58648017
 
Rapid and Scalable Development with MongoDB, PyMongo, and Ming
Rapid and Scalable Development with MongoDB, PyMongo, and MingRapid and Scalable Development with MongoDB, PyMongo, and Ming
Rapid and Scalable Development with MongoDB, PyMongo, and MingRick Copeland
 
(2) c sharp introduction_basics_part_i
(2) c sharp introduction_basics_part_i(2) c sharp introduction_basics_part_i
(2) c sharp introduction_basics_part_iNico Ludwig
 
ReactiveCocoa and Swift, Better Together
ReactiveCocoa and Swift, Better TogetherReactiveCocoa and Swift, Better Together
ReactiveCocoa and Swift, Better TogetherColin Eberhardt
 

Ähnlich wie Semantics-Aware Trace Analysis for Regression Debugging (20)

Introduction to-mongo db-execution-plan-optimizer-final
Introduction to-mongo db-execution-plan-optimizer-finalIntroduction to-mongo db-execution-plan-optimizer-final
Introduction to-mongo db-execution-plan-optimizer-final
 
Introduction to Mongodb execution plan and optimizer
Introduction to Mongodb execution plan and optimizerIntroduction to Mongodb execution plan and optimizer
Introduction to Mongodb execution plan and optimizer
 
Using R on Netezza
Using R on NetezzaUsing R on Netezza
Using R on Netezza
 
MongoDB Performance Tuning
MongoDB Performance TuningMongoDB Performance Tuning
MongoDB Performance Tuning
 
R code for data manipulation
R code for data manipulationR code for data manipulation
R code for data manipulation
 
R code for data manipulation
R code for data manipulationR code for data manipulation
R code for data manipulation
 
R console
R consoleR console
R console
 
The Ring programming language version 1.5.3 book - Part 26 of 184
The Ring programming language version 1.5.3 book - Part 26 of 184The Ring programming language version 1.5.3 book - Part 26 of 184
The Ring programming language version 1.5.3 book - Part 26 of 184
 
bluespec talk
bluespec talkbluespec talk
bluespec talk
 
The Ring programming language version 1.2 book - Part 55 of 84
The Ring programming language version 1.2 book - Part 55 of 84The Ring programming language version 1.2 book - Part 55 of 84
The Ring programming language version 1.2 book - Part 55 of 84
 
Gdce 2010 dx11
Gdce 2010 dx11Gdce 2010 dx11
Gdce 2010 dx11
 
Rx workshop
Rx workshopRx workshop
Rx workshop
 
Apache Spark in your likeness - low and high level customization
Apache Spark in your likeness - low and high level customizationApache Spark in your likeness - low and high level customization
Apache Spark in your likeness - low and high level customization
 
The Ring programming language version 1.9 book - Part 91 of 210
The Ring programming language version 1.9 book - Part 91 of 210The Ring programming language version 1.9 book - Part 91 of 210
The Ring programming language version 1.9 book - Part 91 of 210
 
Seminar PSU 10.10.2014 mme
Seminar PSU 10.10.2014 mmeSeminar PSU 10.10.2014 mme
Seminar PSU 10.10.2014 mme
 
ML with python.pdf
ML with python.pdfML with python.pdf
ML with python.pdf
 
Rapid and Scalable Development with MongoDB, PyMongo, and Ming
Rapid and Scalable Development with MongoDB, PyMongo, and MingRapid and Scalable Development with MongoDB, PyMongo, and Ming
Rapid and Scalable Development with MongoDB, PyMongo, and Ming
 
Ns2 by khan
Ns2 by khan Ns2 by khan
Ns2 by khan
 
(2) c sharp introduction_basics_part_i
(2) c sharp introduction_basics_part_i(2) c sharp introduction_basics_part_i
(2) c sharp introduction_basics_part_i
 
ReactiveCocoa and Swift, Better Together
ReactiveCocoa and Swift, Better TogetherReactiveCocoa and Swift, Better Together
ReactiveCocoa and Swift, Better Together
 

Mehr von Kevin Hoffman

Towards Probabilistic Assessment of Modularity
Towards Probabilistic Assessment of ModularityTowards Probabilistic Assessment of Modularity
Towards Probabilistic Assessment of ModularityKevin Hoffman
 
Towards Reusable Components With Aspects [ICSE 2008]
Towards Reusable Components With Aspects [ICSE 2008]Towards Reusable Components With Aspects [ICSE 2008]
Towards Reusable Components With Aspects [ICSE 2008]Kevin Hoffman
 
Aspect-based Introspection And Change Analysis For Evolving Programs [RAMSE @...
Aspect-based Introspection And Change Analysis For Evolving Programs [RAMSE @...Aspect-based Introspection And Change Analysis For Evolving Programs [RAMSE @...
Aspect-based Introspection And Change Analysis For Evolving Programs [RAMSE @...Kevin Hoffman
 
Aspect-oriented Transactions via Explicit Join Points
Aspect-oriented Transactions via Explicit Join PointsAspect-oriented Transactions via Explicit Join Points
Aspect-oriented Transactions via Explicit Join PointsKevin Hoffman
 
Aspects Made Explicit for Safe Transactional Semantics [DSN 2006]
Aspects Made Explicit for Safe Transactional Semantics [DSN 2006]Aspects Made Explicit for Safe Transactional Semantics [DSN 2006]
Aspects Made Explicit for Safe Transactional Semantics [DSN 2006]Kevin Hoffman
 
Introduction to AOP, AspectJ, and Explicit Join Points
Introduction to AOP, AspectJ, and Explicit Join PointsIntroduction to AOP, AspectJ, and Explicit Join Points
Introduction to AOP, AspectJ, and Explicit Join PointsKevin Hoffman
 
Bridging Java And AspectJ [PPPJ08]
Bridging Java And AspectJ [PPPJ08]Bridging Java And AspectJ [PPPJ08]
Bridging Java And AspectJ [PPPJ08]Kevin Hoffman
 

Mehr von Kevin Hoffman (7)

Towards Probabilistic Assessment of Modularity
Towards Probabilistic Assessment of ModularityTowards Probabilistic Assessment of Modularity
Towards Probabilistic Assessment of Modularity
 
Towards Reusable Components With Aspects [ICSE 2008]
Towards Reusable Components With Aspects [ICSE 2008]Towards Reusable Components With Aspects [ICSE 2008]
Towards Reusable Components With Aspects [ICSE 2008]
 
Aspect-based Introspection And Change Analysis For Evolving Programs [RAMSE @...
Aspect-based Introspection And Change Analysis For Evolving Programs [RAMSE @...Aspect-based Introspection And Change Analysis For Evolving Programs [RAMSE @...
Aspect-based Introspection And Change Analysis For Evolving Programs [RAMSE @...
 
Aspect-oriented Transactions via Explicit Join Points
Aspect-oriented Transactions via Explicit Join PointsAspect-oriented Transactions via Explicit Join Points
Aspect-oriented Transactions via Explicit Join Points
 
Aspects Made Explicit for Safe Transactional Semantics [DSN 2006]
Aspects Made Explicit for Safe Transactional Semantics [DSN 2006]Aspects Made Explicit for Safe Transactional Semantics [DSN 2006]
Aspects Made Explicit for Safe Transactional Semantics [DSN 2006]
 
Introduction to AOP, AspectJ, and Explicit Join Points
Introduction to AOP, AspectJ, and Explicit Join PointsIntroduction to AOP, AspectJ, and Explicit Join Points
Introduction to AOP, AspectJ, and Explicit Join Points
 
Bridging Java And AspectJ [PPPJ08]
Bridging Java And AspectJ [PPPJ08]Bridging Java And AspectJ [PPPJ08]
Bridging Java And AspectJ [PPPJ08]
 

Kürzlich hochgeladen

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 

Kürzlich hochgeladen (20)

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

Semantics-Aware Trace Analysis for Regression Debugging

  • 1. Kevin Hoffman, Patrick Eugster, Suresh Jagannathan
  • 2. Roadmap  Motivation  Prior Approaches  Semantics-Aware Trace Analysis (SATA)  Applying SATA to Regression Analysis  Evaluation  Conclusions
  • 3. Motivation  Apache XalanJ 2.4.1 works: java … xslt.Process -xsl case1.xsl -in test.xml java … xslt.Process -xsl case2.xsl -in test.xml java … xslt.Process -xsl case3.xsl -in test.xml  Upgrade to 2.5.1, now it‟s broken! java … xslt.Process -xsl case1.xsl -in test.xml java … xslt.Process -xsl case2.xsl -in test.xml java … xslt.Process -xsl case3.xsl -in test.xml
  • 4. How to find the cause?  Manual inspection is hard  12 months of development from 2.4.1 to 2.5.1  79K new or changed lines of code  97 new features and bugfixes
  • 5. How to find the cause?  Debugging is hard  Separation of cause and effect ○ e.g. in XalanJ, bug in XSLT compiler  Complex web of interacting components  Debugging requires in-depth domain- specific knowledge (limited resource)
  • 6. Roadmap  Motivation  Prior Approaches  Semantics-Aware Trace Analysis (SATA)  Applying SATA to Regression Analysis  Evaluation  Conclusions
  • 7. Challenges: Static Analysis  Dynamically generated code  Advanced language features  Dynamic dispatch (e.g., Polymorphism)  Reflection  Advanced aspect-oriented language features
  • 8. Challenges: Dynamic Analysis  Dynamic program slicing  Slices are still quite large (e.g. 1000s of events)  Control-flow similarity metrics  State-space exploration / refinement
  • 9. Execution Indexing  Use structure/state of execution to compute an „index‟ at each execution point  Find correlations between indices for profiling, debugging, execution comparison
  • 10. Roadmap  Motivation  Prior Approaches  Semantics-Aware Trace Analysis (SATA)  Applying SATA to Regression Analysis  Evaluation  Conclusions
  • 11. Semantic Trace Views Execution Trace --> LOG-1.addMsg('Handling..') ... <-- LOG-1.addMsg(..) --> SP-1.setRequestType('text/html') --> STR-1.equals('text/html') <-- STR-1.equals(..) ret=true --> NUM-1.new(32, 127) set NUM-1._minCharRange = 32 set NUM-1._maxCharRange = 127 <-- NUM-1.new(..) set SP-1._binConv = NUM-1 ... --> LOG-1.addMsg('Set req..') ... <-- LOG-1.addMsg(..) <-- SP-1.setRequestType(..) Organize execution traces into “views”
  • 12. Semantic Trace Views Execution Trace (Thread View) --> LOG-1.addMsg('Handling..') ... <-- LOG-1.addMsg(..) --> SP-1.setRequestType('text/html') --> STR-1.equals('text/html') <-- STR-1.equals(..) ret=true --> NUM-1.new(32, 127) set NUM-1._minCharRange = 32 set NUM-1._maxCharRange = 127 <-- NUM-1.new(..) set SP-1._binConv = NUM-1 ... --> LOG-1.addMsg('Set req..') ... <-- LOG-1.addMsg(..) <-- SP-1.setRequestType(..) Thread views based on thread ID
  • 13. Semantic Trace Views Execution Trace (and Thread View) --> LOG-1.addMsg('Handling..') ... <-- LOG-1.addMsg(..) --> SP-1.setRequestType('text/html') --> STR-1.equals('text/html') <-- STR-1.equals(..) ret=true --> NUM-1.new(32, 127) Method View for SP.setRequestType set NUM-1._minCharRange = 32 set NUM-1._maxCharRange = 127 --> STR-1.equals('text/html') <-- NUM-1.new(..) <-- STR-1.equals(..) ret=true set SP-1._binConv = NUM-1 --> NUM-1.new(32, 127) ... <-- NUM-1.new(..) --> LOG-1.addMsg('Set req..') set SP-1._binConv = NUM-1 ... ... <-- LOG-1.addMsg(..) --> LOG-1.addMsg('Set req..') <-- SP-1.setRequestType(..) <-- LOG-1.addMsg(..) Method views based on top of call stack
  • 14. Semantic Trace Views Execution Trace (and Thread View) Method View for NUM.new --> LOG-1.addMsg('Handling..') set NUM-1._minCharRange = 32 ... set NUM-1._maxCharRange = 127 <-- LOG-1.addMsg(..) --> SP-1.setRequestType('text/html') --> STR-1.equals('text/html') <-- STR-1.equals(..) ret=true --> NUM-1.new(32, 127) Method View for LOG.addMsg set NUM-1._minCharRange = 32 set NUM-1._maxCharRange = 127 ... <-- NUM-1.new(..) ... set SP-1._binConv = NUM-1 ... --> LOG-1.addMsg('Set req..') ... <-- LOG-1.addMsg(..) <-- SP-1.setRequestType(..) Method views based on top of call stack
  • 15. Semantic Trace Views Execution Trace (and Thread View) Active Object View for NUM-1.new --> LOG-1.addMsg('Handling..') set NUM-1._minCharRange = 32 ... set NUM-1._maxCharRange = 127 <-- LOG-1.addMsg(..) --> SP-1.setRequestType('text/html') --> STR-1.equals('text/html') <-- STR-1.equals(..) ret=true --> NUM-1.new(32, 127) Active Object View for LOG-1.addMsg set NUM-1._minCharRange = 32 set NUM-1._maxCharRange = 127 ... <-- NUM-1.new(..) ... set SP-1._binConv = NUM-1 ... --> LOG-1.addMsg('Set req..') ... <-- LOG-1.addMsg(..) <-- SP-1.setRequestType(..) Active object views based on top of call stack
  • 16. Semantic Trace Views Execution Trace (and Thread View) Target Object View for NUM-1 --> LOG-1.addMsg('Handling..') --> NUM-1.new(32, 127) ... set NUM-1._minCharRange = 32 <-- LOG-1.addMsg(..) set NUM-1._maxCharRange = 127 --> SP-1.setRequestType('text/html') <-- NUM-1.new(..) --> STR-1.equals('text/html') <-- STR-1.equals(..) ret=true --> NUM-1.new(32, 127) Target Object View for LOG-1 set NUM-1._minCharRange = 32 set NUM-1._maxCharRange = 127 --> LOG-1.addMsg('Handling..') <-- NUM-1.new(..) <-- LOG-1.addMsg(..) set SP-1._binConv = NUM-1 --> LOG-1.addMsg('Set req..') ... <-- LOG-1.addMsg(..) --> LOG-1.addMsg('Set req..') ... <-- LOG-1.addMsg(..) <-- SP-1.setRequestType(..) Target object views
  • 17. Semantic Trace Views Execution Trace (and Thread View) Target Object View for NUM-1 --> NUM-1.new(32, 127) --> LOG-1.addMsg('Handling..') set NUM-1._minCharRange = 32 ... set NUM-1._maxCharRange = 127 <-- LOG-1.addMsg(..) <-- NUM-1.new(..) --> SP-1.setRequestType('text/html') --> STR-1.equals('text/html') Method View for SP.setRequestType <-- STR-1.equals(..) ret=true --> STR-1.equals('text/html') --> NUM-1.new(32, 127) <-- STR-1.equals(..) ret=true set NUM-1._minCharRange = 32 --> NUM-1.new(32, 127) set NUM-1._maxCharRange = 127 <-- NUM-1.new(..) <-- NUM-1.new(..) set SP-1._binConv = NUM-1 set SP-1._binConv = NUM-1 ... --> LOG-1.addMsg('Set req..') ... <-- LOG-1.addMsg(..) --> LOG-1.addMsg('Set req..') ... Target Object View for LOG-1 <-- LOG-1.addMsg(..) --> LOG-1.addMsg('Handling..') <-- SP-1.setRequestType(..) <-- LOG-1.addMsg(..) --> LOG-1.addMsg('Set req..') <-- LOG-1.addMsg(..) Views are linked allowing for multilevel analysis
  • 18. Roadmap  Motivation  Prior Approaches  Semantics-Aware Trace Analysis (SATA)  Applying SATA to Regression Analysis  Evaluation  Conclusions
  • 19. What if we just used diff?  Collect dynamic traces: 2.4.1: sssdyntracer … xslt.Process -xsl case2.xsl -in test.xml 2.5.1: sssdyntracer … xslt.Process -xsl case2.xsl -in test.xml  Traces are about 48K entries
  • 20. What if we just used diff?  Collect dynamic traces: 2.4.1: sssdyntracer … xslt.Process -xsl case2.xsl -in test.xml 2.5.1: sssdyntracer … xslt.Process -xsl case2.xsl -in test.xml  Traces are about 48K entries  Run “diff” tool on traces:  Requires 25 minutes on a 1.8GHZ x64 CPU  Requires 27 GB of RAM  Produces 1594 differences (3.3% of trace)
  • 21. Challenges of diff / LCS Old: New:  diff based on LCS algorithm:  Intractable on large traces: Ω(n2)  Can‟t detect moved sequences  Is not semantic-aware  diff produces too many differences
  • 22. Leveraging Semantic Views  Use secondary views (method/object) to find correlations in primary view (thread)  Robust against reorderings in other views  Correlations are semantically sound  Apply LCS/diff over fixed-sized windows in primary view to find „best overall correlation‟ in primary view
  • 23. Recall: What LCS would produce Old: New:
  • 24. View-based Semantic Differencing Main View Old: CBDHXYFEF Z New: CADFEFXYZ
  • 25. View-based Semantic Differencing Main View Old: CBDHXYFEF Z New: CADFEFXYZ Secondary View DHXYZ View construction (only one of many secondary views displayed here) DXYZ
  • 26. View-based Semantic Differencing Main View Old: CBDHXYFEF Z New: CADFEFXYZ Secondary View DHXYZ Lock-step scanning of main view DXYZ
  • 27. View-based Semantic Differencing Main View Old: CBDHXYFEF Z   New: CADFEFXYZ Secondary View DHXYZ Lock-step scanning of main view DXYZ
  • 28. View-based Semantic Differencing Main View Old: CBDHXYFEF Z   New: CADFEFXYZ Secondary View DHXYZ Discovery of correlating secondary views DXYZ
  • 29. View-based Semantic Differencing Main View Old: CBDHXYFEF Z   New: CADFEFXYZ Secondary View DHXYZ Exploration of correlating secondary views DXYZ
  • 30. View-based Semantic Differencing Main View Old: CBDHXYFEF Z   New: CADFEFXYZ Secondary View DHXYZ  Exploration of correlating secondary views DXYZ
  • 31. View-based Semantic Differencing Main View Old: CBDHXYFEF Z   New: CADFEFXYZ Secondary View DHXYZ  Exploration of correlating secondary views DXYZ
  • 32. View-based Semantic Differencing Main View Old: CBDHXYFEF Z   New: CADFEFXYZ Secondary View DHXYZ  Exploration of correlating secondary views DXYZ
  • 33. View-based Semantic Differencing Main View Old: CBDHXYFEF Z   New: CADFEFXYZ Secondary View DHXYZ  Exploration of correlating secondary views DXYZ
  • 34. View-based Semantic Differencing Main View Old: CBDHXYFEF Z   New: CADFEFXYZ Secondary View DHXYZ  Lock-step scanning of main view DXYZ
  • 35. View-based Semantic Differencing Main View Old: CBDHXYFEF Z   New: CADFEFXYZ Secondary View DHXYZ  Lock-step scanning of main view DXYZ
  • 36. View-based Semantic Differencing Main View Old: CBDHXYFEF Z     New: CADFEFXYZ Secondary View DHXYZ Lock-step scanning  of main view; exploration of secondary views DXYZ
  • 37. View-based Semantic Differencing Main View Old: CBDHXYFEF Z     New: CADFEFXYZ Secondary View DHXYZ Apply LCS over  fixed-size window in main view to find the next correlation DXYZ
  • 38. View-based Semantic Differencing Main View Old: CBDHXYFEF Z    New: CADFEFXYZ Secondary View DHXYZ Apply LCS over  fixed-size window in main view to find the next correlation DXYZ
  • 39. View-based Semantic Differencing Main View Old: CBDHXYFEF Z    New: CADFEFXYZ Secondary View DHXYZ  Lock-step scanning of main view DXYZ
  • 40. View-based Semantic Differencing Main View Old: CBDHXYFEF Z    New: CADFEFXYZ Secondary View DHXYZ  Lock-step scanning of main view DXYZ
  • 41. View-based Semantic Differencing Main View Old: CBDHXYFEF Z    New: CADFEFXYZ Secondary View DHXYZ  Lock-step scanning of main view DXYZ
  • 42. View-based Semantic Differencing Main View Old: CBDHXYFEF Z    New: CADFEFXYZ Secondary View DHXYZ Apply LCS over  fixed-size window in main view to find the next correlation DXYZ
  • 43. View-based Semantic Differencing Main View Old: CBDHXYFEF Z    New: CADFEFXYZ Secondary View DHXYZ  Lock-step scanning of main view DXYZ
  • 44. View-based Semantic Differencing Main View Old: CBDHXYFEF Z    New: CADFEFXYZ Secondary View DHXYZ View-based  differencing identified moved sequences properly DXYZ
  • 45. View-Based Differencing vs. LCS  Collect dynamic traces: 2.4.1: sssdyntracer … xslt.Process -xsl case2.xsl -in test.xml 2.5.1: sssdyntracer … xslt.Process -xsl case2.xsl -in test.xml  Traces are about 48K entries  Run view-based differencing tool on traces:  Requires 0.3 minutes instead of 25 minutes  Requires 0.1 GB instead of 27 GB of RAM  Produces 598 differences (1.2% of trace) ○ vs 1594 differences (3.3% of trace) for LCS
  • 46. Regression Analysis Process Old Program AspectJ Old Program w/ New Program w/ New Program Load-time Instrumentation Instrumentation Weaver Tracing Aspects Trace Trace Working Regressing Test Case(s) Likely Test Case RPrism Analysis (but similar) Regression Algorithm Causes View Trace Traces for 4 Differencing Cases
  • 47. RPrism Analysis Algorithm Suspected differences set: Old Program New Program Regressing Test Case VS Regressing Test Case Expected differences set: Old Program New Program Working Test Case VS Working Test Case Regression differences set: New Program New Program Working Test Case VS Regressing Test Case
  • 48. RPrism Analysis Algorithm Regression Results differences set Suspected Expected differences set differences set
  • 49. Roadmap  Motivation  Prior Approaches  Semantics-Aware Trace Analysis (SATA)  Applying SATA to Regression Analysis  Evaluation  Conclusions
  • 50. 4 Regressions on 3 Projects  Daikon  Dynamic invariant detector from MIT  Used as a test subject in 11 other publications  Apache XalanJ  Implements XML XPath and XSLT  Interprets XSLT or compiles XSLT to Java bytecode  Used in Sun JDK to implement javax.xml.* classes  Apache Derby (720 KLOC)  Embedded or client/server relational DB  AKA Sun Java DB, included in JDK 6
  • 51. Daikon Regression  About Daikon  169 KLOC, 1100 classes  Dynamic invariant detector from MIT  Used as a test subject in 11 other publications  About the Regression  Regression first studied by JUnit/CIA [FSE „06] ○ 1 week of differences  Execution traces about 15K entries in length
  • 52. Daikon Regression  42 differences before, 3 after analysis  Same accuracy as LCS  12.9x speedup  12.1 times less memory
  • 53. XalanJ-1725 Regression  About XalanJ  365 KLOC, 1500 classes  Implements XPath and XSLT for XML  Used by Sun to implement javax.xml.* classes  About the Regression  Regression from version 2.5.1 to 2.5.2 ○ 4 months of code changes, 84 major changes  Execution traces about 98K entries in length  Regressing behavior exhibited within dynamically generated code
  • 54. XalanJ-1725 Regression  296 differences before, 1 after analysis  LCS failed to find the regression cause  82.8x speedup  269 times less memory
  • 55. XalanJ-1802 Regression  About XalanJ  365 KLOC, 1500 classes  Implements XPath and XSLT for XML  Used by Sun to implement javax.xml.* classes  About the Regression  Regression from version 2.4.1 to 2.5.1 ○ 79K changed code over 12 months ○ 97 bugfixes and feature enhancements  Execution traces about 44K entries in length  Regressing behavior exhibited within a completely rearchitected module
  • 56. XalanJ-1802 Regression  184 differences before, 10 after analysis  Same accuracy as LCS  9.4x speedup  35.4 times less memory
  • 57. Derby-1633 Regression  About Derby  720K lines of code  Embedded or client/server relational DB  AKA Sun Java DB, included in JDK 6  About the Regression  Regression from version 10.1.2.1 to 10.1.3.1 ○ 7 months of changes, 9 enhancements, 97 bugfixes  Execution traces about 335K entries in length  Involves multiple threads, larger code base (2x), and longer running traces (3x)
  • 58. Derby-1633 Regression  2663 differences before, 6 after analysis  LCS completely failed (out of memory failure at 32 GB)
  • 59. Roadmap  Motivation  Prior Approaches  Semantics-Aware Trace Analysis (SATA)  Applying SATA to Regression Analysis  Evaluation  Conclusions
  • 60. Summary / Future Directions  New view-based model for traces  Facilitates semantics-aware dynamic analyses  One application is efficient trace differencing  Full formal framework in paper  Other potential applications:  Race detection  Object-protocol enforcement  Data-mining from traces  Malware detection
  • 61. Download RPrism, try it out! http://cs.purdue.edu/homes/kjhoffma/rprism/ Contact Information: Kevin Hoffman kjhoffma@cs.purdue.edu
  • 63. Regression Cause Analysis  Factors affecting false negatives:  Dynamic traces are complete, set A must contain cause  Differences in set B produced correct output, not likely to contain the direct regression cause  Intersecting with set C can introduce false negatives (e.g., regression caused by code removal)  Factors affecting false positives:  Choice of similar test case affects quality of set B  Intersecting/subtracting set C also helps Set A is the suspected differences set Set B is the expected differences set Set C is the regression differences set
  • 64.
  • 65.
  • 68. Exploration of Secondary Views with LCS
  • 69.
  • 70. Apply LCS over Fixed-size Window in Main View to Find the Next Correlation
  • 71. Exploration of Secondary Views with LCS
  • 72. Apply LCS over Fixed-size Window in Main View to Find the Next Correlation