QVM: The Quality Virtual Machine - overview
Although today's managed languages have eliminated or minimized many
low-level software errors (such as core dumps due to memory
corruption) there are many other sources of errors that still persist.
Test environments are not adequate to simulate the real scenarios in
which applications will eventually run. Debugging live, deployed
software is still a significant problem.
The Quality Virtual Machine (QVM) is a system that uses the technology and infrastructure available in a virtual machine to improve software quality. QVM provides a framework for easily building dynamic analyses into the VM, continuing the general trend of using additional hardware resources at runtime to help find and/or eliminate bugs.
The virtual machine execution model presents an excellent mechanism for implementing dynamic analyses for at least two reasons:
- The deployment process becomes trivial because the analyses become as ubiquitous as the VM. There is no need to ``install'' the analysis (recompile the program source to add instrumentation, etc). The analysis can be run by simply enabling a command line flag on the VM, if the are not already performed by default.
- Having a dynamic analysis tightly integrated in a virtual machine has performance advantages. Having access to the dynamic optimizer (JIT) ensures that the critical code paths are well optimized. Moreover, being inside the VM provides access to VM runtime services that cannot be accessed at the language level, such as verifying heap properties during garbage collection.
If you are interested in an internship in this area, please contact us by e-mail.