Font Size: a A A

Detecting Bugs Of Concurrent Programs With Program Invariants

Posted on:2018-05-06Degree:MasterType:Thesis
Country:ChinaCandidate:R WangFull Text:PDF
GTID:2348330512479797Subject:Software engineering
Abstract/Summary:PDF Full Text Request
With the extensive application of concurrency software system,the concurrency bugs caused by the complex interaction of multithreadings is ubiquitous.So it is important to develop an effective technique to detect concurrency bugs.For multithread programs,the concurrency bugs occur in the rare-happened specific interaction among threads.And the concurrency bugs usually spread rapidly in the whole program through the perplexing interleavings of threads,so it is difficult to effectively detect concurrency bugs which could consume a lot of manpower and time.At present,existing techniques mainly focus on detecting data race bugs with pattern analysis that pinpoint skeptical data-access patterns among threads.However,these techniques have following drawbacks:(1)the number of interleaving patterns could be huge,(2)it only focuses on the patterns of individual variables,and(3)an oracle is needed which is not available in the operational phase.This paper proposes a program invariant based technique to detect a class of concurrent program bugs.By unit testing of some components of a concurrent program,we obtain a set of program invariants as reference invariants,which can be used as an oracle to get failure invariants when the program is in integrated testing.By building the function call graph of the component and applying reduction technique invariants,we compute the candidates of suspicious functions and rank them.From interactions among components,we can analyze the cause of concurrency bugs.To verify the effectiveness of the technology,we select 6 concurrent programs from the open source library for experiments.The experimental results have shown that our proposed technique is effective in concurrency bug detection.The concurrency bugs we detect are atomicity violations,deadlock and so on.The contributions of the method proposed in this paper are mainly: 1)The method does not require oracles;2)the method can use program invariant to detect various types of concurrency bugs in the operational phase,such as violation of atomicity violations and deadlocks;3)the method can detect the suspicious code blocks among the threads that are very close to the original place where the concurrency bug is triggered.
Keywords/Search Tags:Concurrent program, Bug detection, Program invariants, Function call graph, Suspicious Rate
PDF Full Text Request
Related items