Abstract —Operating systems utgör en grund för robust applikationsprogramvara, vilket gör det viktigt att förstå hur effektiva de är vid hantering av exceptionella förhållanden. Testsystemet Ballista användes för att karakterisera hanteringen av exceptionella indataparametervärden för upp till 233 POSIX-funktioner och systemanrop på var och en av 15 allmänt använda operativsystem (OS) implementationer. Detta identifierade sätt att krascha system med ett enda samtal, sätt att orsaka uppgiften hänger inom OS-kod, sätt att orsaka onormal aktivitet avslutande inom OS och bibliotekskod, misslyckanden att genomföra definierade POSIX-funktionalitet, och misslyckanden att rapportera misslyckade operationer. Totalt endast 55 procent till 76 procent av de exceptionella tester som utförts genererade felkoder, beroende på vilket operativsystem som testas. Cirka 6 till 19 procent av tester misslyckades med att generera någon indikation på fel trots exceptionella ingångar. Cirka 1 till 3 procent av testerna avslöjade misslyckanden med att implementera definierad POSIX-funktionalitet för ovanliga, men specificerade, situationer. Mellan 18 procent och 33 procent av exceptionella tester orsakade onormal avslutning av ett OS-system samtal eller bibliotek funktion, och fem system var helt kraschade av enskilda system samtal med exceptionella parametervärden. De vanligaste källorna till dessa robusthet misslyckanden var olagliga pekarvärden, numeriska överlopp, och slut-of-fil överskridanden. Det finns betydande möjligheter att förbättra undantagshanteringen inom OS-samtal och särskilt inom C-bibliotekets funktioner. Men, rollen av signaler vs. fel returkoder är både kontroversiell och källan till divergerande genomförande filosofier, vilket utgör ett potentiellt hinder för att skriva bärbara, robusta applikationer.
Ett annat liknande arbete, Ballista REF, identifierade sätt att krascha operativsystem med en enda funktion samtal vid Runtime-OS gräns.
The Exception Handling Effectiveness of POSIX Operating Systems
{'venue': 'IEEE Trans. Software Eng.', 'journal': None, 'mag_field_of_study': ['Computer Science']}