I recently diagnosed the root cause of a concurrency bug, CR6822370,
and thought it sufficiently interesting to share the details. (CR 6822370 actually represents a
cluster of bugs that are now thought to be related by a common underlying issue).
Briefly, we have a lost wakeup bug in the native C++ Parker::park() platform-specific
infrastructure code that implements java.util.concurrent.LockSupport.park().
The lost wakeup arises from a race that itself arises because of architectural
reordering that in turn occurs because of missing memory barrier instructions.
The lost wakeup may manifest as various 'hangs' or instances of progress failure.
In an earlier post I mentioned that one goal of the new introductory curriculum at Carnegie Mellon is to teach parallelism as the general case of computing, rather than an esoteric, specialized subject for advanced students. Many people are incredulous when I tell them this, because it immediately conjures in their mind the myriad complexities…
Program performance is always a concern, even in this era of high-performance hardware. This article, the first in a two-part series, guides you around the many pitfalls associated with benchmarking Java code. Part 2 covers the statistics of benchmarking and offers a framework for performing Java benchmarking. Because almost all new languages are virtual machine-based, the general principles the article describes have broad significance for the programming community at large.
Think writing a compiler is difficult? It is—unless you use Parrot, a complete compiler construction kit. With Parrot, crafting a new programming language is as easy as authoring a new website.
C. Kapser, and M. Godfrey. WCRE '06: Proceedings of the 13th Working Conference on Reverse Engineering
(WCRE 2006), page 19--28. Washington, DC, USA, David R. Cheriton School of Computer Science, University of Waterloo, IEEE Computer Society, (October 2006)
J. De Koster, T. Van Cutsem, and W. De Meuter. Proceedings of the 6th International Workshop on Programming Based on Actors, Agents, and Decentralized Control, page 31--40. ACM, (2016)
C. Béra, and E. Miranda. Proceedings of the 8th Edition of the International Workshop on Smalltalk Technologies, Prague, Czech Republic, (Aug 23, 2016)
A. Goens, A. Brauckmann, S. Ertel, C. Cummins, H. Leather, and J. Castrillon. Proceedings of the 3rd ACM SIGPLAN International Workshop on Machine Learning and Programming Languages, page 38–46. New York, NY, USA, Association for Computing Machinery, (2019)
M. Frumkin, M. Hribar, H. Jin, A. Waheed, and J. Yan. Supercomputing '98: Proceedings of the 1998 ACM/IEEE conference on Supercomputing (CDROM), page 1--22. Washington, DC, USA, IEEE Computer Society, (1998)
J. Moreira, S. Midkiff, and M. Gupta. Proceedings of the 2001 joint ACM-ISCOPE conference on Java Grande, page 116--125. New York, NY, USA, ACM, (2001)