Font Size: a A A

Research On Java Concurrency Bug Detection And Reproduction Techniques For Practice

Posted on:2017-11-23Degree:DoctorType:Dissertation
Country:ChinaCandidate:Z Y LinFull Text:PDF
GTID:1488305885453044Subject:Software engineering
Abstract/Summary:PDF Full Text Request
In modern programming practice,concurrent program is gaining more and more importance along with the development of computer CPU multi-core techniques.A recent research reports that 75% of 2,227 surveyed Java open source projects have directly or indirectly involved concurrency.However,the nondeterminacy and complexity of multithreaded execution introduce new bugs,such as data races,deadlocks and atomicity violations.Concurrent bugs are difficult to detect and reproduce,and can eventually damage software quality.Therefore,various approaches have been proposed to automatically detect and deterministically reproduce concurrent bugs,but they are not widely applied in the practice for two main reasons:1)The lack of real-world concurrent bug benchmark.Existing concurrent benchmarks are either unprofessional because they are not initially designed for detecting concurrent bugs,or not representative because the bugs are not realistic bugs but artificial bugs which cannot illustrate the complexity of real-world problems.Therefore,such benchmarks cannot evaluate researches' abilities of detecting bugs from real-world applications.2)The research scope is limited and does not fully cover practical scenarios.Modern programming has heavier dependencies on third party code.The interaction of third party code and programmer's own code(referred as first party code in this paper)may lead to bugs.But existing concurrent bug detection and reproduction researches still mainly focus on the first party code,and cannot handle the real-world bugs when third party code is involved.To address these issues,this paper proposes practical Java concurrent bug detection and reproduction techniques.This paper starts from establishing a real-world concurrent bug benchmark suite Ja Con Te Be which contains 47 concurrent bugs from 8 real-world open-source projects as a preliminary work for afterwards researches.By analyzing these bugs,this paper identifies latent lock problem and proposes a dynamic technique Lock Peeker to detect latent locks from API methods whose sources are inaccessible.Finally,this paper proposes a fine-grained bug reproduction technique SPDebugger to support reproducing more bugs from practical scenarios.The evaluation results show that(1)for the benchmark issue,Ja Con Te Be can effectively reveal the weakness and strength of existing Java concurrent bug detection techniques.(2)for the research scope issue,Lock Peeker extends the deadlock detection scope into close-sourced APIs and can detect 74.9% latent locks.Furthermore,Lock Peeker can integrate with existing deadlock detection tools to discover deadlocks that cannot be detected previously.SPDebugger extends reproducing scope to more realistic scenarios with slightly increasing of developer's efforts.
Keywords/Search Tags:Java concurrent program, concurrent bug benchmark suite, lock detection, concurrent bug reproduction
PDF Full Text Request
Related items