C:s flyktiga kvalificering är avsedd att ge en tillförlitlig koppling mellan operationer på källkodsnivå och operationer på minnessystemnivå. Vi testade tretton C-kompilatorer av produktionskvalitet och fann för var och en situationer där kompilatorn genererade felaktig kod för att komma åt flyktiga variabler. Detta resultat är oroande eftersom det innebär att inbyggda programvara och operativsystem-båda typiskt kodas i C, båda är baser för många uppdrag-kritiska och säkerhetskritiska applikationer, och både förlitar sig på korrekt översättning av flyktiga ämnen-kan vara felkompilerad. Vårt bidrag är inriktat på en ny teknik för att hitta flyktiga buggar och en ny teknik för att arbeta runt dem. För det första presenterar vi åtkomstsammanfattningstester: ett effektivt, praktiskt och automatiskt sätt att upptäcka kodgenereringsfel relaterade till den flyktiga kvalificeringen. Vi har hittat ett antal kompilator buggar genom att utföra åtkomstsammanfattning testning på slumpmässigt genererade C-program. Några av dessa fel har bekräftats och rättats av kompilatorutvecklare. För det andra presenterar och utvärderar vi en lösning för de kompilatorfel vi upptäckte. I 96% av de fall där ett av våra slumpmässigt genererade program är felkompilerat, kan vi få den felaktiga C-kompilatorn att producera korrekt beter kod genom att tillämpa en enkel källnivå transformation till testprogrammet.
Det anmärkningsvärda undantaget är Eides och Regehrs arbete REF om felkompilering av den flyktiga kvalificeringen i C-kompilatorer av produktionskvalitet.
Volatiles are miscompiled, and what to do about it
{'venue': "EMSOFT '08", 'journal': None, 'mag_field_of_study': ['Computer Science']}