Detecting event anomalies in event-based systems

Event-based interaction is an attractive paradigm because its use can lead to highly flexible and adaptable systems. One problem in this paradigm is that events are sent, received, and processed nondeterministically, due to the systems’ reliance on implicit invocation and implicit concurrency. This nondeterminism can lead to event anomalies, which occur when an event-based system receives multiple events that lead to the write of a shared field or memory location. Event anomalies can lead to unreliable, error-prone, and hard to debug behavior in an event-based system. To detect these anomalies, this paper presents a new static analysis technique, DEvA, for automatically detecting event anomalies. DEvA has been evaluated on a set of open-source event-based systems against a state-of-the-art technique for detecting data races in multithreaded systems, and a recent technique for solving a similar problem with event processing in Android applications. DEvA exhibited high precision with respect to manually constructed ground truths, and was able to locate event anomalies that had not been detected by the existing solutions.

[1]  Marija Mikic-Rakic,et al.  An Extensible Framework for Improving a Distributed Software System's Deployment Architecture , 2012, IEEE Transactions on Software Engineering.

[2]  Peyman Oreizy,et al.  Architecture-based runtime software evolution , 1998, Proceedings of the 20th International Conference on Software Engineering.

[3]  Ondrej Lhoták,et al.  Scaling Java Points-to Analysis Using SPARK , 2003, CC.

[4]  Marija Mikic-Rakic,et al.  A style-aware architectural middleware for resource-constrained, distributed systems , 2005, IEEE Transactions on Software Engineering.

[5]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.

[6]  Laurie Hendren,et al.  Soot: a Java bytecode optimization framework , 2010, CASCON.

[7]  Thomas D. LaToza,et al.  Developers ask reachability questions , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[8]  Dawson R. Engler,et al.  RacerX: effective, static detection of race conditions and deadlocks , 2003, SOSP '03.

[9]  Yannis Smaragdakis,et al.  Sound predictive race detection in polynomial time , 2012, POPL '12.

[10]  Rupak Majumdar,et al.  Race detection for Android applications , 2014, PLDI.

[11]  Lee G. Cooper,et al.  Market-Share Analysis , 1988 .

[12]  Jeffrey S. Foster,et al.  LOCKSMITH: context-sensitive correlation analysis for race detection , 2006, PLDI '06.

[13]  Stephen N. Freund,et al.  FastTrack: efficient and precise dynamic race detection , 2009, PLDI '09.

[14]  W. K. Chan,et al.  LOFT: Redundant Synchronization Event Removal for Data Race Detection , 2011, 2011 IEEE 22nd International Symposium on Software Reliability Engineering.

[15]  Dinghao Wu,et al.  KISS: keep it simple and sequential , 2004, PLDI '04.

[16]  Hridesh Rajan,et al.  Implicit invocation meets safe, implicit concurrency , 2010, GPCE '10.

[17]  Nenad Medvidovic,et al.  Identifying message flow in distributed event-based systems , 2013, ESEC/FSE 2013.

[18]  Alexander Aiken,et al.  Effective static race detection for Java , 2006, PLDI '06.

[19]  Gregg Rothermel,et al.  Computation of interprocedural control dependence , 1998, ISSTA '98.

[20]  Yan Wang,et al.  Static Control-Flow Analysis of User-Driven Callbacks in Android Applications , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[21]  Reinhard Gotzhein,et al.  Increasing the Concurrency in Estelle , 1993, FORTE.

[22]  Alfonso Fuggetta,et al.  The JEDI Event-Based Infrastructure and Its Application to the Development of the OPSS WFMS , 2001, IEEE Trans. Software Eng..

[23]  Anne-Marie Kermarrec,et al.  The many faces of publish/subscribe , 2003, CSUR.

[24]  Satish Narayanasamy,et al.  Race detection for event-driven mobile applications , 2014, PLDI.

[25]  Gero Mühl,et al.  Large-scale content based publish, subscribe systems , 2002 .

[26]  Michael Burrows,et al.  Eraser: a dynamic data race detector for multithreaded programs , 1997, TOCS.

[27]  Yuriy Brun,et al.  Automatic mining of specifications from invocation traces and method invariants , 2014, SIGSOFT FSE.

[28]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[29]  Nenad Medvidovic,et al.  On the role of middleware in architecture-based software development , 2002, SEKE '02.

[30]  Xiangyu Zhang,et al.  Static detection of resource contention problems in server-side scripts , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[31]  Hans-J. Boehm Position paper: nondeterminism is unavoidable, but data races are pure evil , 2012, RACES '12.

[32]  Richard N. Taylor,et al.  A language and environment for architecture-based software development and evolution , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[33]  Satish Narayanasamy,et al.  Automatically classifying benign and harmful data races using replay analysis , 2007, PLDI '07.

[34]  Jong-Deok Choi,et al.  Hybrid dynamic data race detection , 2003, PPoPP '03.

[35]  Peter R. Pietzuch,et al.  Distributed event-based systems , 2006 .

[36]  Manu Sridharan,et al.  Race detection for web applications , 2012, PLDI.

[37]  Mattia Monga,et al.  On Race Vulnerabilities in Web Applications , 2008, DIMVA.

[38]  Richard N. Taylor,et al.  A Component- and Message-Based Architectural Style for GUI Software , 1995, 1995 17th International Conference on Software Engineering.

[39]  Manu Sridharan,et al.  Effective race detection for event-driven programs , 2013, OOPSLA.

[40]  Damien Zufferey,et al.  P: safe asynchronous event-driven programming , 2013, PLDI.