15542014
Efficient checkpointing of java software using context-sensitive capture and replay
Checkpointing and replaying is an attractive technique that has been used widely at the operating/runtime system level to provide fault tolerance. Applying such a technique at the application level can benefit a range of software engineering tasks such as testing of long-running programs, automated debugging, and dynamic slicing. We propose a checkpointing/replaying technique for Java that operates purely at the language level, without the need for JVM-level or OS-level support. At the core of our approach are static analyses that select, at certain program points, a safe subset of the program state to capture and replay. Irrelevant statements before the checkpoint are eliminated using control-dependence-based slicing; the remaining statements together with the captured run-time values are used to indirectly recreate the call stack of the original program at the checkpoint. At the checkpoint itself and at certain subsequent program points, the replaying version restores parts of the program state that are necessary for execution of the surrounding method. Our experimental studies indicate that the proposed static and dynamic analyses have the potential to reduce significantly the execution time for replaying, with low run-time overhead for checkpointing.
15679648
First-aid: surviving and preventing memory management bugs during production runs
Memory bugs in C/C++ programs severely affect system availability and security. This paper presents First-Aid, a lightweight runtime system that survives software failures caused by common memory management bugs and prevents future failures by the same bugs during production runs. Upon a failure, First-Aid diagnoses the bug type and identifies the memory objects that trigger the bug. To do so, it rolls back the programto previous checkpoints and uses two types of environmental changes that can prevent or expose memory bug manifestation during re-execution. Based on the diagnosis, First-Aid generates and applies runtime patches to avoid the memory bug and prevent its reoccurrence. Furthermore, First-Aid validates the consistent effects of the runtime patches and generates on-site diagnostic reports to assist developers in fixing the bugs.
 We have implemented First-Aid on Linux and evaluated it with seven applications that contain various types of memory bugs, including buffer overflow, uninitialized read, dangling pointer read/write, and double free. The results show that First-Aid can quickly diagnose the tested bugs and recover applications from failures (in 0.084 to 3.978 seconds). The results also show that the runtime patches generated by First-Aid can prevent future failures caused by the diagnosed bugs. Additionally, First-Aid provides detailed diagnostic information on both the root cause and the manifestation of the bugs. Furthermore, First-Aid incurs low overhead (0.4-11.6% with an average of 3.7%) during normal execution for the tested buggy applications, SPEC INT2000, and four allocation intensive programs.
31658979
A wavelet approach to extracting contours of document images
In this paper, a new method for extracting contours of document images is proposed. It is a wavelet-based method that consists of three steps. First, by orthogonal wavelet decomposition, a document image is decomposed into a set of wavelet approximation and wavelet details. Next, contour extraction is achieved by applying a wavelet reconstruction technique. In the third step, a multiresolution-contours extraction with respect to an iteration wavelet reconstruction is implemented. A novel combination of multiresolution-contours results in clear contours of the document image. This reconstruction procedure is accompanied by an energy distribution estimation from which wavelet decomposition times can be adaptively controlled. Our method has no redundant operation compared to the scheme of wavelet transform. Therefore, the computational time and memory requirement are less than those by wavelet transform.
1201413
LeakSurvivor: Towards Safely Tolerating Memory Leaks for Garbage-Collected Languages
Continuous memory leaks severely hurt program performance and software availability for garbage-collected programs. This paper presents a safe method, called LeakSurvivor, to tolerate continuous memory leaks at runtime for garbage-collected programs. Our main idea is to periodically swap out the "Potentially Leaked" (PL) memory objects identified by leak detectors from the virtual memory to disks. As a result, the virtual memory space occupied by the PL objects can be reclaimed by garbage collectors and available for future uses. If a swapped-out PL object is accesses later, LeakSurvivor will restore it from disks to the memory for correct program execution. Furthermore, LeakSurvivor helps developers to prune false positives. 
 
We have built the prototype of LeakSurvivor on top of Jikes RVM 2.4.2, a high performance Java-in-Java virtual machine developed by IBM. We conduct the experiments with three Java applications including Eclipse, SPECjbb2000 and Jigsaw. Among them, Eclipse and Jigsaw contain memory leaks introduced by their developers, while SPECjbb2000 contain a memory leak injected by us. Our results show that LeakSurvivor effectively tolerates memory leaks for two applications (Eclipse and SPECjbb2000), i.e., no cumulative performance degradation and no software failures when facing continuous memory leaks at runtime. For Jigsaw, LeakSurvivor extends the program lifetime by two times and improves the performance by 46% compared with native runs. Furthermore, when there are no memory leaks, LeakSurvivor imposes small runtime overhead, i.e., 2.5% over the leak detector and 23.7% over the native runs.
33017168
An ontology engineering methodology for DOGMA
Although ontologies occupy a central place in the Semantic Web and related research domains, there are currently not many fully fledged ontology engineering methodologies available. In this paper, we want to present an integrated methodology for ontology engineering from scratch, inspired by various scientific disciplines, in particular database semantics and natural language processing.
2555681
Judicial Support Systems: Ideas for a Privacy Ontology-Based Case Analyzer
Nowadays, ontology is applied as an integral part of many applications in several domains, especially in the world of law. The ontology based judicial support system is believed as a useful tool to support, for example, the legal argumentation assistant and legal decision taking in court. The privacy case analyzer is considered as one of the most interesting applications of ontology based privacy judicial support systems. The efficiency of privacy case analyzers depend on several factors such as how to tackle the problem of linking cases to legislations, how to imply the guidance of privacy principles, and how to improve the extraction of cases. This paper addresses those items and describes the research issues that will be investigated challenges of ontology based judicial support systems.
1361502
Model Ontological Commitments Using ORM+ in T-Lex
When designing and developing ontology based applications, we semantically ground them by ontologically committing the application rules to their respective domain. These rules can be, for instance decision rules for a decision support system. For the DOGMA framework we have introduced ORM + , a novel extension of ORM for modeling, visualizing and interchanging ontological commitments. In this paper, we illustrate our ongoing research on ORM + and T-Lex as its supporting tool. We demonstrate in the field of on-line customer management.
17461739
The design and implementation of LilyTask in shared memory
Constructing high performance computing system and providing easy-to-use programming model for users are two main parts of parallel computing, but the latter has been in a sorry state for a long time. LilyTask programming model is based on tasks which can be easily mapped to the decomposition of computation. Without explict synchronization and mutual exclusion, users will concentrate on the inherent parallelism in a problem instead of lock/unlock programming techniques. Most existing implementations of the task pool, a flexible data structure for task parallel, lack basic representation of relations among tasks. LilyTask introduces task group and task relation to help users easily map subproblems to tasks. The kernel of LilyTask system, a distributed task pool, automatically exploits potential parallelism among tasks at runtime. With runtime task assignment and task stealing, LilyTask system achieves dynamic load balancing. Our performance evaluation shows that LilyTask system with task pool outperforms sequential programs and BSPlib in solving both regular and irregular problems.
38545491
Defining Re-usable Composite Aspect Patterns: An FDAF Based Approach
Architecting secure systems is an important and challenging problem. Solutions to model individual, or atomic, security capabilities have been proposed, including security patterns, component based, aspect-oriented, and service-oriented approaches. However, little work is available on how to model reusable compositions of security capabilities, where the security capabilities interact with each other and other parts of the system design. Here, an aspect-oriented approach to modeling composite aspects is presented. The approach is defined as an extension to the Formal Design Analysis Framework (FDAF). The FDAF metamodel is extended to support the static representation of composite aspects and an approach to defining the compositions is introduced. A composite aspect that provides Account Lockout with Selective Event Logging (ALSEL) capabilities is used as an example.