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.
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.
29100810
An Expert System Based Approach to Modeling and Selecting Requirement Engineering Techniques
The importance of requirements engineering (RE) has been raised numerous times in literatures. To choose suitable RE techniques for a particular project in a given situation is a challenging task, requiring substantial expertise and efforts. To help solving this problem, an expert system based approach is proposed. This expert system uses the knowledge from domain experts to model the causal factors of RE techniques. It can select suitable RE techniques for a software project. A web-based questionnaire is created in the first place to collect the expertise available in the community. The information collected by the questionnaire is analyzed and transformed into a new dataset for constructing a Bayesian Belief Network (BBN). The resulting BBN integrated with a GUI forms an expert system for RE techniques modeling and selection. Empirical study validates the transformed dataset and shows that the expert system outperforms other predictors in selecting suitable RE techniques in different RE phases.
9189850
The Parameter Optimization of Human-Simulated Intelligent Controller Based on Improved Genetic Algorithm
The human-simulated intelligent controller, using a hierarchical and multi-mode control structure, effectively solves the control difficult problems of many complex systems. But there are many parameters to be determined. In order to solve them, the paper introduces an improved genetic algorithm (IGA) which is combined with orthogonal design method. It is served as the simulation experiment platform by the cart-double pendulum. Through selected the reasonable fitness function and determined the appropriate parameters range, using the IGA, the parameters of the human-simulated intelligent controller are optimized. The simulation results show the IGA is better than the manual adjustment method. So it is proved that the IGA is more effective in solving the parameter optimization of human-simulated intelligent controller, and also promotes the more extended application space of intelligent control theory.
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.
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.
17436215
Organizing Meaning Evolution Supporting Systems Using Semantic Decision Tables
DOGMA-MESS (Meaning Evolution Support System) is a system and methodology for supporting scalable, community-grounded ontology engineering. It uses a socio-technical process of meaning negotiation to tackle the scalability problems in ontology engineering. In order to improve the effectiveness of DOGMA-MESS, we adopt the idea of Semantic Decision Table (SDT). An SDT contains semantically rich decision rules that guide DOGMA-MESS micro-processes. It separates the decision rules from DOGMA-MESS. SDT with different decision rules results in different final decisions, which can be evaluated. In this paper, we illustrate how SDTs are used and apply our approach in the domain of Human Resource Management.