A Scalable Mixed-level Approach to Dynamic Analysis of C and C++ Programs

A Scalable Mixed-level Approach to Dynamic Analysis of C and C++ Programs PDF Author: Philip Jia Guo
Publisher:
ISBN:
Category :
Languages : en
Pages : 112

Get Book Here

Book Description
This thesis addresses the difficult task of constructing robust and scalable dynamic program analysis tools for programs written in memory-unsafe languages such as C and C++, especially those that are interested in observing the contents of data structures at run time. In this thesis, I first introduce my novel mixed-level approach to dynamic analysis, which combines the advantages of both source- and binary-based approaches. Second, I present a tool framework that embodies the mixed-level approach. This framework provides memory safety guarantees, allows tools built upon it to access rich source- and binary-level information simultaneously at run time, and enables tools to scale to large, real-world C and C++ programs on the order of millions of lines of code. Third, I present two dynamic analysis tools built upon my framework - one for performing value profiling and the other for performing dynamic inference of abstract types - and describe how they far surpass previous analyses in terms of scalability, robustness, and applicability. Lastly, I present several case studies demonstrating how these tools aid both humans and automated tools in several program analysis tasks: improving human understanding of unfamiliar code, invariant detection, and data structure repair.

A Scalable Mixed-level Approach to Dynamic Analysis of C and C++ Programs

A Scalable Mixed-level Approach to Dynamic Analysis of C and C++ Programs PDF Author: Philip Jia Guo
Publisher:
ISBN:
Category :
Languages : en
Pages : 112

Get Book Here

Book Description
This thesis addresses the difficult task of constructing robust and scalable dynamic program analysis tools for programs written in memory-unsafe languages such as C and C++, especially those that are interested in observing the contents of data structures at run time. In this thesis, I first introduce my novel mixed-level approach to dynamic analysis, which combines the advantages of both source- and binary-based approaches. Second, I present a tool framework that embodies the mixed-level approach. This framework provides memory safety guarantees, allows tools built upon it to access rich source- and binary-level information simultaneously at run time, and enables tools to scale to large, real-world C and C++ programs on the order of millions of lines of code. Third, I present two dynamic analysis tools built upon my framework - one for performing value profiling and the other for performing dynamic inference of abstract types - and describe how they far surpass previous analyses in terms of scalability, robustness, and applicability. Lastly, I present several case studies demonstrating how these tools aid both humans and automated tools in several program analysis tasks: improving human understanding of unfamiliar code, invariant detection, and data structure repair.

An Improved Scalable Mixed-level Approach to Dynamic Analysis of C and C++ Programs

An Improved Scalable Mixed-level Approach to Dynamic Analysis of C and C++ Programs PDF Author: Robert Andrew Rudd (M. Eng.)
Publisher:
ISBN:
Category :
Languages : en
Pages : 86

Get Book Here

Book Description
In this thesis, I address the challenges of developing tools which use a mixed-level approach to dynamic binary analysis. The mixed-level approach combines advantages of both source- based and binary-based approaches to dynamic analysis, but comes with the added challenge of dealing with the implementation details of a specific implementation of the target language. This thesis describes the implementation of three existing tools which use the mixed-level approach: Fjalar, a C/C++ dynamic analysis framework, Kvasir, A C/C++ value profiling tool, and Dyncomp, a tool for inferring the abstract types of a C or C++ program. Additionally, this thesis describes the steps I took in increasing the maintainability and portability of these tools. I investigated and documented platform specific dependencies; I documented the process of merging in upstream changes of Valgrind, the Dynamic Binary Instrumenter Fjalar is built on, to aid Fjalar in keeping in-sync with Valgrind bug-fixes; and I implemented a tool for debugging Dyncomp errors.

Runtime Verification

Runtime Verification PDF Author: Shaz Qadeer
Publisher: Springer
ISBN: 364235632X
Category : Computers
Languages : en
Pages : 331

Get Book Here

Book Description
This book constitutes the thoroughly refereed post-conference proceedings of the Third International Conference on Runtime Verification, RV 2012, held in Istanbul, Turkey, in September 2012. The 25 revised full papers presented together with 3 invited papers and 2 tutorials were carefully reviewed and selected from 50 submissions. The papers address a wide range of specification languages and formalisms for traces, specification mining, program instrumentation, monitor construction techniques, logging, recording, and replay, fault detection, localization, recovery and repair, program steering and adaptation, metrics and statistical information gathering, combination of static and dynamic analyses and program execution visualization.

An Integrated Static and Dynamic Program Analysis Framework for Checking Concurrency-related Programming Errors

An Integrated Static and Dynamic Program Analysis Framework for Checking Concurrency-related Programming Errors PDF Author: Qichang Chen
Publisher:
ISBN: 9781124881652
Category : Computer programming
Languages : en
Pages : 145

Get Book Here

Book Description
Today, the growing popularity of the multi-core/multi-processor hardware has forced many programs to be well-written concurrent programs. However, developing concurrent programs is intrinsically difficult. Concurrency introduces the possibility of errors that do not exist in sequential programs. The dissertation presents an integrated static and dynamic program analysis framework to address these concurrent errors. First, it presents a scalable hybrid approach that integrates static and dynamic analyses to detect the concurrency errors including the notorious data race and atomicity violation. In the integrated approach, we first perform static analysis to obtain summaries of synchronizations and accesses to shared variables. The static summaries are then instantiated with runtime values during dynamic executions to speculatively approximate the behaviors of branches that are not taken. To reduce the overhead and make the analysis scalable, we designed and implemented a distributed monitoring and analysis framework in which the runtime monitoring and analysis are carried out on two separate machines which communicated to each other using the network. We designed and implemented this hybrid approach in a tool called DHAVE and evaluated it on several benchmarks. Compared to dynamic analysis, the hybrid approach is able to detect atomicity violations and other concurrency errors in unexecuted parts of the code efficiently. Compared to static analysis, the hybrid approach produces fewer false alarms and is more accurate. The second part of the dissertation presents a self adaptive monitoring (SAM) framework that include several novel compile-time and run-time instrumentation and monitoring optimization techniques that aim to significantly reduce the overhead of dynamic analysis on multithreaded programs. SAM (Self-Adaptive Monitoring) can selectively turn off excessive monitoring on a repeatedly executed code region if the current program context has been determined to be redundant, which may assist many existing dynamic detection tools to improve their performance. Specifically, we approximate the program context for each code region as a set of concurrent context variables, which include path-critical variables and all shared variables accessed in that region. The path-critical variables are inferred by an extended use-def dataflow analysis, and the shared variables for each code region are identified using our prior hybrid thread-based escape analysis. We have implemented the tool in Java and evaluated it on a set of real world programs. Our experimental results show that it significantly reduces the runtime overhead of the dynamic atomicity violation detection while roughly keeping the accuracy and soundness of underlying runtime detection tools. Finally, the dissertation describes a static analysis assisted dynamic program analysis that can reveal concurrency errors in the programs written using the OpenMP specification that is widely used in the scientific community. To detect race conditions, we first conduct an intraprocedural static analysis on the OpenMP programs to identify the variables that are likely to be involved in race conditions (including flush errors). The static analysis results are then used to guide the program instrumentation for the dynamic analysis. Finally, a lockset-based dynamic algorithm is applied on the running program to filter and refine the error report. Our experimental evaluation over several micro benchmarks and real-world applications shows that the hybrid approach imposes very light-weight performance overhead over the target programs while removing many spurious reported errors from the static lockset analysis.

Scalable Dynamic Analysis of Binary Code

Scalable Dynamic Analysis of Binary Code PDF Author: Ulf Kargén
Publisher: Linköping University Electronic Press
ISBN: 9176850498
Category :
Languages : en
Pages : 73

Get Book Here

Book Description
In recent years, binary code analysis, i.e., applying program analysis directly at the machine code level, has become an increasingly important topic of study. This is driven to a large extent by the information security community, where security auditing of closed-source software and analysis of malware are important applications. Since most of the high-level semantics of the original source code are lost upon compilation to executable code, static analysis is intractable for, e.g., fine-grained information flow analysis of binary code. Dynamic analysis, however, does not suffer in the same way from reduced accuracy in the absence of high-level semantics, and is therefore also more readily applicable to binary code. Since fine-grained dynamic analysis often requires recording detailed information about every instruction execution, scalability can become a significant challenge. In this thesis, we address the scalability challenges of two powerful dynamic analysis methods whose widespread use has, so far, been impeded by their lack of scalability: dynamic slicing and instruction trace alignment. Dynamic slicing provides fine-grained information about dependencies between individual instructions, and can be used both as a powerful debugging aid and as a foundation for other dynamic analysis techniques. Instruction trace alignment provides a means for comparing executions of two similar programs and has important applications in, e.g., malware analysis, security auditing, and plagiarism detection. We also apply our work on scalable dynamic analysis in two novel approaches to improve fuzzing — a popular random testing technique that is widely used in industry to discover security vulnerabilities. To use dynamic slicing, detailed information about a program execution must first be recorded. Since the amount of information is often too large to fit in main memory, existing dynamic slicing methods apply various time-versus-space trade-offs to reduce memory requirements. However, these trade-offs result in very high time overheads, limiting the usefulness of dynamic slicing in practice. In this thesis, we show that the speed of dynamic slicing can be greatly improved by carefully designing data structures and algorithms to exploit temporal locality of programs. This allows avoidance of the expensive trade-offs used in earlier methods by accessing recorded runtime information directly from secondary storage without significant random-access overhead. In addition to being a standalone contribution, scalable dynamic slicing also forms integral parts of our contributions to fuzzing. Our first contribution uses dynamic slicing and binary code mutation to automatically turn an existing executable into a test generator. In our experiments, this new approach to fuzzing achieved about an order of magnitude better code coverage than traditional mutational fuzzing and found several bugs in popular Linux software. The second work on fuzzing presented in this thesis uses dynamic slicing to accelerate the state-of-the-art fuzzer AFL by focusing the fuzzing effort on previously unexplored parts of the input space. For the second dynamic analysis technique whose scalability we sought to improve — instruction trace alignment — we employed techniques used in speech recognition and information retrieval to design what is, to the best of our knowledge, the first general approach to aligning realistically long program traces. We show in our experiments that this method is capable of producing meaningful alignments even in the presence of significant syntactic differences stemming from, for example, the use of different compilers or optimization levels.

Federal Register

Federal Register PDF Author:
Publisher:
ISBN:
Category : Administrative law
Languages : en
Pages : 1732

Get Book Here

Book Description


High Performance Computing

High Performance Computing PDF Author: Alex Veidenbaum
Publisher: Springer Science & Business Media
ISBN: 3540203591
Category : Computers
Languages : en
Pages : 579

Get Book Here

Book Description
This book constitutes the refereed proceedings of the 5th International Symposium on High-Performance Computing, ISHPC 2003, held in Tokyo-Odaiba, Japan in October 2003. The 23 revised full papers and 16 short papers presented together with 4 invited papers and 7 refereed papers accepted for a concurrently held workshop on OpenMP (WOMPEI 2003) were carefully reviewed and selected from 58 submissions. The papers are organized in topical sections on architecture, software, applications, and ITBL.

High Performance Computing in Science and Engineering, Garching/Munich 2007

High Performance Computing in Science and Engineering, Garching/Munich 2007 PDF Author: Siegfried Wagner
Publisher: Springer Science & Business Media
ISBN: 3540691820
Category : Mathematics
Languages : en
Pages : 700

Get Book Here

Book Description
For the fourth time, the Leibniz Supercomputing Centre (LRZ) and the Com- tence Network for Technical, Scienti c High Performance Computing in Bavaria (KONWIHR) publishes the results from scienti c projects conducted on the c- puter systems HLRB I and II (High Performance Computer in Bavaria). This book reports the research carried out on the HLRB systems within the last three years and compiles the proceedings of the Third Joint HLRB and KONWIHR Result and Reviewing Workshop (3rd and 4th December 2007) in Garching. In 2000, HLRB I was the rst system in Europe that was capable of performing more than one Tera op/s or one billion oating point operations per second. In 2006 it was replaced by HLRB II. After a substantial upgrade it now achieves a peak performance of more than 62 Tera op/s. To install and operate this powerful system, LRZ had to move to its new facilities in Garching. However, the situation regarding the need for more computation cycles has not changed much since 2000. The demand for higher performance is still present, a trend that is likely to continue for the foreseeable future. Other resources like memory and disk space are currently in suf cient abundance on this new system.

Languages and Compilers for Parallel Computing

Languages and Compilers for Parallel Computing PDF Author: Sanjay Rajopadhye
Publisher: Springer
ISBN: 364236036X
Category : Computers
Languages : en
Pages : 307

Get Book Here

Book Description
This book constitutes the thoroughly refereed post-conference proceedings of the 24th International Workshop on Languages and Compilers for Parallel Computing, LCPC 2011, held in Fort Collins, CO, USA, in September 2011. The 19 revised full papers presented and 19 poster papers were carefully reviewed and selected from 52 submissions. The scope of the workshop spans the theoretical and practical aspects of parallel and high-performance computing, and targets parallel platforms including concurrent, multithreaded, multicore, accelerator, multiprocessor, and cluster systems.

Computer Aided Systems Theory – EUROCAST 2022

Computer Aided Systems Theory – EUROCAST 2022 PDF Author: Roberto Moreno-Díaz
Publisher: Springer Nature
ISBN: 3031253124
Category : Computers
Languages : en
Pages : 668

Get Book Here

Book Description
This book constitutes the refereed proceedings of the 18th International Conference on Computer-Aided Systems Theory, EUROCAST 2022, held in Las Palmas de Gran Canaria, Spain, during February 20–25, 2022. The 77 full papers included in this book were carefully reviewed and selected from 110 submissions. They were organized in topical sections as follows: Systems Theory and Applications, Theory and Applications of Metaheuristic Algorithms, Model-Based System Design, Verification and Simulation, Applications of Signal Processing Technology, Artificial Intelligence and Data Mining for Intelligent Transportation Systems and Smart Mobility, Computer Vision, Machine Learning for Image Analysis and Applications, Computer and Systems Based Methods and Electronic Technologies in Medicine, Systems in Industrial Robotics, Automation and IoT, Systems Thinking. Relevance for Technology, Science and Management Professionals.