Learning Centre

Coping with Concurrency: Data race detection and thread safety for Java

 |  Login

Show simple item record

dc.contributor Aalto-yliopisto fi
dc.contributor Aalto University en
dc.contributor.advisor Heljanko, Keijo
dc.contributor.author Ruusu, Henna
dc.date.accessioned 2020-12-23T12:39:36Z
dc.date.available 2020-12-23T12:39:36Z
dc.date.issued 2010
dc.identifier.uri https://aaltodoc.aalto.fi/handle/123456789/98380
dc.description.abstract Concurrency in software entails many problems. One of the crucial problems of concurrent programming is to cope with situations when more than one thread tries to access shared data fields. If not properly handled, these situations can result in data races. They, in turn, can lead to serious bugs. Data races are often hard to find as concurrency makes it difficult to cover the program behaviour by conventional testing. This study discusses Java multithreading and data race detection for multithreaded Java programs. It offers some background information on these issues for LIME2 project (LightweIght formal Methods for distributed component-based Embedded systems) that extends a tool set developed in the earlier LIME project to work with multithreaded programs. The Java memory model forms a basis for Java multithreading. Thesis discusses its history, the formal specification and its impact on programming. Small changes are made to LIME interface monitoring tool to make it thread-safe. The tool is tested with a few simple multithreaded programs. State-of-art in race detection for Java programs is reviewed and RACER, a promising data race detection tool, is evaluated. Several issues were found that reduce its applicability in the LIME context. It does not in its current version support Java annotations used in the LIME interface specifications. RACER also finds false positives because it requires variable initialisations to happen when holding an appropriate lock, which is not usually needed. The Thesis concludes with discussion on suitable data race detection methodology for LIME2. Data race detection should be applied before running the LIME monitoring tool with a multithreaded program so that the LIME can assume the program is racefree. en
dc.description.abstract Rinnakkaisuus tuo ohjelmointiin monia haasteita. Eräs keskeinen ongelma ovat tilanteet, joissa useampi kuin yksi säie pyrkii yhtä aikaa käyttämään jaettua muuttujaa. Jos tällaisia tilanteita ei käsitellä asianmukaisesti, ne johtavat ns. kilpatilanteisiin, jotka puolestaan voivat aiheuttaa vakavia virhetilanteita. Kilpatilanteiden havaitseminen on usein vaikeaa, koska perinteiset testausmenetelmät eivät kata kaikkia mahdollisia rinnakkaisuutta sisältävän ohjelman käyttäytymisiä. Tämä diplomityö käsittelee monisäikeisiä Java ohjelmia ja kilpatilanteiden havaitsemista niistä. Työ tarjoaa taustatietoa LIME2-projektille (LightweIght formal Methods for distributed component-based Embedded systems), joka laajentaa aiemmassa LIME-projektissa kehitettyjä työkaluja monisäikeisten ohjelmien käsittelyyn. Javan muistimalli määrittelee perustan monisäikeisten Java-ohjelmien toiminnalle. Työ esittelee muistimallin historiaa, formaaleja määrittelyjä sekä mallin merkitystä ohjelmoinnille. LIME-rajapintaseurantatyökaluun toteutettiin pieniä muutoksia, jotta se toimisi turvallisesti myös monisäikeisten Java-ohjelmien seurannassa. Työkalua on testattu muutamalla useampisäikeisellä ohjelmalla. Tutkielma esittelee kilpatilanteiden havaitsemisen menetelmiä ja arvioi lupaavalta vaikuttavaa työkalua nimeltä RACER. Testeissä kuitenkin ilmeni useita seikkoja, jotka heikentävät sen soveltuvuutta käytettäväksi LIME:n yhteydessä. RACER ei nykyisellään tue Javan uusimpien versioiden sallimia lisämerkintöjä, joiden avulla LIME-rajapintamäärittelyt on toteutettu. RACER myös löytää olemattomia kilpatilanteita, koska se vaatii, että myös muuttujien alustuksen on tapahduttava käyttäen lukitusta, mikä ei yleensä ole tarpeen. Kilpatilanteet on syytä etsiä ennen LIME-työkalujen käyttämistä, jotta LIME:n ei tarvitse ottaa huomioon Javan muistimallin kilpatilanteita sisältäville ohjelmille sallimia käyttäytymisiä. fi
dc.format.extent vii + 55
dc.language.iso en en
dc.title Coping with Concurrency: Data race detection and thread safety for Java en
dc.title Rinnakkaisuuden haasteet; Kilpatilanteiden havaitseminen ja monisäikeisten Java-ohjelmien turvallisuus fi
dc.contributor.school Perustieteiden korkeakoulu fi
dc.contributor.school School of Science en
dc.contributor.department Informaatio- ja luonnontieteiden tiedekunta fi
dc.subject.keyword data race en
dc.subject.keyword rinnakkaisuus fi
dc.subject.keyword race detection en
dc.subject.keyword Java fi
dc.subject.keyword Java en
dc.subject.keyword kilpatilanne fi
dc.subject.keyword multithreading en
dc.subject.keyword muistimalli fi
dc.identifier.urn URN:NBN:fi:aalto-2020122357207
dc.programme.major Tietojenkäsittelyteoria fi
dc.programme.mcode T-79 fi
dc.type.ontasot Master's thesis en
dc.type.ontasot Pro gradu -tutkielma fi
dc.contributor.supervisor Heljanko, Keijo
local.aalto.openaccess no
local.aalto.digifolder Aalto_00735
dc.rights.accesslevel closedAccess
local.aalto.idinssi 40353
dc.type.publication masterThesis
dc.type.okm G2 Pro gradu, diplomityö
local.aalto.digiauth ask


Files in this item

Files Size Format View

There are no open access files associated with this item.

This item appears in the following Collection(s)

Show simple item record

Search archive


Advanced Search

article-iconSubmit a publication

Browse

Statistics