Design
GrammaTech Announces Static Analysis for Multi-core and Multi-threaded Applications
GrammaTech, Inc., a leading manufacturer of source-code analysis tools, today announced that it has developed a sophisticated new program-analysis engine that identifies data race conditions and other serious concurrency defects. The engine is being incorporated into the company’s popular CodeSonar static-analysis tool.
DeveThe severity of the problem caught the attention of the Defense Advanced Research Projects Agency (DARPA), which awarded a $749k contract to GrammaTech to develop an innovative approach to eliminating serious defects that commonly plague multi-core applications. The resulting analysis pinpoints such problems without testing, slashing development cost, and reducing the risk of defects slipping into production. The analysis can also be applied to multi-threaded applications running on a single processor.
Paul Anderson, GrammaTech’s vice president of Engineering, commented, “The analysis has already proven itself in pilot deployments. For example, it identified serious defects in a mission-critical avionics application being developed by an aerospace company. This is very significant because avionics applications are developed with much more care and testing than most other applications. Yet GrammaTech’s deep concurrency analysis uncovered significant problems in the application.”
Anderson continued, “The analysis catches the type of concurrency problems that are the most difficult for developers. It creates an abstract model, of what locks are held by what threads, and considers possible interleavings. By automating this process, it finds situations in which code is susceptible to problematic interleavings, which developers can miss through manual analysis.”
The technology is compatible with a wide range of compilers, including ARM RealView, CodeWarrior, GCC, G++, Green Hills, HI-TECH, IAR, Intel C/C++, Microsoft Visual Studio, Renesas, Sun C/C++, Texas Instruments, CodeComposer, Wind River, and many others. For some run-time environments, it may be necessary to model synchronization primitives, but the system has been designed to make this easy.