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.
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.
B. Dufour, K. Driesen, L. Hendren, and C. Verbrugge. Proceedings of the 18th Annual ACM SIGPLAN Conference on Object-oriented Programing, Systems, Languages, and Applications, page 149--168. ACM, (2003)
P. Hofer, F. Hörschläger, and H. Mössenböck. Proceedings of the 6th ACM/SPEC International Conference on Performance Engineering, page 87--90. ACM, (2015)
Y. Hayduk, A. Sobe, and P. Felber. Distributed Applications and Interoperable Systems, volume 9038 of Lecture Notes in Computer Science, Springer, (2015)
B. Claudel, Q. Sabah, and J. Stefani. Formal Techniques for Distributed Objects, Components, and Systems, volume 9039 of Lecture Notes in Computer Science, Springer, (2015)
C. Häubl, C. Wimmer, and H. Mössenböck. Computer Languages, Systems & Structures, 39 (4):
123 - 141(2013)Special issue on the Programming Languages track at the 27th \ACM\ Symposium on Applied Computing.
P. Lengauer, V. Bitto, and H. Mössenböck. Proceedings of the 6th ACM/SPEC International Conference on Performance Engineering, page 51--62. ACM, (2015)
T. Würthinger, M. Van De Vanter, and D. Simon. Perspectives of Systems Informatics, volume 5947 of Lecture Notes in Computer Science, Springer Berlin Heidelberg, (2010)
G. Pothier, \. Tanter, and J. Piquer. Proceedings of the 22Nd Annual ACM SIGPLAN Conference on Object-oriented Programming Systems and Applications, page 535--552. ACM, (2007)
A. Welc, S. Jagannathan, and A. Hosking. Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, page 439--453. ACM, (2005)
J. Zhao, R. Lublinerman, Z. Budimlić, S. Chaudhuri, and V. Sarkar. Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages &\#38; Applications, page 571--588. ACM, (2013)
C. Wimmer, S. Brunthaler, P. Larsen, and M. Franz. Proceedings of the 11th Annual International Conference on Aspect-oriented Software Development, page 203--214. New York, NY, USA, ACM, (2012)
H. Inoue, H. Hayashizaki, P. Wu, and T. Nakatani. Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, page 179--194. New York, NY, USA, ACM, (2012)
A. Wöß, C. Wirth, D. Bonetta, C. Seaton, C. Humer, and H. Mössenböck. Proceedings of the 2014 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools, page 133--144. ACM, (2014)
M. Braux, and J. Noyé. Proceedings of the 2000 ACM SIGPLAN Workshop on Partial Evaluation and Semantics-based Program Manipulation, page 2--11. ACM, (1999)