August 29, 2014MSc Presentation: Runtime assertion checking of multithreaded Java programs
Room: Carre 2MJorne 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, andcan 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 existin 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 isbuilt 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 ina multithreaded program, to protect the program from unwanted interference during runtimeassertion 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.