Graph-Based Algorithms for Boolean Function Manipulation
IEEE Transactions on Computers
Computer-aided verification of coordinating processes: the automata-theoretic approach
Computer-aided verification of coordinating processes: the automata-theoretic approach
A static analyzer for finding dynamic programming errors
Software—Practice & Experience
Unification-based pointer analysis with directional assignments
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
ACM Transactions on Information and System Security (TISSEC)
Enforcing high-level protocols in low-level software
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Automatic predicate abstraction of C programs
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Bebop: a path-sensitive interprocedural dataflow engine
PASTE '01 Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Automatically validating temporal safety properties of interfaces
SPIN '01 Proceedings of the 8th international SPIN workshop on Model checking of software
An empirical study of operating systems errors
SOSP '01 Proceedings of the eighteenth ACM symposium on Operating systems principles
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
CCured: type-safe retrofitting of legacy code
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ESP: path-sensitive program verification in polynomial time
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
A system and language for building system-specific, static analyses
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
From symptom to cause: localizing errors in counterexample traces
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Bebop: A Symbolic Model Checker for Boolean Programs
Proceedings of the 7th International SPIN Workshop on SPIN Model Checking and Software Verification
Relative Completeness of Abstraction Refinement for Software Model Checking
TACAS '02 Proceedings of the 8th International Conference on Tools and Algorithms for the Construction and Analysis of Systems
An Extended Static Checker for Modular-3
CC '98 Proceedings of the 7th International Conference on Compiler Construction
Counterexample-Guided Abstraction Refinement
CAV '00 Proceedings of the 12th International Conference on Computer Aided Verification
Boolean and Cartesian Abstraction for Model Checking C Programs
TACAS 2001 Proceedings of the 7th International Conference on Tools and Algorithms for the Construction and Analysis of Systems
Modular verification of software components in C
Proceedings of the 25th International Conference on Software Engineering
Improving the reliability of commodity operating systems
SOSP '03 Proceedings of the nineteenth ACM symposium on Operating systems principles
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
KISS: keep it simple and sequential
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
Predicate Abstraction of ANSI-C Programs Using SAT
Formal Methods in System Design
Termination proofs for systems code
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
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
IEEE Software
Using stålmarck’s algorithm to prove inequalities
ICFEM'05 Proceedings of the 7th international conference on Formal Methods and Software Engineering
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
Predicate abstraction via symbolic decision procedures
CAV'05 Proceedings of the 17th international conference on Computer Aided Verification
Model checking x86 executables with codesurfer/x86 and WPDS++
CAV'05 Proceedings of the 17th international conference on Computer Aided Verification
Cogent: accurate theorem proving for program verification
CAV'05 Proceedings of the 17th international conference on Computer Aided Verification
Linear ranking with reachability
CAV'05 Proceedings of the 17th international conference on Computer Aided Verification
Symbolic model checking for asynchronous boolean programs
SPIN'05 Proceedings of the 12th international conference on Model Checking Software
Abstraction refinement for termination
SAS'05 Proceedings of the 12th international conference on Static Analysis
Termination proofs for systems code
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Proving that programs eventually do something good
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Intelligent Systems and Formal Methods in Software Engineering
IEEE Intelligent Systems
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
Understanding collateral evolution in Linux device drivers
Proceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Global Software Engineering: The Future of Socio-technical Coordination
FOSE '07 2007 Future of Software Engineering
Using web application construction frameworks to protect against code injection attacks
Proceedings of the 2007 workshop on Programming languages and analysis for security
Interrupt Verification via Thread Verification
Electronic Notes in Theoretical Computer Science (ENTCS)
Discrete control for safe execution of IT automation workflows
Proceedings of the 2nd ACM SIGOPS/EuroSys European Conference on Computer Systems 2007
Sealing OS processes to improve dependability and safety
Proceedings of the 2nd ACM SIGOPS/EuroSys European Conference on Computer Systems 2007
Under-constrained execution: making automatic code destruction easy and scalable
Proceedings of the 2007 international symposium on Software testing and analysis
Verification of device drivers and intelligent controllers: a case study
EMSOFT '07 Proceedings of the 7th ACM & IEEE international conference on Embedded software
Model checking concurrent linux device drivers
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Reliable device drivers require well-defined protocols
HotDep'07 Proceedings of the 3rd workshop on on Hot Topics in System Dependability
Hang analysis: fighting responsiveness bugs
Proceedings of the 3rd ACM SIGOPS/EuroSys European Conference on Computer Systems 2008
Documenting and automating collateral evolutions in linux device drivers
Proceedings of the 3rd ACM SIGOPS/EuroSys European Conference on Computer Systems 2008
Towards easing the diagnosis of bugs in OS code
Proceedings of the 4th workshop on Programming languages and operating systems
Checking the hardware-software interface in spec#
Proceedings of the 4th workshop on Programming languages and operating systems
Formalising device driver interfaces
Proceedings of the 4th workshop on Programming languages and operating systems
Splitting the Control Flow with Boolean Flags
SAS '08 Proceedings of the 15th international symposium on Static Analysis
Scalable Shape Analysis for Systems Code
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
Formal Verification of a Flash Memory Device Driver --- An Experience Report
SPIN '08 Proceedings of the 15th international workshop on Model Checking Software
Self-stabilizing device drivers
ACM Transactions on Autonomous and Adaptive Systems (TAAS)
Security benchmarking using partial verification
HOTSEC'08 Proceedings of the 3rd conference on Hot topics in security
Enforcing the use of API functions in linux code
Proceedings of the 8th workshop on Aspects, components, and patterns for infrastructure software
Isolation points: Creating performance-robust enterprise systems
ACM Transactions on Autonomous and Adaptive Systems (TAAS)
Proceedings of the 4th ACM European conference on Computer systems
Logic-Based Program Synthesis and Transformation
Specification Mining with Few False Positives
TACAS '09 Proceedings of the 15th International Conference on Tools and Algorithms for the Construction and Analysis of Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009,
Enhanced Property Specification and Verification in BLAST
FASE '09 Proceedings of the 12th International Conference on Fundamental Approaches to Software Engineering: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
MDE for Device Driver Development
IWANN '09 Proceedings of the 10th International Work-Conference on Artificial Neural Networks: Part II: Distributed Computing, Artificial Intelligence, Bioinformatics, Soft Computing, and Ambient Assisted Living
Symbolic Counter Abstraction for Concurrent Software
CAV '09 Proceedings of the 21st International Conference on Computer Aided Verification
ACM Computing Surveys (CSUR)
Integration of verification methods for program systems
Programming and Computing Software
Tolerating hardware device failures in software
Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles
Automatic device driver synthesis with termite
Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles
Debugging in the (very) large: ten years of implementation and experience
Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles
Validating Real Time Specifications using Real Time Event Queue Modeling
ASE '08 Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering
Reducing False Positives by Combining Abstract Interpretation and Bounded Model Checking
ASE '08 Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering
Configuration Lifting: Verification meets Software Configuration
ASE '08 Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering
Augmenting Counterexample-Guided Abstraction Refinement with Proof Templates
ASE '08 Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering
PtYasm: Software Model Checking with Proof Templates
ASE '08 Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering
UnitCheck: Unit Testing and Model Checking Combined
ATVA '09 Proceedings of the 7th International Symposium on Automated Technology for Verification and Analysis
On Teaching Formal Methods: Behavior Models and Code Analysis
TFM '09 Proceedings of the 2nd International Conference on Teaching Formal Methods
Verification, Testing and Statistics
FM '09 Proceedings of the 2nd World Congress on Formal Methods
Tracking code patterns over multiple software versions with Herodotos
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
WYSINWYX: What you see is not what you eXecute
ACM Transactions on Programming Languages and Systems (TOPLAS)
Reverse engineering of binary device drivers with RevNIC
Proceedings of the 5th European conference on Computer systems
A short survey of automated reasoning
AB'07 Proceedings of the 2nd international conference on Algebraic biology
Leaping loops in the presence of abstraction
CAV'07 Proceedings of the 19th international conference on Computer aided verification
Integrated static analysis for Linux device driver verification
IFM'07 Proceedings of the 6th international conference on Integrated formal methods
Improved memory-access analysis for x86 executables
CC'08/ETAPS'08 Proceedings of the Joint European Conferences on Theory and Practice of Software 17th international conference on Compiler construction
On the utility of formal methods in the development and certification of software
TPHOLs'07 Proceedings of the 20th international conference on Theorem proving in higher order logics
Proof pearl: the termination analysis of terminator
TPHOLs'07 Proceedings of the 20th international conference on Theorem proving in higher order logics
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
RWset: attacking path explosion in constraint-based test generation
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
Analysis of a session-layer protocol in MCRL2: verification of a real-life industrial implementation
FMICS'07 Proceedings of the 12th international conference on Formal methods for industrial critical systems
Building SMT-based software model checkers: an experience report
FroCoS'09 Proceedings of the 7th international conference on Frontiers of combining systems
An effective method to control interrupt handler for data race detection
Proceedings of the 5th Workshop on Automation of Software Test
Profiling the operational behavior of OS device drivers
Empirical Software Engineering
Reverse-engineering drivers for safety and portability
HotDep'08 Proceedings of the Fourth conference on Hot topics in system dependability
Device driver safety through a reference validation mechanism
OSDI'08 Proceedings of the 8th USENIX conference on Operating systems design and implementation
GATEKEEPER: mostly static enforcement of security and reliability policies for javascript code
SSYM'09 Proceedings of the 18th conference on USENIX security symposium
Testing closed-source binary device drivers with DDT
USENIXATC'10 Proceedings of the 2010 USENIX conference on USENIX annual technical conference
Model checking graph representation of precise boolean inter-procedural flow analysis
Proceedings of the IEEE/ACM international conference on Automated software engineering
Context-aware counter abstraction
Formal Methods in System Design
Improved device driver reliability through verification reuse
HotDep'10 Proceedings of the Sixth international conference on Hot topics in system dependability
Making prophecies with decision predicates
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
SPIN'10 Proceedings of the 17th international SPIN conference on Model checking software
dBug: systematic evaluation of distributed systems
SSV'10 Proceedings of the 5th international conference on Systems software verification
Correctness proofs for device drivers in embedded systems
SSV'10 Proceedings of the 5th international conference on Systems software verification
Communications of the ACM
Improved device driver reliability through hardware verification reuse
Proceedings of the sixteenth international conference on Architectural support for programming languages and operating systems
S2E: a platform for in-vivo multi-path analysis of software systems
Proceedings of the sixteenth international conference on Architectural support for programming languages and operating systems
Model checking büchi pushdown systems
FASE'11/ETAPS'11 Proceedings of the 14th international conference on Fundamental approaches to software engineering: part of the joint European conferences on theory and practice of software
A security policy oracle: detecting security holes using multiple API implementations
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Realizing the future of wireless data communications
Communications of the ACM
SLAM2: static driver verification with under 4% false alarms
Proceedings of the 2010 Conference on Formal Methods in Computer-Aided Design
Precise static analysis of untrusted driver binaries
Proceedings of the 2010 Conference on Formal Methods in Computer-Aided Design
vIOMMU: efficient IOMMU emulation
USENIXATC'11 Proceedings of the 2011 USENIX conference on USENIX annual technical conference
SLAYER: memory safety for systems-level code
CAV'11 Proceedings of the 23rd international conference on Computer aided verification
Temporal property verification as a program analysis task
CAV'11 Proceedings of the 23rd international conference on Computer aided verification
An abstraction-refinement framework for trigger querying
SAS'11 Proceedings of the 18th international conference on Static analysis
Compositional Shape Analysis by Means of Bi-Abduction
Journal of the ACM (JACM)
Static analysis of device drivers: we can do better!
Proceedings of the Second Asia-Pacific Workshop on Systems
The S2E Platform: Design, Implementation, and Applications
ACM Transactions on Computer Systems (TOCS) - Special Issue APLOS 2011
An automata-theoretic approach to hardware/software co-verification
FASE'10 Proceedings of the 13th international conference on Fundamental Approaches to Software Engineering
Repair of boolean programs with an application to c
CAV'06 Proceedings of the 18th international conference on Computer Aided Verification
CAV'06 Proceedings of the 18th international conference on Computer Aided Verification
The static driver verifier research platform
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Efficient reachability analysis of büchi pushdown systems for hardware/software co-verification
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Dynamic cutoff detection in parameterized concurrent programs
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Understanding modern device drivers
ASPLOS XVII Proceedings of the seventeenth international conference on Architectural Support for Programming Languages and Operating Systems
SimTester: a controllable and observable testing framework for embedded systems
VEE '12 Proceedings of the 8th ACM SIGPLAN/SIGOPS conference on Virtual Execution Environments
Rigorous fault tolerance using aspects and formal methods
Rigorous Development of Complex Fault-Tolerant Systems
QuickCheck testing for fun and profit
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
Establishing linux driver verification process
PSI'09 Proceedings of the 7th international Andrei Ershov Memorial conference on Perspectives of Systems Informatics
Applicability of the BLAST model checker: an industrial case study
PSI'09 Proceedings of the 7th international Andrei Ershov Memorial conference on Perspectives of Systems Informatics
Trusted firmware services based on TPM
INTRUST'09 Proceedings of the First international conference on Trusted Systems
Formalizing hardware/software interface specifications
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
Sound formal verification of linux's USB BP keyboard driver
NFM'12 Proceedings of the 4th international conference on NASA Formal Methods
Temporal property verification as a program analysis task
Formal Methods in System Design
Diagnosys: automatic generation of a debugging interface to the Linux kernel
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
Termination analysis with algorithmic learning
CAV'12 Proceedings of the 24th international conference on Computer Aided Verification
Predicate abstraction of Java programs with collections
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
SymDrive: testing drivers without devices
OSDI'12 Proceedings of the 10th USENIX conference on Operating Systems Design and Implementation
Detection of runtime errors in MISRA C programs: a deductive approach
SAFECOMP'07 Proceedings of the 26th international conference on Computer Safety, Reliability, and Security
Making weighted containment feasible: a heuristic based on simulation and abstraction
CONCUR'12 Proceedings of the 23rd international conference on Concurrency Theory
Software—Practice & Experience
Dependability in Pervasive Computing: Challenges and Chances
Journal of Information Technology Research
Hypnos: understanding and treating sleep conflicts in smartphones
Proceedings of the 8th ACM European Conference on Computer Systems
Proceedings of the 2013 International Conference on Software Engineering
Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles
ACM SIGOPS 24th Symposium on Operating Systems Principles
VirtuOS: an operating system with kernel virtualization
Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles
Explicating SDKs: uncovering assumptions underlying secure authentication and authorization
SEC'13 Proceedings of the 22nd USENIX conference on Security
Comprehending performance from real-world execution traces: a device-driver case
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
An approach to testing commercial embedded systems
Journal of Systems and Software
Software verification with VeriFast: Industrial case studies
Science of Computer Programming
Counterexample-guided abstraction refinement for linear programs with arrays
Automated Software Engineering
Software dataplane verification
NSDI'14 Proceedings of the 11th USENIX Conference on Networked Systems Design and Implementation
Hi-index | 0.03 |
Bugs in kernel-level device drivers cause 85% of the system crashes in the Windows XP operating system [44]. One of the sources of these errors is the complexity of the Windows driver API itself: programmers must master a complex set of rules about how to use the driver API in order to create drivers that are good clients of the kernel. We have built a static analysis engine that finds API usage errors in C programs. The Static Driver Verifier tool (SDV) uses this engine to find kernel API usage errors in a driver. SDV includes models of the OS and the environment of the device driver, and over sixty API usage rules. SDV is intended to be used by driver developers "out of the box." Thus, it has stringent requirements: (1) complete automation with no input from the user; (2) a low rate of false errors. We discuss the techniques used in SDV to meet these requirements, and empirical results from running SDV on over one hundred Windows device drivers.