Aspect-Oriented Race Detection in Java

Salvato in:
Dettagli Bibliografici
Pubblicato in:IEEE Transactions on Software Engineering vol. 36, no. 4 (Jul/Aug 2010), p. 509
Autore principale: Bodden, Eric
Altri autori: Havelund, Klaus
Pubblicazione:
IEEE Computer Society
Soggetti:
Accesso online:Citation/Abstract
Full Text - PDF
Tags: Aggiungi Tag
Nessun Tag, puoi essere il primo ad aggiungerne!!

MARC

LEADER 00000nab a2200000uu 4500
001 732187108
003 UK-CbPIL
022 |a 0098-5589 
022 |a 1939-3520 
024 7 |a 10.1109/TSE.2010.25  |2 doi 
035 |a 732187108 
045 2 |b d20100701  |b d20100831 
084 |a 17010  |2 nlm 
100 1 |a Bodden, Eric 
245 1 |a Aspect-Oriented Race Detection in Java 
260 |b IEEE Computer Society  |c Jul/Aug 2010 
513 |a Feature 
520 3 |a In the past, researchers have developed specialized programs to aid programmers in detecting concurrent programming errors such as deadlocks, livelocks, starvation, and data races. In this work, we propose a language extension to the aspect-oriented programming language AspectJ, in the form of three new pointcuts, lock(), unlock(), and maybeShared(). These pointcuts allow programmers to monitor program events where locks are granted or handed back, and where values are accessed that may be shared among multiple Java threads. We decide thread locality using a static thread-local-objects analysis developed by others. Using the three new primitive pointcuts, researchers can directly implement efficient monitoring algorithms to detect concurrent-programming errors online. As an example, we describe a new algorithm which we call Racer, an adaption of the well-known Eraser algorithm to the memory model of Java. We implemented the new pointcuts as an extension to the AspectBench Compiler, implemented the Racer algorithm using this language extension, and then applied the algorithm to the NASA K9 Rover Executive and two smaller programs. Our experiments demonstrate that our implementation is effective in finding subtle data races. In the Rover Executive, Racer finds 12 data races, with no false warnings. Only one of these races was previously known. 
653 |a Computer programming 
653 |a Analysis 
653 |a Java 
653 |a Research & development--R&D 
653 |a Studies 
653 |a Digital Object Identifier 
653 |a Programming languages 
653 |a Programmers 
653 |a Researchers 
653 |a Algorithms 
653 |a Software engineering 
700 1 |a Havelund, Klaus 
773 0 |t IEEE Transactions on Software Engineering  |g vol. 36, no. 4 (Jul/Aug 2010), p. 509 
786 0 |d ProQuest  |t ABI/INFORM Global 
856 4 1 |3 Citation/Abstract  |u https://www.proquest.com/docview/732187108/abstract/embedded/L8HZQI7Z43R0LA5T?source=fedsrch 
856 4 0 |3 Full Text - PDF  |u https://www.proquest.com/docview/732187108/fulltextPDF/embedded/L8HZQI7Z43R0LA5T?source=fedsrch