57,773 research outputs found

    Debugging Memory Issues In Embedded Linux: A Case Study

    Full text link
    Debugging denotes the process of detecting root causes of unexpected observable behaviors in programs, such as a program crash, an unexpected output value being produced or an assertion violation. Debugging of program errors is a difficult task and often takes a significant amount of time in the software development life cycle. In the context of embedded software, the probability of bugs is quite high. Due to requirements of low code size and less resource consumption, embedded softwares typically do away with a lot of sanity checks during development time. This leads to high chance of errors being uncovered in the production code at run time. In this paper we propose a methodology for debugging errors in BusyBox, a de-facto standard for Linux in embedded systems. Our methodology works on top of Valgrind, a popular memory error detector and Daikon, an invariant analyzer. We have experimented with two published errors in BusyBox and report our findings in this paper.Comment: In proceedings of IEEE TechSym 2011, 14-16 January, 2011, IIT kharagpur, Indi

    Shadow symbolic execution for better testing of evolving software

    Get PDF
    In this idea paper, we propose a novel way for improving the testing of program changes via symbolic execution. At a high-level, our technique runs two different program versions in the same symbolic execution instance, with the old version effectively shadowing the new one. In this way, the technique can exploit precise dynamic value information to effectively drive execution toward the behaviour that has changed from one version to the next. We discuss the main challenges and opportunities of this approach in terms of pruning and prioritising path exploration, mapping elements across versions, and sharing common symbolic state between versions. Copyright © 2014 ACM

    Evolutionary improvement of programs

    Get PDF
    Most applications of genetic programming (GP) involve the creation of an entirely new function, program or expression to solve a specific problem. In this paper, we propose a new approach that applies GP to improve existing software by optimizing its non-functional properties such as execution time, memory usage, or power consumption. In general, satisfying non-functional requirements is a difficult task and often achieved in part by optimizing compilers. However, modern compilers are in general not always able to produce semantically equivalent alternatives that optimize non-functional properties, even if such alternatives are known to exist: this is usually due to the limited local nature of such optimizations. In this paper, we discuss how best to combine and extend the existing evolutionary methods of GP, multiobjective optimization, and coevolution in order to improve existing software. Given as input the implementation of a function, we attempt to evolve a semantically equivalent version, in this case optimized to reduce execution time subject to a given probability distribution of inputs. We demonstrate that our framework is able to produce non-obvious optimizations that compilers are not yet able to generate on eight example functions. We employ a coevolved population of test cases to encourage the preservation of the function's semantics. We exploit the original program both through seeding of the population in order to focus the search, and as an oracle for testing purposes. As well as discussing the issues that arise when attempting to improve software, we employ rigorous experimental method to provide interesting and practical insights to suggest how to address these issues

    Innovation 2.0: Grantmaking to Transform America's Education Systems

    Get PDF
    As social and technological forces reshape the environment, the educational landscape is being similarly transfigured as parents, employers, policymakers and students grow impatient with incremental efforts to reform a broken system. Too often such efforts have proven both slow and inadequate to the evolving needs of learners: Innovations have been inequitably distributed, promising solutions have been difficult to implement at scale. Yet the signs of widespread change are real, and there is little doubt that transformation has begun

    Sexual selection protects against extinction

    Get PDF
    Reproduction through sex carries substantial costs, mainly because only half of sexual adults produce offspring. It has been theorised that these costs could be countered if sex allows sexual selection to clear the universal fitness constraint of mutation load. Under sexual selection, competition between (usually) males, and mate choice by (usually) females create important intraspecific filters for reproductive success, so that only a subset of males gains paternity. If reproductive success under sexual selection is dependent on individual condition, which depends on mutation load, then sexually selected filtering through ‘genic capture’ could offset the costs of sex because it provides genetic benefits to populations. Here, we test this theory experimentally by comparing whether populations with histories of strong versus weak sexual selection purge mutation load and resist extinction differently. After evolving replicate populations of the flour beetle Tribolium castaneum for ~7 years under conditions that differed solely in the strengths of sexual selection, we revealed mutation load using inbreeding. Lineages from populations that had previously experienced strong sexual selection were resilient to extinction and maintained fitness under inbreeding, with some families continuing to survive after 20 generations of sib × sib mating. By contrast, lineages derived from populations that experienced weak or non-existent sexual selection showed rapid fitness declines under inbreeding, and all were extinct after generation 10. Multiple mutations across the genome with individually small effects can be difficult to clear, yet sum to a significant fitness load; our findings reveal that sexual selection reduces this load, improving population viability in the face of genetic stress

    Space life sciences strategic plan

    Get PDF
    Over the last three decades the Life Sciences Program has significantly contributed to NASA's manned and unmanned exploration of space, while acquiring new knowledge in the fields of space biology and medicine. The national and international events which have led to the development and revision of NASA strategy will significantly affect the future of life sciences programs both in scope and pace. This document serves as the basis for synthesizing the options to be pursued during the next decade, based on the decisions, evolution, and guiding principles of the National Space Policy. The strategies detailed in this document are fully supportive of the Life Sciences Advisory Subcommittee's 'A Rationale for the Life Sciences,' and the recent Aerospace Medicine Advisory Committee report entitled 'Strategic Considerations for Support of Humans in Space and Moon/Mars Exploration Missions.' Information contained within this document is intended for internal NASA planning and is subject to policy decisions and direction, and to budgets allocated to NASA's Life Sciences Program
    corecore