Static Analysis for Data-race detection in Java

Detalhes bibliográficos
Autor(a) principal: Ferreira, Jorge Lopes
Data de Publicação: 2024
Tipo de documento: Dissertação
Idioma: eng
Título da fonte: Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
Texto Completo: http://hdl.handle.net/10362/176239
Resumo: Over a decade ago the architectural paradigm shifted from single-core to multi-core/multi- threaded CPUs. Since then programming in parallel became crucial for developing effi- cient and faster programs. With concurrent programming came the challenge of writing programs free of data races. There are mechanisms to control the concurrency by means of synchronizing the threads, but using them does not always guarantee a correct pro- gram. To overcome this issue, in this thesis we investigate and present how we can use static program analysis to detect data races in Java classes without any extra input from the programmer. We used static analysis in Java to perform points-to analysis to find the accesses that cause data races. We benchmarked our tool with some open source code examples and compared the results of our solution with an existing tool for static analysis. We found that, while our tool still needs more refinement and optimization, it can already detect most, if not all of the data races in Java classes.
id RCAP_43f0d844a2e707c4580f1238154602df
oai_identifier_str oai:run.unl.pt:10362/176239
network_acronym_str RCAP
network_name_str Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
repository_id_str https://opendoar.ac.uk/repository/7160
spelling Static Analysis for Data-race detection in Javaprogram analysispoints-to analysisstatic analysisdata raceDomínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e InformáticaOver a decade ago the architectural paradigm shifted from single-core to multi-core/multi- threaded CPUs. Since then programming in parallel became crucial for developing effi- cient and faster programs. With concurrent programming came the challenge of writing programs free of data races. There are mechanisms to control the concurrency by means of synchronizing the threads, but using them does not always guarantee a correct pro- gram. To overcome this issue, in this thesis we investigate and present how we can use static program analysis to detect data races in Java classes without any extra input from the programmer. We used static analysis in Java to perform points-to analysis to find the accesses that cause data races. We benchmarked our tool with some open source code examples and compared the results of our solution with an existing tool for static analysis. We found that, while our tool still needs more refinement and optimization, it can already detect most, if not all of the data races in Java classes.Há mais de uma década, o paradigma arquitetural mudou de CPUs single-core para CPUs multi-core/multi-threaded. Desde então programar em paralelo tornou-se crucial para desenvolver programas mais rápidos e eficientes. Com a programação concorrente veio o desafio de escrever programas livres de data races. Existem mecanismos que efetuam controlo de concorrência ao sincronizarem as threads, mas usá-los por si só não garante um programa correto. Para resolver este problema, neste trabalho investigamos e apresentamos como po- demos usar análise estática de programas para detetar data races em classes Java sem qualquer informação extra dada pelo do utilizador. Fizemos testes à nossa ferramenta usando exemplos de código de fonte aberta e com- parámos os resultados da nossa solução com os de uma ferramenta de análise estática já existente. Descobrimos que, apesar de a nossa ferramenta ainda precisar de ser aperfeiço- ada e otimizada, esta já consegue detetar a maioria, senão todas as data races em classes Java.Paulino, HervéRavara, AntónioRUNFerreira, Jorge Lopes2024-12-05T14:37:36Z2024-062024-06-01T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttp://hdl.handle.net/10362/176239enginfo:eu-repo/semantics/openAccessreponame:Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)instname:FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologiainstacron:RCAAP2024-12-09T01:37:14Zoai:run.unl.pt:10362/176239Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireinfo@rcaap.ptopendoar:https://opendoar.ac.uk/repository/71602025-05-28T19:17:53.535398Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) - FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologiafalse
dc.title.none.fl_str_mv Static Analysis for Data-race detection in Java
title Static Analysis for Data-race detection in Java
spellingShingle Static Analysis for Data-race detection in Java
Ferreira, Jorge Lopes
program analysis
points-to analysis
static analysis
data race
Domínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
title_short Static Analysis for Data-race detection in Java
title_full Static Analysis for Data-race detection in Java
title_fullStr Static Analysis for Data-race detection in Java
title_full_unstemmed Static Analysis for Data-race detection in Java
title_sort Static Analysis for Data-race detection in Java
author Ferreira, Jorge Lopes
author_facet Ferreira, Jorge Lopes
author_role author
dc.contributor.none.fl_str_mv Paulino, Hervé
Ravara, António
RUN
dc.contributor.author.fl_str_mv Ferreira, Jorge Lopes
dc.subject.por.fl_str_mv program analysis
points-to analysis
static analysis
data race
Domínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
topic program analysis
points-to analysis
static analysis
data race
Domínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
description Over a decade ago the architectural paradigm shifted from single-core to multi-core/multi- threaded CPUs. Since then programming in parallel became crucial for developing effi- cient and faster programs. With concurrent programming came the challenge of writing programs free of data races. There are mechanisms to control the concurrency by means of synchronizing the threads, but using them does not always guarantee a correct pro- gram. To overcome this issue, in this thesis we investigate and present how we can use static program analysis to detect data races in Java classes without any extra input from the programmer. We used static analysis in Java to perform points-to analysis to find the accesses that cause data races. We benchmarked our tool with some open source code examples and compared the results of our solution with an existing tool for static analysis. We found that, while our tool still needs more refinement and optimization, it can already detect most, if not all of the data races in Java classes.
publishDate 2024
dc.date.none.fl_str_mv 2024-12-05T14:37:36Z
2024-06
2024-06-01T00:00:00Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/10362/176239
url http://hdl.handle.net/10362/176239
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.source.none.fl_str_mv reponame:Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
instname:FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
instacron:RCAAP
instname_str FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
instacron_str RCAAP
institution RCAAP
reponame_str Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
collection Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
repository.name.fl_str_mv Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) - FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
repository.mail.fl_str_mv info@rcaap.pt
_version_ 1833597999763161088