Home
General
Staff
Contact
Partners
Alumni
Research
Areas
Projects
Papers
Books
Reports
Awards
Teaching
Lectures
Exams
B.Theses
M.Theses
PhD Theses
Go Abroad
Misc
Talks
Library
Gallery
Links
Search
Webmaster
|
MetaConc Meta-Level Engineering and Tooling for Complex Concurrent Systems
This was a joint project between the Institute for System Software
at JKU, the Software Languages Lab at the Vrije
Universiteit Brussel, and the University of Kent (UK).
It was funded by the Austrian FWF and the Belgian
FWO and lasted from March 2016 to February 2021.
Multicore processors have become widely used for devices such as phones, tablets, and
high-end servers. As a result, concurrent programming has become more important and complex
software systems started to mix a wide range of concurrency models such as Shared Memory
(Thread & Locks, Fork/Join, Software Transactional Memory) and Message Passing (Actors,
Communicating Sequential Processes) to solve both functional and non-functional requirements.
Concurrency has, however, a pervasive influence on the correctness (race conditions,
deadlocks) and the performance (lock contention) of the whole system rather than
being nicely confined to subsystems. This makes concurrent programs hard to understand
and debug. Software tools for concurrent programs usually work on the lowest abstraction
level, e.g., memory accesses, instead of the high-level concurrency concepts.
To support the development of such complex systems, we developed a novel tracing approach as
well as a meta-level interface (API), which can capture the interaction among different
concurrency models to deliver the concepts needed to support tools such as debuggers or profilers.
The main research challenge was to identify a common meta-level interface that captures the
essential properties of multiple concurrency models, with a minimal performance overhead.
A second major challenge was to investigate tool support, in particular, debugging tools
that assist developers in finding errors and improving program comprehension. Classic
approaches can affect the way a program behaves. We worked on minimizing such interference
with program execution to avoid hiding concurrency issues.
As a result we devised and implemented
-
A novel and uniform tracing technique for multi-paradigm concurrent programs that
efficiently captures a program's high-level events (e.g., messages, transactions, locking)
and allows the user to replay the program with the same outcome as in the original execution.
The novel aspects are a uniform meta-level interface for different concurrency models and
a novel approach for ordering the events in order to overcome nondeterminism.
-
A uniform trace file format that is based on ordered events and allows different
concurrency models to use the same infrastructure for storing and retrieving event data.
-
A novel snapshotting technique that efficiently captures a concurrent program's state
in the background without halting its execution. Snapshotting allows the user to start
the replay of a concurrent program at points in time other than the beginning of the execution.
-
A prototype of a time-traveling debugger that makes use of our infrastructure to debug
and analyze multi-paradigm concurrent programs.
Tool Workflow
Our debugging tools are fully integrated into the SOMns language implementation.
Hence, it is not necessary to modify a program in any way to get debugging support for nondeterministic programs.
The workflow to achieve deterministic replay of a recorded execution is as follows:
-
To locate the root cause of a nondeterministic bug with our tool, one first needs to execute the program
under SOMns and to record a trace of the program's execution in which that bug occurs.
If the bug does not occur in every execution, it may be necessary to record multiple executions
to get a trace that contains the bug.
-
Once a trace that lead to the bug has been captured, the bug can be reproduced
deterministically by replaying the recorded execution.
-
By enabling the Kompos protocol, a compatible debugger such as our Kompos web debugger can be attached.
The SOMns VM collects additional information about the program execution, particularly concurrency models,
that are delivered to the debugger where they can be used for visualization and advanced debugger features for concurrency models.
For instance, the communication patterns between concurrent entities can be visualized,
and concurrency-model-specific stepping operations and breakpoints are made available.
-
While replaying the program execution, the program is explored to find the root cause of the bug.
A trace can be replayed arbitrarily often. This makes it possible to explore different areas of a program
and to start over if a wrong stepping operation was chosen.
-
Once the root cause of a nondeterministic bug was identified, all that remains is to fix it.
Downloads
Our implementation is publicly available on Github as part of SOMns.
Partners
MetaConc was a joint project of the Institute for System Software
at the Johannes Kepler Universität Linz, the Software Languages Lab
at the Vrije Universiteit Brussel, and the
at the University of Kent.
Funding
The project was funded by FWF Austria and FWO Flanders.
|
|
Project I 2491-N31
|
Project G004816N
|
Publications
-
Aumayr, D.; Marr, S.; Kaleba, S.; Gonzalez Boix, E.; Mössenböck, H.:
Capturing High-level Nondeterminism in Concurrent Programs for Practical Concurrency Model Agnostic Record & Replay.
The Art, Science, and Engineering of Programming, 2021, Vol. 5, Issue 3, Article 14.
-
Chari, G.; Garbervetsky, D.; Marr, S.; Ducasse, S.:
Fully Reflective Execution Environments: Virtual Machines for More Flexible Software
IEEE Transactions on Software Engineering, vol.45, no.9, 2019, pp.858-876.
DOI
-
Aumayr, D.:
Debugging support for multi-paradigm concurrent programs.
Doctoral Symposium at SPLASH'19, 20-25 October, 2019, Athens, Greece.
In SPLASH Companion Proceedings, 2019, pp.38-40.
-
Aumayr, D.; Marr, S.; Gonzalez Boix E.; Mössenböck, H.:
Asynchronous Snapshots of Actor Systems for Latency-Sensitive Applications
16th Intl. Conf. on Managed Programming Languages and Runtimes (MPLR'19), 20-25 October, 2019, Athens, Greece, pp.157–171.
-
Daloze, B.; Tal, A.; Marr, S.; Mössenböck, H.; Petrank, E.:
Parallelization of Dynamic Languages: Synchronizing Built-in Collections
Conf. on Object-Oriented Programming Systems, Languages, and Applications (SPLASH/OOPSLA'18), Nov 4-9, Boston, MA, USA.
In Proc. of the ACM on Programming Languages, Volume 2 Issue OOPSLA, November 2018, Article No. 108.
Archive
-
Torres Lopez, C.; Marr, S.; Gonzalez Boix, E.; Mössenböck, H.:
A Study of Concurrency Bugs and Advanced Development Support for Actor-based Programs
AGERE! workshop 2017, co-located with SPLASH'17, Oct.24, 2017, Vancouver, Canada, LNCS 10789, Springer-Verlag, 2018, pp.155-185.
-
Aumayr, D.; Marr, S.; Béra, C.; Gonzalez Boix, E.; Mössenböck, H.:
Efficient and Deterministic Record & Replay for Actor Languages
15th Int. Conf. on Managed Languages and Runtimes, ManLang'18, ACM, 2018, Article No. 15.
PDF.
-
Vandercammen, M.; Marr, S.; De Roover, C.:
A Flexible Framework for Studying Trace-Based Just-In-Time Compilation
Computer Languages, Systems & Structures, vol.51, no.C, 2017.
DOI.
-
Marr, S.; Torres Lopez, C.; Aumayr, D.; Gonzalez Boix, E.; Mössenböck, H.:
A Concurrency-Agnostic Protocol for Multi-Paradigm Concurrent Debugging Tools
13th ACM SIGPLAN Intl. Symp. on Dynamic Languages (DLS'17), Vancouver, Canada, Oct. 24, 2017, pp. 3-14.
PDF.
-
Pimás, J.; Burroni, J.; Arnaud, B.; Marr, S.:
Garbage Collection and Efficiency in Dynamic Metacircular Runtimes
13th ACM SIGPLAN Intl. Symp. on Dynamic Languages (DLS'17), Vancouver, Canada, Oct. 24, 2017, pp.39–50.
DOI.
-
Torres Lopez, C.; Gonzalez Boix, E.; Scholliers, C.; Marr, S.; Mössenböck, H.:
A Principled Approach towards Debugging Communicating Event-Loops
7th ACM SIGPLAN Intl. Workshop on Programming Based on Actors, Agents, and Decentralized Control, Vancouver, Canada, Oct.23-27, 2017, pp.41-49.
DOI.
-
Torres Lopez, C.:
Advanced Debugging Techniques to Identify Concurrency Bugs in Actor-based Programs
Doctoral Symposium, SPLASH Companion, ACM SIGPLAN Intl. Conf. on Systems, Programming, Languages, and Applications: Software for Humanity, October 2017, Vancouver, Canada, p. 13-15.
-
Grimmer, M.; Marr, S.; Kahlhofer, M.; Wimmer, C.; Würthinger, T.; Mössenböck, H.:
Applying Optimizations for Dynamically-typed Languages to Java
14th Intl. Conf. on Managed Languages & Runtimes (ManLang'17), Sept. 27-29, 2017, Prague, Czech Republic, pp.12-22.
DOI
-
Eisl, J.; Marr, S.; Würthinger, T.; Mössenböck, H.:
Trace Register Allocation Policies: Compile-time vs. Performance Trade-offs
14th Intl. Conf. on Managed Languages & Runtimes (ManLang'17), Sept. 27-28, 2017, Prague, Czech Republic, pp.92-104.
DOI.
-
G. Chari, D. Garbervetsky, S. Marr:
A Metaobject Protocol for Optimizing Application-Specific Run-Time Variability
Position Paper, 11th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (ICOOOLPS '17), June 19, 2017, Barcelona, Spain, 5 pages.
DOI.
-
Chari, G.; Garbervetsky, D.; Marr, S.:
Fully-reflective VMs for Ruling Software Adaptation
Poster, 39th Intl. Conf. on Software Engineering Companion (ICSE-C '17), Buenos Aires, Argentina, May 20-28, 2017, p.229–231.
DOI.
-
Marr, S.; Torres Lopez, C.; Aumayr, D.; Gonzalez Boix, E.; Mössenböck, H.:
Kómpos: A Platform for Debugging Complex Concurrent Applications
Demo, Intl. Conf. on the Art, Science, and Engineering of Programming (Programming'17), April 2017, Brussels, Belgium, p.2.
PDF.
-
Roberts, R.; Marr, S.; Homer, M.; Noble, J.:
Toward Virtual Machine Adaption Rather than Reimplementation: Adapting SOMns for Grace
Extended Abstract, Workshop on Modern Language Runtimes, Ecosystems, and VMs (MoreVMs'17), April 3-6, 2017, Brussels, Belgium.
PDF.
-
Bonetta, D.; Salucci, L.; Marr, S.; Binder, W.:
GEMs: Shared-memory Parallel Programming for Node.js
ACM SIGPLAN Intl. Conf. on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA'16), Amsterdam, Netherlands, Nov.2 - Nov.4, 2016, pp.531–547.
-
Daloze, B.; Marr, S.; Bonetta, D.; Mössenböck, H.:
Efficient and Thread-Safe Objects for Dynamically-Typed Languages
ACM SIGPLAN Intl. Conf. on Object Oriented Programming Systems Languages & Applications (OOPSLA'16), Amsterdam, Netherlands, Nov.2 - Nov.4, 2016, pp.642–659.
Archive.
-
Chari, G.; Garbervetsky, D.; Marr, S.:
Building Efficient and Highly Run-time Adaptable Virtual Machines
12th Symp. on Dynamic Languages (DLS'16), November 1, 2016, Amsterdam, The Netherlands, SIGPLAN Notices, vol.52, no.2, pp.60–71
DOI.
-
Marr, S.; Daloze, B.; Mössenböck, H.:
Cross-Language Compiler Benchmarking: Are We Fast Yet?
12th Symp. on Dynamic Languages (DLS'16), November 1, 2016, Amsterdam, The Netherlands, SIGPLAN Notices, vol.52, no.2, pp.pp 120–131.
DOI.
-
Torres Lopez, C.; Marr, S.; Mössenböck, H.; Gonzalez Boix, E.:
Towards Advanced Debugging Support for Actor Languages: Studying Concurrency Bugs in Actor-based Programs
WIP Talk, 6th Intl. AGERE! Workshop on Programming based on Actors, Agents, and Decentralized Control, October 30, 2016, Amsterdam, The Netherlands.
PDF.
-
Marr, S.; Gonzalez Boix, E.; Mössenböck, H.:
Towards Meta-Level Engineering and Tooling for Complex Concurrent Systems
Position paper, 9. Arbeitstagung Programmiersprachen (ATPS’ 16), February 25-26, 2016, Vienna, Austria, CEUR-WS, vol. 1559, pp. 91-95.
CEUR.
|