Software errors and complexity: an empirical investigation0
Communications of the ACM
Fault Injection for Dependability Validation: A Methodology and Some Applications
IEEE Transactions on Software Engineering
An empirical study of the reliability of UNIX utilities
Communications of the ACM
On the self-similar nature of Ethernet traffic
SIGCOMM '93 Conference proceedings on Communications architectures, protocols and applications
FERRARI: A Flexible Software-Based Fault and Error Injection System
IEEE Transactions on Computers - Special issue on fault-tolerant computing
Randomized algorithms
The impact of architectural trends on operating system performance
SOSP '95 Proceedings of the fifteenth ACM symposium on Operating systems principles
The measured performance of personal computer operating systems
ACM Transactions on Computer Systems (TOCS) - Special issue on operating system principles
Studies of Windows NT performance using dynamic execution traces
OSDI '96 Proceedings of the second USENIX symposium on Operating systems design and implementation
Quantitative Analysis of Faults and Failures in a Complex Software System
IEEE Transactions on Software Engineering
Detecting Races in Relay Ladder Logic Programs
TACAS '98 Proceedings of the 4th International Conference on Tools and Algorithms for Construction and Analysis of Systems
Networked Windows NT System Field Failure Data Analysis
PRDC '99 Proceedings of the 1999 Pacific Rim International Symposium on Dependable Computing
Comparing Operating Systems Using Robustness Benchmarks
SRDS '97 Proceedings of the 16th Symposium on Reliable Distributed Systems
Checking system rules using system-specific, programmer-written compiler extensions
OSDI'00 Proceedings of the 4th conference on Symposium on Operating System Design & Implementation - Volume 4
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Using redundancies to find errors
Proceedings of the 10th ACM SIGSOFT symposium on Foundations of software engineering
Using redundancies to find errors
ACM SIGSOFT Software Engineering Notes
Back to the future: a retroactive study of aspect evolution in operating system code
Proceedings of the 2nd international conference on Aspect-oriented software development
ATEC '02 Proceedings of the General Track of the annual conference on USENIX Annual Technical Conference
Temporal-Safety Proofs for Systems Code
CAV '02 Proceedings of the 14th International Conference on Computer Aided Verification
Scale and performance in the Denali isolation kernel
ACM SIGOPS Operating Systems Review - OSDI '02: Proceedings of the 5th symposium on Operating systems design and implementation
A case for virtual channel processors
NICELI '03 Proceedings of the ACM SIGCOMM workshop on Network-I/O convergence: experience, lessons, implications
Terra: a virtual machine-based platform for trusted computing
SOSP '03 Proceedings of the nineteenth ACM symposium on Operating systems principles
Improving the reliability of commodity operating systems
SOSP '03 Proceedings of the nineteenth ACM symposium on Operating systems principles
Improving availability with recursive microreboots: a soft-state system case study
Performance Evaluation - Dependable systems and networks-performance and dependability symposium (DSN-PDS) 2002: Selected papers
NDL: a domain-specific language for device drivers
Proceedings of the 2004 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems
Correlation exploitation in error ranking
Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of software engineering
AccMon: Automatically Detecting Memory-Related Bugs via Program Counter-Based Invariants
Proceedings of the 37th annual IEEE/ACM International Symposium on Microarchitecture
Improving the reliability of commodity operating systems
ACM Transactions on Computer Systems (TOCS)
Is Finding Security Holes a Good Idea?
IEEE Security and Privacy
ACM SIGPLAN Notices
Scale and performance in the Denali isolation kernel
OSDI '02 Proceedings of the 5th symposium on Operating systems design and implementationCopyright restrictions prevent ACM from being able to make the PDFs for this conference available for downloading
Helping users avoid bugs in GUI applications
Proceedings of the 27th international conference on Software engineering
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Advanced non-distributed operating systems course
ACM SIGCSE Bulletin
HAIL: a language for easy and correct device access
Proceedings of the 5th ACM international conference on Embedded software
Proceedings of the twentieth ACM symposium on Operating systems principles
Dynamic Switching between One-to-Many Download Methods in "All-IP" Cellular Networks
IEEE Transactions on Mobile Computing
Are virtual-machine monitors microkernels done right?
ACM SIGOPS Operating Systems Review
CP-Miner: Finding Copy-Paste and Related Bugs in Large-Scale Software Code
IEEE Transactions on Software Engineering
Denali: a scalable isolation kernel
EW 10 Proceedings of the 10th workshop on ACM SIGOPS European workshop
Brittle systems will break - not bend: can aspect-oriented programming help?
EW 10 Proceedings of the 10th workshop on ACM SIGOPS European workshop
Nooks: an architecture for reliable device drivers
EW 10 Proceedings of the 10th workshop on ACM SIGOPS European workshop
Execution time limitation of interrupt handlers in a Java operating system
EW 10 Proceedings of the 10th workshop on ACM SIGOPS European workshop
A sledgehammer approach to reuse of legacy device drivers
Proceedings of the 11th workshop on ACM SIGOPS European workshop
Empirical relation between coupling and attackability in software systems:: a case study on DOS
Proceedings of the 2006 workshop on Programming languages and analysis for security
Condate: a proto-language at the confluence between checking and compiling
Proceedings of the 8th ACM SIGPLAN international conference on Principles and practice of declarative programming
MINIX 3: a highly reliable, self-repairing operating system
ACM SIGOPS Operating Systems Review
Limiting trust in the storage stack
Proceedings of the second ACM workshop on Storage security and survivability
Have things changed now?: an empirical study of bug characteristics in modern open source software
Proceedings of the 1st workshop on Architectural and system support for improving software dependability
ACM Transactions on Computer Systems (TOCS)
Semantic patches for documenting and automating collateral evolutions in Linux device drivers
Proceedings of the 3rd workshop on Programming languages and operating systems: linguistic support for modern operating systems
Solving the starting problem: device drivers as self-describing artifacts
Proceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006
Understanding collateral evolution in Linux device drivers
Proceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006
Thorough static analysis of device drivers
Proceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006
SmPL: A Domain-Specific Language for Specifying Collateral Evolutions in Linux Device Drivers
Electronic Notes in Theoretical Computer Science (ENTCS)
Fine-grain analysis of common coupling and its application to a Linux case study
Journal of Systems and Software
Debugging operating systems with time-traveling virtual machines
ATEC '05 Proceedings of the annual conference on USENIX Annual Technical Conference
DECKARD: Scalable and Accurate Tree-Based Detection of Code Clones
ICSE '07 Proceedings of the 29th international conference on Software Engineering
HOTOS'03 Proceedings of the 9th conference on Hot Topics in Operating Systems - Volume 9
OSDI'04 Proceedings of the 6th conference on Symposium on Opearting Systems Design & Implementation - Volume 6
Unmodified device driver reuse and improved system dependability via virtual machines
OSDI'04 Proceedings of the 6th conference on Symposium on Opearting Systems Design & Implementation - Volume 6
CP-Miner: a tool for finding copy-paste and related bugs in operating system code
OSDI'04 Proceedings of the 6th conference on Symposium on Opearting Systems Design & Implementation - Volume 6
MCI-java: a modified java virtual machine approach to multiple code inheritance
VM'04 Proceedings of the 3rd conference on Virtual Machine Research And Technology Symposium - Volume 3
Predicting Eclipse Bug Lifetimes
MSR '07 Proceedings of the Fourth International Workshop on Mining Software Repositories
Complexity Measures for Secure Service-Oriented Software Architectures
PROMISE '07 Proceedings of the Third International Workshop on Predictor Models in Software Engineering
Sealing OS processes to improve dependability and safety
Proceedings of the 2nd ACM SIGOPS/EuroSys European Conference on Computer Systems 2007
Towards trustworthy computing systems: taking microkernels to the next level
ACM SIGOPS Operating Systems Review
Verification of device drivers and intelligent controllers: a case study
EMSOFT '07 Proceedings of the 7th ACM & IEEE international conference on Embedded software
Implementing reliable Linux device drivers in ATS
PLPV '07 Proceedings of the 2007 workshop on Programming languages meets program verification
TxLinux: using and managing hardware transactional memory in an operating system
Proceedings of twenty-first ACM SIGOPS symposium on Operating systems principles
Improving file system reliability with I/O shepherding
Proceedings of twenty-first ACM SIGOPS symposium on Operating systems principles
SafeDrive: safe and recoverable extensions using language-based techniques
OSDI '06 Proceedings of the 7th symposium on Operating systems design and implementation
Improving dependability by revisiting operating system design
HotDep'07 Proceedings of the 3rd workshop on on Hot Topics in System Dependability
Reliable device drivers require well-defined protocols
HotDep'07 Proceedings of the 3rd workshop on on Hot Topics in System Dependability
The design and implementation of microdrivers
Proceedings of the 13th international conference on Architectural support for programming languages and operating systems
Learning from mistakes: a comprehensive study on real world concurrency bug characteristics
Proceedings of the 13th international conference on Architectural support for programming languages and operating systems
Information Assurance: Dependability and Security in Networked Systems
Information Assurance: Dependability and Security in Networked Systems
Improving modularity by refactoring code clones: a feasibility study on Linux
ACM SIGSOFT Software Engineering Notes
Microdrivers: a new architecture for device drivers
HOTOS'07 Proceedings of the 11th USENIX workshop on Hot topics in operating systems
Exploring recovery from operating system lockups
ATC'07 2007 USENIX Annual Technical Conference on Proceedings of the USENIX Annual Technical Conference
Journal of Computer Security - The Third IEEE International Symposium on Security in Networks and Distributed Systems
Formalising device driver interfaces
Proceedings of the 4th workshop on Programming languages and operating systems
TxLinux and MetaTM: transactional memory and the operating system
Communications of the ACM - Enterprise information integration: and other tools for merging data
Flexible Hardware Acceleration for Instruction-Grain Program Monitoring
ISCA '08 Proceedings of the 35th Annual International Symposium on Computer Architecture
ACM Transactions on Software Engineering and Methodology (TOSEM)
Safe device driver model based on kernel-mode JVM
VTDC '07 Proceedings of the 2nd international workshop on Virtualization technology in distributed computing
Scalable Shape Analysis for Systems Code
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
Self-stabilizing device drivers
ACM Transactions on Autonomous and Adaptive Systems (TAAS)
Empirical evaluation of clone detection using syntax suffix trees
Empirical Software Engineering
Achieving 10 Gb/s using safe and transparent network interface virtualization
Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments
BitVisor: a thin hypervisor for enforcing i/o device security
Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments
Proceedings of the 4th ACM European conference on Computer systems
Taming subsystems: capabilities as universal resource access control in L4
Proceedings of the Second Workshop on Isolation and Integration in Embedded Systems
Building a self-healing embedded system in a multi-OS environment
Proceedings of the 2009 ACM symposium on Applied Computing
Listening to programmers Taxonomies and characteristics of comments in operating system code
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Bunker: a privacy-oriented platform for network tracing
NSDI'09 Proceedings of the 6th USENIX symposium on Networked systems design and implementation
Linux bugs: Life cycle, resolution and architectural analysis
Information and Software Technology
Fine-grained I/O access control of the mobile devices based on the Xen architecture
Proceedings of the 15th annual international conference on Mobile computing and networking
Fast byte-granularity software fault isolation
Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles
Cooperative update: a new model for dependable live update
Proceedings of the 2nd International Workshop on Hot Topics in Software Upgrades
Clone detection and elimination for Haskell
Proceedings of the 2010 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Capability wrangling made easy: debugging on a microkernel with valgrind
Proceedings of the 6th ACM SIGPLAN/SIGOPS international conference on Virtual execution environments
Tracking code patterns over multiple software versions with Herodotos
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
The Linux kernel as a case study in software evolution
Journal of Systems and Software
WYSINWYX: What you see is not what you eXecute
ACM Transactions on Programming Languages and Systems (TOPLAS)
Otherworld: giving applications a chance to survive OS kernel crashes
Proceedings of the 5th European conference on Computer systems
FMICS'06/PDMC'06 Proceedings of the 11th international workshop, FMICS 2006 and 5th international workshop, PDMC conference on Formal methods: Applications and technology
Self-stabilizing device drivers
SSS'06 Proceedings of the 8th international conference on Stabilization, safety, and security of distributed systems
Z-ranking: using statistical analysis to counter the impact of static analysis approximations
SAS'03 Proceedings of the 10th international conference on Static analysis
Toward property-driven abstraction for heap manipulating programs
ATVA'07 Proceedings of the 5th international conference on Automated technology for verification and analysis
Communications of the ACM
Execution path profiling for OS device drivers: viability and methodology
ISAS'08 Proceedings of the 5th international conference on Service availability
Analyzing stripped device-driver executables
TACAS'08/ETAPS'08 Proceedings of the Theory and practice of software, 14th international conference on Tools and algorithms for the construction and analysis of systems
Proceedings of the 4th International Workshop on Software Clones
Towards understanding bugs in open source router software
ACM SIGCOMM Computer Communication Review
Profiling the operational behavior of OS device drivers
Empirical Software Engineering
Fine-grained I/O access control based on Xen virtualization for 3G/4G mobile devices
Proceedings of the 47th Design Automation Conference
Membrane: Operating system support for restartable file systems
ACM Transactions on Storage (TOS)
The case for active device drivers
Proceedings of the first ACM asia-pacific workshop on Workshop on systems
Network I/O fairness in virtual machines
Proceedings of the second ACM SIGCOMM workshop on Virtualized infrastructure systems and architectures
Impact of plugins on the security of web applications
Proceedings of the 6th International Workshop on Security Measurements and Metrics
End-to-end data integrity for file systems: a ZFS case study
FAST'10 Proceedings of the 8th USENIX conference on File and storage technologies
Membrane: operating system support for restartable file systems
FAST'10 Proceedings of the 8th USENIX conference on File and storage technologies
Reverse-engineering drivers for safety and portability
HotDep'08 Proceedings of the Fourth conference on Hot topics in system dependability
"Otherworld": giving applications a chance to survive OS kernel crashes
HotDep'08 Proceedings of the Fourth conference on Hot topics in system dependability
CuriOS: improving reliability through operating system structure
OSDI'08 Proceedings of the 8th USENIX conference on Operating systems design and implementation
Device driver safety through a reference validation mechanism
OSDI'08 Proceedings of the 8th USENIX conference on Operating systems design and implementation
Tolerating file-system mistakes with EnvyFS
USENIX'09 Proceedings of the 2009 conference on USENIX Annual technical conference
Linux kernel developer responses to static analysis bug reports
USENIX'09 Proceedings of the 2009 conference on USENIX Annual technical conference
An automated approach for finding variable-constant pairing bugs
Proceedings of the IEEE/ACM international conference on Automated software engineering
The road to trustworthy systems
Proceedings of the fifth ACM workshop on Scalable trusted computing
Using hypervisors to secure commodity operating systems
Proceedings of the fifth ACM workshop on Scalable trusted computing
Scalable and systematic detection of buggy inconsistencies in source code
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Proceedings of the 26th Annual Computer Security Applications Conference
HotDep'10 Proceedings of the Sixth international conference on Hot topics in system dependability
Improved device driver reliability through verification reuse
HotDep'10 Proceedings of the Sixth international conference on Hot topics in system dependability
A design for comprehensive kernel instrumentation
HotDep'10 Proceedings of the Sixth international conference on Hot topics in system dependability
Ad hoc synchronization considered harmful
OSDI'10 Proceedings of the 9th USENIX conference on Operating systems design and implementation
SPIN'10 Proceedings of the 17th international SPIN conference on Model checking software
Correctness proofs for device drivers in embedded systems
SSV'10 Proceedings of the 5th international conference on Systems software verification
ICISS'10 Proceedings of the 6th international conference on Information systems security
Improved device driver reliability through hardware verification reuse
Proceedings of the sixteenth international conference on Architectural support for programming languages and operating systems
Faults in linux: ten years later
Proceedings of the sixteenth international conference on Architectural support for programming languages and operating systems
Message filters for hardening the Linux kernel
Software—Practice & Experience
Making the common case the only case with anticipatory memory allocation
FAST'11 Proceedings of the 9th USENIX conference on File and stroage technologies
The impact of fault models on software robustness evaluations
Proceedings of the 33rd International Conference on Software Engineering
Policy-centric protection of OS kernel from vulnerable loadable kernel modules
ISPEC'11 Proceedings of the 7th international conference on Information security practice and experience
DriverGuard: a fine-grained protection on I/O flows
ESORICS'11 Proceedings of the 16th European conference on Research in computer security
A case study on state-based robustness testing of an operating system for the avionic domain
SAFECOMP'11 Proceedings of the 30th international conference on Computer safety, reliability, and security
An empirical study on configuration errors in commercial and open source systems
SOSP '11 Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles
A Hardware Abstraction Layer in Java
ACM Transactions on Embedded Computing Systems (TECS)
Towards reliable storage systems
Towards reliable storage systems
Making the common case the only case with anticipatory memory allocation
ACM Transactions on Storage (TOS)
Reorganizing UNIX for reliability
ACSAC'06 Proceedings of the 11th Asia-Pacific conference on Advances in Computer Systems Architecture
Automatic generation of hardware/software interface with product-specific debugging tools
EUC'06 Proceedings of the 2006 international conference on Embedded and Ubiquitous Computing
Exception handling in the choices operating system
Advanced Topics in Exception Handling Techniques
A method for analyzing code homology in genealogy of evolving software
FASE'10 Proceedings of the 13th international conference on Fundamental Approaches to Software Engineering
Understanding modern device drivers
ASPLOS XVII Proceedings of the seventeenth international conference on Architectural Support for Programming Languages and Operating Systems
Comprehensive kernel instrumentation via dynamic binary translation
ASPLOS XVII Proceedings of the seventeenth international conference on Architectural Support for Programming Languages and Operating Systems
On enhancing the robustness of commercial operating systems
ISAS'04 Proceedings of the First international conference on Service Availability
Using virtualization to protect application address space inside untrusted environment
Programming and Computing Software
Understanding linux feature distribution
Proceedings of the 2012 workshop on Modularity in Systems Software
Evaluation of the device driver availability in dawning4000a
GPC'06 Proceedings of the First international conference on Advances in Grid and Pervasive Computing
Delusional boot: securing hypervisors without massive re-engineering
Proceedings of the 7th ACM european conference on Computer Systems
Establishing linux driver verification process
PSI'09 Proceedings of the 7th international Andrei Ershov Memorial conference on Perspectives of Systems Informatics
Design and overhead estimation of device driver process
ICCSA'10 Proceedings of the 2010 international conference on Computational Science and Its Applications - Volume Part II
Understanding and detecting real-world performance bugs
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
Sound formal verification of linux's USB BP keyboard driver
NFM'12 Proceedings of the 4th international conference on NASA Formal Methods
VM aware journaling: improving journaling file system performance in virtualization environments
Software—Practice & Experience
Formalization of computer input and output: the Hadley model
Digital Investigation: The International Journal of Digital Forensics & Incident Response
CBCD: cloned buggy code detector
Proceedings of the 34th International Conference on Software Engineering
Towards an open framework for c verification tools benchmarking
PSI'11 Proceedings of the 8th international conference on Perspectives of System Informatics
HotPar'12 Proceedings of the 4th USENIX conference on Hot Topics in Parallelism
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
Diagnosys: automatic generation of a debugging interface to the Linux kernel
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
A robust approach for variability extraction from the Linux build system
Proceedings of the 16th International Software Product Line Conference - Volume 1
Using linux device drivers for static verification tools benchmarking
Programming and Computing Software
Is Linux kernel oops useful or not?
HotDep'12 Proceedings of the Eighth USENIX conference on Hot Topics in System Dependability
Automatic OS kernel TCB reduction by leveraging compile-time configurability
HotDep'12 Proceedings of the Eighth USENIX conference on Hot Topics in System Dependability
Error propagation monitoring on windows mobile-based devices
LADC'07 Proceedings of the Third Latin-American conference on Dependable Computing
Verifying systems rules using rule-directed symbolic execution
Proceedings of the eighteenth international conference on Architectural support for programming languages and operating systems
Fine-grained fault tolerance using device checkpoints
Proceedings of the eighteenth international conference on Architectural support for programming languages and operating systems
A characteristic study on failures of production distributed data-parallel programs
Proceedings of the 2013 International Conference on Software Engineering
Discovering, reporting, and fixing performance bugs
Proceedings of the 10th Working Conference on Mining Software Repositories
DriverGuard: Virtualization-Based Fine-Grained Protection on I/O Flows
ACM Transactions on Information and System Security (TISSEC)
Efficient synthesis for concurrency by semantics-preserving transformations
CAV'13 Proceedings of the 25th international conference on Computer Aided Verification
I/o paravirtualization at the device file boundary
Proceedings of the 19th international conference on Architectural support for programming languages and operating systems
Guardrail: a high fidelity approach to protecting hardware devices from buggy drivers
Proceedings of the 19th international conference on Architectural support for programming languages and operating systems
A Study of Linux File System Evolution
ACM Transactions on Storage (TOS)
A study of Linux file system evolution
FAST'13 Proceedings of the 11th USENIX conference on File and Storage Technologies
ViewBox: integrating local file systems with cloud storage services
FAST'14 Proceedings of the 12th USENIX conference on File and Storage Technologies
Hi-index | 0.02 |
We present a study of operating system errors found by automatic, static, compiler analysis applied to the Linux and OpenBSD kernels. Our approach differs from previous studies that consider errors found by manual inspection of logs, testing, and surveys because static analysis is applied uniformly to the entire kernel source, though our approach necessarily considers a less comprehensive variety of errors than previous studies. In addition, automation allows us to track errors over multiple versions of the kernel source to estimate how long errors remain in the system before they are fixed.We found that device drivers have error rates up to three to seven times higher than the rest of the kernel. We found that the largest quartile of functions have error rates two to six times higher than the smallest quartile. We found that the newest quartile of files have error rates up to twice that of the oldest quartile, which provides evidence that code "hardens" over time. Finally, we found that bugs remain in the Linux kernel an average of 1.8 years before being fixed.