SummaryRevision HistoryIndex of Figures1. Introduction2. Overview of related work and literature survey2.1. Work based on the happens-before relationship of Lamport2.2. Work done by Stefan Savage et al.3. Work done in this project3.1. JDRD3.1.1 Features Configuring JDRD3.1.2 Running JDRD as a Java3.1.3 Agent Editing a jar file to test with JDRD3.2. JDRD3.3 implementation details. Test and interpretation of results4. Conclusions and Future WorkAppendicesAppendix A: Requirements Specification Document1. Introduction2. Requirements2.1. Requirement 1. Use2.2. Requirement 2. Algorithm2.3. Requirement 3. Instrumentation 2.3. Requirement 4. Result3. Use Cases 3.1 Use Case: Configuring JDRD 3.2 Use Case: Run JDRD as an Agent 3.3 Use Case: Edit and Test a Jar File with JDRD 4.1 References Appendix B: Design Specification Document 1.1. Purpose1.2. Scope1.3. Overview2. Design of environments and applications2.1. Environment2.2. Architecture2.2.1. Application architecture2.2.2 Instrumentation as a Java agent2.2.2.2. Configuration2.2.3. Instrumentation by rewriting Jar3 files. Detailed design:3.1. Transformation using ASM3.2. JDRD adapters and their usage3.2.1 JDRMethodAdapter methods3.3. Implementation of the Lockset4 algorithm. Performance5. References Revision History Revision Date Explanation 1.015.04.2014 Initial Report 1.122.04.2014 Implementation process is added....... halfway through the document ...... e). The signal access method will work as shown in figure 3.3.aFigure 3.3.a: signalAccess method of FieldStateDataAfter reporting the access, JDRD will check the status and size of the lockset and issue a warning if the size is equal to 0 and the status is shared modified.4. Performance Since JDRD will retain all necessary data on all objects and fields created during execution, memory leaks are highly possible. To avoid this, all object references will be weak references so as not to prevent the garbage collector from releasing these memory spaces. More information about weak references can be found on the WeakReference page of the Oracle Java documents.[5]5. References In this article we describe a tool, called Eraser, that dynamically detects data races in multi-threaded programs. We have implemented Eraser for DIGITAL
tags