Dynamic Analysis for Finding Endianity Bugs
Dynamická analýza pro hledání chyb endianity
diplomová práce (OBHÁJENO)
Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/99063Identifikátory
SIS: 198555
Katalog UK: 990021915200106986
Kolekce
- Kvalifikační práce [11982]
Autor
Vedoucí práce
Oponent práce
Yaghob, Jakub
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Softwarové systémy
Katedra / ústav / klinika
Katedra distribuovaných a spolehlivých systémů
Datum obhajoby
12. 6. 2018
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Angličtina
Známka
Výborně
Klíčová slova (česky)
dynamická analýza, endianita, Valgrind, data-flow analýzaKlíčová slova (anglicky)
dynamic analysis, endianess, Valgrind, data-flow analysisKdyž spolu komunikují dva počítačové systémy, například přes síť, musí se shodnout na pořádí bytů v číslech. Tomuto pořadí se říká endianita. Často pak musí jeden ze systémů prohodit pořadí bytů na předem dohodnutý standard. Výsledky této práce pomohou programátorům najít místa v jejich programech, kde na toto přehození pořadí zapomněli. Vyvinuli jsme dynamickou data-flow analýzu postavenou na populárním nástroji Valgrind. V porovnání se statcikou analýzou v současnosti používanou vývojáři Linuxového jádra náš přístup nevyžaduje označení proměnných jejich endianitou. Typicky je nutné označit jen několik míst ve zdrojovém kódu. Analýza je také schopná detekovat potenciální chyby, které by se projevily pouze pokud by program byl spuštěn na počítačích s opačnou endianitou. Náš přístup jsme ověřili na existujicím programu, o kterém se vědělo, že obsahuje zatím neopravné chyby související s endianitou (RadeonSI OpenGL driver). Identifikoval všechny chyby související s endianitou a poskytl užitečné diagnostické zprávy s označením původu chyby.
When two computer systems communicate, for example over a network, they must agree on the ordering of bytes within numbers. This ordering is called endianess. Often one of the systems has to swap the order of bytes to the agreed standard. Results of this work help programmers to find places in their program where they forgot to swap the bytes. We have developed a dynamic data-flow analysis built upon the popular Valgrind tool. Compared to the static analysis currently used by the Linux kernel developers, our approach does not require annotation of variables with their endianess. Typically only few places in the program source code will need to be annotated. The analysis can also detect potential bugs that would only manifest if the program was run on computer with opposite endianess. Our approach has been validated on an existing program known to contain yet unfixed endianess problems (RadeonSI OpenGL driver). It has identified all endianess-related bugs and provided useful diagnostic messages together with their location.
