Thomas Durieux

Lille, France


    / Sep. 2015 - Aug. 2018

    PhD Student - The motivation of this PhD is to improve automated monitoring, diagnosis and correction of production bugs using search-based software engineering techniques.
    / Sep. 2014 - Aug. 2015

    Research intern - I worked on the Nopol project, a test-suite-based tool for automated bug repair which outputs patches. First, relaying on the Java PathFinder (JPF) library, I integrated symbolic execution to Nopol in order to extend its repair scope to buggy arithmetic statements. Second, I worked on the synthesis of patches based on the context buggy statements. I used the approach proposed in CodeHint. This tool, developed at UC Berkeley, provides dynamic and interactive synthesis of code snippets.
  • CERN
    / Summer 2014

    Summer student - I was integrated to the CERN the security team. Where, I developed a set of tools which scans thousands of CERN WEB servers in order to detect misconfigurations. First, I made a first had to determine the common types of misconfigurations present in the CERN network. Second, I realized the 8 detection tools by focusing on the reduction of false positives. Third, the results were presented at the security team.
  • Microsoft Innovation Center
    / Feb. - Jun. 2013

    Industrial entrepreneurship at Aproove - In order to create a distributed system of the Aproove product, a leading annotation and validation tool for graphic document of high resolution. I developed in a very tight schedule, a new backend system for managing multiple instances of the Aproove product. This system allows database management and Aproove instance management on multiple hosts.
  • Emakina / Jun. 2012

    Student job - I had to continue and to correct JavaScript development in "jobs" section of ING Belgium. I interacted effectively with the team to meet the tight deadlines and precise requirements from the client. I was the only specialist of the team on this technology and the project manager gives me his entire confidence on the technical aspects.
  • Institut Paul Lambin
    / 2012

    Tutor - I provided support to first year students.




  • Automatic repair of real bugs in java: a large-scale experiment on the defects4j dataset
    / 2016

    Martinez, M., Durieux, T., Sommerard, R. et al. Empir Software Eng (2016).
    Defects4J is a large, peer-reviewed, structured dataset of real-world Java bugs. Each bug in Defects4J comes with a test suite and at least one failing test case that triggers the bug. In this paper, we report on an experiment to explore the effectiveness of automatic test-suite based repair on Defects4J. The result of our experiment shows that the considered state-of-the-art repair methods can generate patches for 47 out of 224 bugs. However, those patches are only test-suite adequate, which means that they pass the test suite and may potentially be incorrect beyond the test-suite satisfaction correctness criterion. We have manually analyzed 84 different patches to assess their real correctness. In total, 9 real Java bugs can be correctly repaired with test-suite based repair. This analysis shows that test-suite based repair suffers from under-specified bugs, for which trivial or incorrect patches still pass the test suite. With respect to practical applicability, it takes on average 14.8 minutes to find a patch. The experiment was done on a scientific grid, totaling 17.6 days of computation time. All the repair systems and experimental results are publicly available on Github in order to facilitate future research on automatic repair.
  • Production-Driven Patch Generation and Validation
    / 2016

    Durieux, Thomas, Youssef Hamadi, and Martin Monperrus.
    We present an original concept for patch generation in production. Our idea is to generate patches on-the-fly based on automated failure oracles (such as exceptions), and then to perform live regression testing in production. The latter is achieved by feeding a sandboxed version of the application with a copy of the production traffic, the 'shadow traffic'.
  • Nopol: Automatic Repair of Conditional Statement Bugs in Java Programs
    / 2016

    Jifeng Xuan, Matias Martinez, Favio Demarco, Maxime Clément, Sebastian Lamelas, et al.. Nopol: Automatic Repair of Conditional Statement Bugs in Java Programs. IEEE Transactions on Software Engineering, Institute of Electrical and Electronics Engineers, 2016.
  • DynaMoth: Dynamic Code Synthesis for Automatic Program Repair
    / 2016

    Thomas Durieux, Martin Monperrus. DynaMoth: Dynamic Code Synthesis for Automatic Program Repair. 11th International Workshop in Automation of Software Test (AST 2016), May 2016, Austin, United States. 2016.
  • IntroClassJava: A Benchmark of 297 Small and Buggy Java Programs
    / 2016

    Thomas Durieux, Martin Monperrus. IntroClassJava: A Benchmark of 297 Small and Buggy Java Programs. [Research Report] Universite Lille 1. 2016.
  • NPEFix: Automatic Runtime Repair of Null Pointer Exceptions in Java
    / 2016

    Null pointer exceptions, also known as null dereferences are the number one exceptions in the field. In this paper, we propose 9 alternative execution semantics when a null pointer exception is about to happen. We implement those alternative execution strategies using code transformation in a tool called NPEfix. We evaluate our prototype implementation on 11 field null dereference bugs and 519 seeded failures and show that NPEfix is able to repair at runtime 10/11 and 318/519 failures.


  • BanditRepair
    / 2016

  • DynaMoth
    / 2015

    Researcher - DynaMoth is an open-source research project that aims to generate Java expressions with methods, variables available on a project that respect a specific behaviour.
  • NPEFix
    / 2015

    Researcher - NPEFix is an open-source research project that aims to tolerate null pointer dereference at runtime.
  • NoPol
    / 2015

    Researcher - NoPol is an automatic software repair tool developed at INRIA Lille.
  • \BlueLaTeX
    / 2014 - current

    Developer - \BlueLaTeX is an open-source project and aims to provide a tool chain to easily write collaboratively LaTeX documents. I developed the new UI interface using the MVC framework Angular.js.
  • SyncTeX JS Parser
    / 2015

    Developer - SyncTeX JS Parser is a SyncTeX parser written in JavaScript. This parser is used in the \BlueLaTeX project.
  • MultiAgents
    / 2015

    Developer - A small multi-agent system writen in JavaScript.
  • BibTeX2Wiki
    / 2014

    Developer - BibTeX2Wiki is a small tool which transforms BibTeX file into a Wikipedia formated references.