Ph.d.-forskning fra ITU finder masser af nye fejl i Linux

Illustration: Bigstock
En ny måde at finde fejl i koden til Linux-kernen har set dagens lys. Det er resultatet af ny forskning fra IT-Universitetet i København.

Ny forskning fra ITU kan reducere antallet af fejl i kildekode. Ved at bruge nye metoder kan den kommende ph.d. Iago Abal finde fejl i Linux-kernen, som andre værktøjer ikke kan finde.

Iago Abal, som er fra Portugal, kom til ITU i 2013 og begyndte en arkæologisk jagt på kodefejl. Han undersøgte fejl fra tidligere udgaver af Linux, som allerede var fundet og rettet. Ved at kigge nærmere på en fejl kunne han skabe en forsimplet udgave af fejlen, et lille program, som kun indeholdt de dele, der havde med fejlen at gøre.

Det gør det nemmere at skabe nye teknikker til fejlfinding. Algoritmer til søgning efter fejl kan på denne måde,­ mens de er under udvikling, undgå den kompleksitet, som ligger i at kigge på hele Linux-kodebasen. De simplificerede kodefejl kan også bruges til at bedømme virkningsgraden af andre værktøjer til aflusning af kode. Andre forskningsprojekter benytter også databasen med forsimplede fejl.

I 2014 havde Iago Abal skabt 42 af disse forsimplede fejl fra Linux. I dag indeholder databasen næsten hundrede simplificerede fejl fra fire forskellige systemer.

Resumeer gør kål på eksponetielt problem

En bestemt kategori af kodelus har at gøre med fejlagtig håndtering af resurser, såsom låsning af resurser, åbning af filer og allokering af hukommelse.

Disse fejl er tit fordelt over flere funktioner, og det gør det svært at finde dem, da man på grund af problemets natur kan ende med en eksponentiel stigning i den kode, algoritmen skal kigge på. Det tager alt for lang tid til at være praktisk anvendeligt, så Iago Abal måtte finde på noget bedre.

Hans løsning af det problem består i først at kigge på en funktion og skabe et resumé af, hvilke effekter funktionen giver. Dernæst kan dette resumé kigges efter for fejlagtig håndtering af resurser, og når andre funktioner kaldes, tjekkes deres resuméer for tilsvarende fejl. På den måde kan en uheldig sekvens af operationer på resurserne findes på en måde, der praktisk kan lade sig gøre.

I en test på 26 kendte fejl i Linux kunne algoritmen finde 22 af fejlene, mens tilsvarende værktøjer kun kunne finde 12-14 stykker. Indtil videre er der fundet 13 nye og hidtil ukendte kodefejl i Linux-kernen.

Linux Foundation, som støtter udviklingen af styresystemet, vil lægge resurser i videreudviklingen af Iago Abals idéer, men han har travlt for tiden, så det bliver først om et års tid.

Iago Abal forsvarer sin ph.d. på ITU, i dag fredag kl. 13 i auditorium 1.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (18)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Finn Glamhøj

Hold! nu! kæft! Det hedder debugging og bugs.

Der er vel ingen grundt til, at sige til folk at de ikke skal ytre sig bare fordi de udtrykker sig anderledes end du selv vil gøre.

Er det i øvrigt dansk retsskrivning du henviser til når du skriver, at det hedder debugging og bugs?

Personligt fortrækker jeg at kalde det fejlretning og fejl omend jeg godt kan finde på at bruge udtrykket debugging, men jeg bruger sjældent udtrykket bugs.

Mine præferencer skyldes måske, at jeg er så gammel, at jeg f.eks. mener det hedder sammenhæng og ikke kontekst :-) men jeg vil da aldrig sige til andre at de ikke skal ytre sig bare fordi de ikke er enig.

Peter Hansen

Lærte i intet af jeres idioti med jeres insisteren på "tavle-PC" for nogle år siden?


Hvis der er noget, der er idiotisk, er det da netop at ville bruge det samme ord om to forskellige ting ("tablet", for dem, der skulle være i tvivl).

Personligt fortrækker jeg at kalde det fejlretning og fejl omend jeg godt kan finde på at bruge udtrykket debugging, men jeg bruger sjældent udtrykket bugs.


Jeg foretrækker at bruge fejlsøgning i stedet for debugging, mens fejlretning er, når jeg implementerer ændringer som følge af fejlsøgningen.

Finn Glamhøj

Jeg foretrækker at bruge fejlsøgning i stedet for debugging, mens fejlretning er, når jeg implementerer ændringer som følge af fejlsøgningen.

På engelsk dækker ordet debugging over både det at finde og rette fejl, så når jeg bruger ordet fejlretning om debugging så dækker det implicit over, at jeg skal finde fejlen først, inden jeg kan rette den :-)

Uanset om man udtrykker sig på den ene eller anden måde er jeg sikker på, at folk med bare den mindste smule forstand på programmering godt ved hvad der menes og det er vel det der er det væsentlige?

Per Hansen

Hold! nu! kæft! Det hedder debugging og bugs. Lad være med absolut at ville finde på danske versioner.


Det lyder som om du har ret store problemer med både det danske og det engelske sprog, Dennis. At bruge engelske udtryk på dansk for noget, som fint kan udtrykkes med helt danske ord, betyder ganske enkelt, at man ikke har så godt styr på hverken engelsk eller dansk. Havde man det, ville man umiddelbart bruge det danske ord i stedet for det engelske. Fx ville du nok aldrig sige "jeg er lige kommet home og vil gå ud i gardenen og enjoye det gode weather"; ikke engang hvis du lige havde skiftet fra at tale engelsk. For de danske ord sidder fuldstændig klar til at blive brugt, og så bruger du dem. Det er fordi du kender ordene godt.

Anderledes forholder det sig med de lidt sjældnere ord, og det er her, det viser sig, hvor god man er til både fremmedsproget og sit eget sprog.

Du oplever fx at debugging har noget med at finde fejl at gøre. Men det betyder altså bare aflusning, og det har det altid gjort. Begrebet aflusning er så på engelsk også blevet brugt om det at finde fejl i programmer, og det er så muligvis den eneste betydning af det ord, du kender – netop fordi du ikke har så godt styr på sprogene og især de sjældnere brugte ord i begge sprog.

Fair nok, vi kan ikke alle være lige gode til det hele. Det er helt i orden. Derfor er jeg normalt også overbærende over for dem, der har svært ved at finde de danske ord, når de taler. Det er både forstyrrende og forvirrende, når de gør det (jf. den tidligere "jeg er lige kommet home og vil gå ud i gardenen og enjoye det gode weather") og jeg smiler lidt i mit stille sind over det, men vi må jo være tolerante. Lige som vi også er det over for børn, der kæmper med at lære sproget.

Men hvorfor bliver du så vred, når andre tydeligvis mestrer både engelsk og dansk bedre end du? Er der mon tale om en form for sprogmisundelse?

Thomas Jensen

"aflusning", "kodelus"

Hold! nu! kæft! Det hedder debugging og bugs. Lad være med absolut at ville finde på danske versioner.

Er forklaringen ikke nærmere, at artiklens tekst på et tidspunkt har været gennem google translate eller noget tilsvarende under udarbejdelsen?

Ordene, "kodelus" og "aflusning", er gamle danske datalogiske ord, som opstod mange år inden, der var noget, som hed "Google Translate" (måske i 1980'erne eller tidligere?). Men dette er åbenbart ikke kendt af nytilkommere inden for feltet (også betegnet "noobs" :-p).

At visse danske datalogiske ord som disse ikke bruges så ofte i daglig tale længere betyder efter min mening ikke, at (i øvrigt glimrende og velskrevne) artikler som denne ikke kan gøre brug af dem med godt og sjovt resultat.

PS. Vi er stadig nogle, som siger håndrotte i stedet for "mouse".

Hans J. Nielsen

" Men dette er åbenbart ikke kendt af nytilkommere inden for feltet (også betegnet "noobs" :-p). "

Og så igen. En nytilkommer kaldes en newb. En der endnu ikke har lært spillets regler, men er villig til at blive bedre.
En noob er en der ikke ønsker at lære eller ikke har evnen dertil.

Esben Nielsen

hvis man sammenligner overskrift med indhold i artiklen, står der, at der er fundet 13 nye fejl.

Er det så rigtige fejl eller falske positive? Eller "måske-fejl", som man ved grundig analyse godt kan se, ikke har nogen effekt i den virkelige verden?

Log ind eller Opret konto for at kommentere
Brugerundersøgelse Version2
maximize minimize