Publication:
VYRD: verifying concurrent programs by runtime refinement-violation detection

dc.contributor.coauthorQadeer, Shaz
dc.contributor.departmentN/A
dc.contributor.departmentDepartment of Computer Engineering
dc.contributor.kuauthorElmas, Tayfun
dc.contributor.kuauthorTaşıran, Serdar
dc.contributor.kuprofilePhD Student
dc.contributor.kuprofileFaculty Member
dc.contributor.otherDepartment of Computer Engineering
dc.contributor.schoolcollegeinstituteGraduate School of Sciences and Engineering
dc.contributor.schoolcollegeinstituteCollege of Engineering
dc.contributor.yokidN/A
dc.contributor.yokidN/A
dc.date.accessioned2024-11-09T23:22:02Z
dc.date.issued2005
dc.description.abstractWe present a runtime technique for checking that a concurrently-accessed data structure implementation, such as a file system or the storage management module of a database, conforms to an executable specification that contains an atomic method per data structure operation. The specification can be provided separately or a non-concurrent, "atomized" interpretation of the implementation can serve as the specification. The technique consists of two phases. In the first phase, the implementation is instrumented in order to record information into a log during execution. In the second, a separate verification thread uses the logged information to drive an instance of the specification and to check whether the logged execution conforms to it. We paid special attention to the general applicability and scalability of the techniques and to minimizing their concurrency and performance impact. The result is a lightweight verification method that provides a significant improvement over testing for concurrent programs. We formalize conformance to a specification using the notion of refinement: Each trace of the implementation must be equivalent to some trace of the specification. Among the novel features of our work are two variations on the definition of refinement appropriate for runtime checking: I/O and "view" refinement. These definitions were motivated by our experience with two industrial-scale concurrent data structure implementations: the Boxwood project, a B-link tree data structure built on a novel storage infrastructure [10] and the Scan file system [9]. I/O and view refinement checking were implemented as a verification tool named VYRD (VerifYing concurrent programs by Runtime Refinement-violation Detection). VYRD was applied to the verification of Boxwood, Java class libraries, and, previously, to the Scan filesystem. It was able to detect previously unnoticed subtle concurrency bugs in Boxwood and the Scan file system, and the known bugs in the Java class libraries and manually constructed examples. Experimental results indicate that our techniques have modest computational cost.
dc.description.indexedbyWoS
dc.description.indexedbyScopus
dc.description.issue6
dc.description.openaccessNO
dc.description.publisherscopeInternational
dc.description.volume40
dc.identifier.doi10.1145/1064978.1065015
dc.identifier.eissn1558-1160
dc.identifier.issn0362-1340
dc.identifier.quartileQ4
dc.identifier.scopus2-s2.0-33745261575
dc.identifier.urihttp://dx.doi.org/10.1145/1064978.1065015
dc.identifier.urihttps://hdl.handle.net/20.500.14288/10986
dc.identifier.wos230634200004
dc.keywordsRuntime verification
dc.keywordsRefinement
dc.keywordsConcurrent data structures
dc.languageEnglish
dc.publisherAssociation for Computing Machinery (ACM)
dc.sourceAcm Sigplan Notices
dc.subjectComputer science
dc.subjectSoftware engineering
dc.titleVYRD: verifying concurrent programs by runtime refinement-violation detection
dc.typeConference proceeding
dspace.entity.typePublication
local.contributor.authoridN/A
local.contributor.authoridN/A
local.contributor.kuauthorElmas, Tayfun
local.contributor.kuauthorTaşıran, Serdar
relation.isOrgUnitOfPublication89352e43-bf09-4ef4-82f6-6f9d0174ebae
relation.isOrgUnitOfPublication.latestForDiscovery89352e43-bf09-4ef4-82f6-6f9d0174ebae

Files