loader

Mahdi Eslamimehr

Computer Expert Witness (Litigation Services) at Quandary Peak Research Inc.

Research Associate at Viewpoints Research Institute

Visiting Project Scientist at UCLA Compilers Lab

My research interest lies in the intersection of Software Testing, Compiler Construction and Programming languages.

 

Academic Services:

Academic & Professional Experiences:

Current Research Projects

- Detecting concurrency bugs.

- Worst Case Execution Time Analysis.

Past Research Projects

- Detecting concurrency bugs.

Race Directed Scheduling of Concurrent Programs: Detection of data races in Java programs remains a difficult problem. he best static techniques produce many false positives, and also the best dynamic techniques leave room for improvement. We present a new technique called "Race Directed Scheduling" that for a given race candidate searches for an input and a schedule that lead to the race. The search iterates a combination of concolic execution and schedule improvement, and turns out to find useful inputs and schedules efficiently. We implemented our technique into a new tool named Racageddon.

Sherlock: Scalable Deadlock Detection for Concurrent Programs: We present a new technique to nd real deadlocks in concur- rent programs that use locks. For 4.5 million lines of Java, our technique found almost twice as many real deadlocks as four previous techniques combined. Among those, 33 dead- locks that happened after more than one million computa- tion steps, including 27 new deadlocks. We rst use a known technique to nd 1275 deadlock candidates and then we de- termine that 146 of them are real deadlocks. Our technique combines previous work on concolic execution with a new constraint-based approach that iteratively drives an execu- tion towards a deadlock candidate.

AtomChase: Directed Search towards Atomicity Violations: Atomicity violation is one of the main sources of concurrency bugs. Empirical studies show that the majority of atomicity violations are instances of the three-access pattern, where two accesses to a shared variable by a thread are interleaved by an access to the same variable by another thread. We present a novel approach to atomicity violation detection that directs the execution towards three-access candidates. The directed search technique comprises two parts: execution schedule synthesis and directed concurrent execution that are based on constraint solving and concolic execution. We have implemented this technique in a tool called AtomChase. In comparison to five previous tools on 22 benchmarks with 4.5 million lines of Java code, AtomChase increased the number of three-access violations found by 24%. To prevent reporting false alarms, we confirm the non-atomicity of the found execution traces. We present and prove sufficient conditions for non-atomicity of traces with the three-access pattern. The conditions could recognize the majority of 89% of the real atomicity violations found by AtomChase. Checking these conditions is two orders of magnitude faster than the exhaustive check.

- Worst Case Execution Time Analysis.

Timing Analysis of Event-Driven Programs with Directed Testing: Accurately estimating the worst-case execution time (WCET) of real-time event-driven soft- ware is crucial. For example, NASA’s study of unintended acceleration in Toyota vehicles high- lights poor support in timing analysis for event-driven code, which could put human life in danger. WCET occurs during the longest possible execution path in a program. Static analysis produces safe but overestimated measurements. Dynamic analysis, on other hand, measures actual execu- tion times of code under a test suite. Its performance depends on the branch coverage, which itself is sensitive to scheduling of events. Thus dynamic analysis often underestimates the WCET. We present a new dynamic approach called event-driven directed testing. Our approach combines aspects of prior random-testing techniques devised for event-driven code with the directed testing method applied to sequential code. The aim is to come up with complex event sequences and choices of parameters for individual events that might result in execution times closer to the true WCET. Our experiments show that, compared to random testing, genetic algorithms, and traditional directed testing, we achieve significantly better branch coverage and longer WCET.

- Maximum Stack Size Analsysi for Embedded Software:

Event-driven programming has found pervasive acceptance, from high-performance servers to embedded systems, as an efficient method for interacting with a complex world. Unfortunately, loose coupling of event handlers obscures control flow and makes dependencies hard to detect, leading to subtle bugs. The best previous work on testing event-driven software uses event sequences that are generated randomly or by genetic algorithms. In this paper we present a new approach called" Event-based Directed Testing". Our approach combines aspects of random testing and directed testing to generate challenging event sequences for testing event-driven software.We implemented our technique into a new tool named VICE. VICE stands for Virgil IntegratedConcolicEngine.

- Scalable Topology Language for Many-Core Processors:

SPARTA, Samsung PArallel Real Time Architecture, A Set of tools and a run-time framework that enable superior performance of CE device software through dynamic (adaptive) parallelization and system-wide co-ordination of processing, memory and I/O resources.

- CCL: Components Configuration Language:

SPARTA streaming applications are structured as a graph of components that are "bound" together through connecting ports. SPARTA's CCL is a domain specific programming language that is used to rapidly generated component "glue" code for a component based application. The language provides constructs for specifying intra-component composition (e.g., ports and functoids) as well as inter-component composition (e.g., application graphs). Ultimately CCL may become a placeholder for QoS specifications on the application.

Publications

2016

O. Freibergr, J. Palsberg, M. Eslamimehr, Retargetable Communication for Distributed Programs.

In Proceedings of QoSA'16, 12th International ACM SIGSOFT Conference on the Quality of Software Architectures, Venice, Italy.

2015

M. Eslamimehr, G. Edwards, End-to-End Cross-Language Test Case Generation for Web Applications.

In Proceedings of ValueTools'15, The 9th ACM SIGMETRICS International Conference on Performance Evaluation Methodologies and Tools, Berlin, Germany.

M. Eslamimehr, M. Lesani, AtomChase: Directed Search Towards Atomicity Violations.

In Proceedings of ISSRE'15, The 26th IEEE International Symposium on Software Reliability Engineering, Washnington D.C., USA. (Best paper Award)

H. Samimi, A. Warth, M. Eslamimehr, A. Borning, Constraints as a Design Pattern: from Sketchpad61 to Sketchpad14.

In Proceedings of Onward!'15, ACM SIGPLAN International Symposium on New ideas, New Paradigms, and Reflections on Programming & Software, Pennsylvania, USA.

M. Eslamimehr, H. Samimi, Timing Analysis of Event-Driven Programs with Directed Testing.

In Proceedings of WCET'15, 15th International Workshop on Worst-Case Execution Time Analysis, satellite workshop of the 27th Euromicro Conference on Real-Time Systems (ECRTS 2015), Lund, Sweden. [Slides]

2014

M. Eslamimehr, J. Palsberg, Sherlock: Scalable Deadlock Detection for Concurrent Programs.

In Proceedings of FSE'14, 22nd ACM SIGSOFT International Symposium on the Foundations of Software Engineering, Hong Kong.

Ph.D Dissertation: M. Eslamimehr, Directed Testing of Event Driven and Concurrent Programs.

M. Eslamimehr, J. Palsberg, Race Directed Scheduling of Concurrent Programs.

In Proceedings of PPOPP'14, ACM SIGPLAN Annual Symposium on Principles and Practice of Parallel Programming, Florida, USA. [Slides]

2013

M. Eslamimehr, J. Palsberg, Testing versus static analysis of maximum stack size.

In Proceedings of COMPSAC'13, 37th IEEE International Conference on Computers, Software & Applications, Kyoto, Japan. [Slides]

2008

Master Thesis: Mahdi Eslamimehr, The Survey on Model Based Testing and Industrial Tools.

Linkoping University.

Patents

Patent Case No. UC-2014-323-1-LA. Serial No. 61/904,977, Mahdi Eslamimehr, Jens Palsberg, "Race Directed Scheduling of Concurrent Programs", filed November 15, 2013.

2014

(2014) Directed Scheduling of Concurrent Programs, UCLA Tech Forum.

2013

Event-Based Directed Testing, Howard Hughes Lab, Malibu, US.

2012

Directed Testing: From FPGAs to Supercomputers, Intel Seattle, US.

2010

Scalable Topology Language for Many-Core Processors, Samsung US R&D, San Jose, US.

2010

Enhancing Components Configuration Language on SPARTA, Samsung US R&D, San Jose.

2006

Model Based testing: State of Art, held in Ericsson AB, Helsinki, Finland.

Courses

As the instructor in Cal Poly Pomona:

CS480 Software Engineering: Spring 2014

CS356 Object Oriented Design: Fall 2013, Winter 2014, Spring 2014

IME113 Industrial Computation: Fall 2013, Winter 2014, Spring 2014

As the teacher assistant:

(Winter 2013) Teaching Assistant of Professor Hunter for "Java Applications" Department of Math,University of California Los Angeles.

(Fall 2012) Teaching Assistant of Professor Palsberg for "Compiler construction" Department of Computer Science, University of California Los Angeles.

(Fall 2011) Teaching Assistant of Professor Palsberg for "Compiler construction" Department of ComputerScience, University of California Los Angeles.

(Winter 2010) Teaching Assistant of Professor Smallberg for "Intro to Computer Science 2" Department of Computer Science, University of California Los Angeles.

(Fall 2007) Teaching Assistant of Professor Sandahl for "Software Engineering" Department of Computer and Information Science, Linkoping University, Linkoping, Sweden.

(Fall 2007) Teaching Assistant of Professor Nilsson for "Data Structures and Algorithms" Department of Computer and Information Science, Linkoping University, Linkoping, Sweden.

(Fall 2007) Teaching Assistant of Professor Svensson for "Human Computer Interactions" Department of Computer and Information Science, Linkoping University, Linkoping, Sweden.

(Fall 2005) Teaching Assistant of Professor Jamzad for "Data Structures and Algorithms" Department of Computer Engineering, Sharif University of Technology.

(Fall 2005) Teaching Assistant of Professor Beygi for "Design and Analysis of Algorithms" Department of Computer Engineering, Sharif University of Technology.

(Spring 2005) Teaching Assistant of Professor Beygi for "Data Structures and Algorithms" Department of Computer Engineering, Sharif University of Technology.

(Spring 2005) Teaching Assistant of Professor Beygi for "Design and Analysis of Algorithms" Department of Computer Engineering, Sharif University of Technology.

(Fall 2004-2005) Teaching Assistant of Professor Izadi for "Theory of Machines & Languages" Department of Computer Engineering, Sharif University of Technology.

(Fall 2004-2005) Teaching Assistant of Professor Beygi for "Design and Analysis of Algorithms" Department of Computer Engineering, Sharif University of Technology.

(Fall 2003-2004) Teaching Assistant of Professor Izadi for "Advanced programming in C++" Department of Computer Engineering, Sharif University of Technology.