Now available: Clara, a novel framework for implementing hybrid typestate analyses

Eric | September 10, 2009

ClaraIn my doctoral dissertation (click here for a draft), I present Clara (Compile-time Approximation of Runtime Analyses), a novel research framework for the implementation of hybrid typestate analyses. Clara is now online – fully documented – at: http://www.bodden.de/clara/

Typestate properties aid program understanding, and one can even define type systems that prevent programmers from causing typestate errors, or derive static typestate analyses that try to determine whether a given program violates typestate properties. Unfortunately, the typestate-analysis problem is generally undecidable. Researchers have therefore proposed a hybrid approach that uses
static-analysis results to generate a residual runtime monitor. This monitor captures actual property violations as they occur, but only updates its internal state at relevant statements, as determined through static analysis.

Read the rest of this entry »

Comments
Comments Off on Now available: Clara, a novel framework for implementing hybrid typestate analyses
Categories
Research
Tags
Clara, Runtime Monitoring, Runtime verification, Static Analysis, Thesis, tracematches, Typestate

Collaborative Runtime Verification with Tracematches

Eric | November 29, 2008

imageAfter only a little more than one and a half years, we were now able to publish the (extended) journal version of our RV07 paper on Collaborative Runtime Verification with Tracematches. What’s it about? The idea is simple: Assume you are doing runtime verification, but the nature of the property you want to monitor requires you to instrument some really hot loops in your code. In result, your instrumented program runs very slow. So why not split up the instrumentation load? Multiple users get different “probes” of instrumentation. Instrumentation can even be enabled only temporarily in order to reduce the imageoverall runtime overhead. In this paper we showed that this approach works  and most importantly scales (see graphic to the right). Plus, we avoid any false positive (false warnings), due to a special pointer analysis of the verification property, even if the instrumentation is partially disabled and therefore certain events may be missed. The journal paper is very similar to the workshop paper but it’s self-contained. free download here

Comments
Comments Off on Collaborative Runtime Verification with Tracematches
Categories
Research
Tags
collaborative, LinkedIn, Runtime verification, tracematches

New publication: Object representatives: a uniform abstraction for pointer information

Eric | August 5, 2008

And yes, we have yet another publication. This one has been accepted at BCS 2008. The conference promises to be an interesting event, as the British Computer Society managed to line up seven Turing Award winners to give keynote talks. Laurie Hendren, my supervisor, will be an invited speaker. Very unfortunately, I don’t think that I will be able to attend. So in case you go there, good for you and please try to speak with Patrick Lam instead, who will presenting the paper.

Anyway, so what are Object Representatives all about? Object Representatives are a sometimes very useful, uniform static abstraction of runtime objects that we came up with when evaluating tracematches ahead-of-time. At compile time, an Object Representative (OR) is just a plain old Java object that implements the interface below.

Read the rest of this entry »

Comments
Comments Off on New publication: Object representatives: a uniform abstraction for pointer information
Categories
Research
Tags
Java, Object representatives, Soot, tracematches

New publication: Finding Programming Errors Earlier by Evaluating Runtime Monitors Ahead-of-Time

Eric | July 31, 2008

image I am happy to announce the final version of our new FSE paper (joint work with Patrick Lam and my supervisor Laurie Hendren). You can grab the paper here. The idea of the paper is that runtime monitoring is nice because it manages to show you only actual errors, but nevertheless one should make a best effort to evaluate a runtime monitor ahead-of-time, i.e. at compile-time, as well as possible, so that programmers can find errors in the programs earlier in the development process.

Read the rest of this entry »

Comments
Comments Off on New publication: Finding Programming Errors Earlier by Evaluating Runtime Monitors Ahead-of-Time
Categories
Research
Tags
Bug finding, Object representatives, Runtime Monitoring, Runtime verification, Static Analysis, tracematches

A monitoring solution to the data races in the JDK

Eric | June 16, 2008

A few days ago I blogged about a few really subtle data races that can easily be triggered in the JDK, when invoking methods like containsAll on synchronized (!) collections. In the following code you can get a race on sl2 because sl1.containsAll(sl2) synchronizes on sl1 only, not on the argument sl2!

List sl1 = Collections.synchronizedList(new ArrayList());
List sl2 = Collections.synchronizedList(new ArrayList());
sl1.containsAll(sl2);


Here are now two easy aspect-oriented solutions to this problem, first in form of a tracematch, then in form of a normal AspectJ aspect. You can download the tracematch here and the plain AspectJ aspect here.

Read the rest of this entry »

Comments
Comments Off on A monitoring solution to the data races in the JDK
Categories
Research
Tags
AspectJ, Bug finding, Data races, tracematches