Sep 09, 2014: Jorne Kandziora: Runtime assertion checking of multithreaded Java programs

September 09, 2014Runtime assertion checking of multithreaded Java programs
Room: Zi 2042Jorne Kandziora

It is important that software is correct, and there are many different techniques to guarantee the correctness of a program. One such technique is runtime assertion checking: a technique that evaluates properties of a program during execution. This particular technique scales well, and can therefore be used to check the behaviour of large pieces of software. Many runtime assertion checkers are only built for sequential programs and do not guarantee correct behaviour if they are used in a multithreaded environment. We will show that runtime assertion checkers in a multithreaded environment can sometimes report errors that do not exist in the program or fail to detect problems that exist, both of which is problematic. To solve this problem, we build an extension to the STROBE framework. STROBE is built to accelerate runtime assertion checking with the use of asynchronous assertions: checks that are executed in parallel to the program itself. This framework performs this checking correctly with the use of snapshots, that efficiently save the previous states of a program. We extend the STROBE framework into the e-STROBE framework, that uses these snapshots in a multithreaded program, to protect the program from unwanted interference during runtime assertion checking. We apply the snapshots in the e-STROBE framework to OpenJML, to show that existing runtime assertion checkers can be modified to work correctly in a multithreaded environment. We will give several examples to show that our solution works, and gives the expected results inboth single-threaded and multithreaded programs.