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.
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)
B. Folliot, I. Piumarta, and F. Riccardi. Proceedings of the 8th ACM SIGOPS European workshop on Support for composing distributed applications, page 175--181. New York, NY, USA, ACM, (1998)
S. Lauterburg, M. Dotta, D. Marinov, and G. Agha. 2009 IEEE/ACM International Conference on Automated Software Engineering, page 468--479. (November 2009)
N. Geoffray, G. Thomas, C. Clément, and B. Folliot. PPPJ '08: Proceedings of the 6th international symposium on Principles and practice of programming in Java, page 73--82. New York, NY, USA, ACM, (2008)
L. Smith, J. Bull, and J. Obdrzálek. Supercomputing '01: Proceedings of the 2001 ACM/IEEE conference on Supercomputing (CDROM), page 8--8. New York, NY, USA, ACM, (2001)
V. Saraswat, R. Jagadeesan, M. Michael, and C. von Praun. PPoPP '07: Proceedings of the 12th ACM SIGPLAN symposium on Principles and practice of parallel programming, page 161--172. New York, NY, USA, ACM, (2007)
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)
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)
E. Hilsdale, and J. Hugunin. Proceedings of the 3rd international conference on Aspect-oriented software development, page 26--35. New York, NY, USA, ACM, (2004)
N. Beckman, D. Kim, and J. Aldrich. ECOOP 2011 – Object-Oriented Programming, volume 6813 of Lecture Notes in Computer Science, Springer Berlin Heidelberg, (2011)
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)
S. Lauterburg, R. Karmani, D. Marinov, and G. Agha. Proceedings of the Eighteenth ACM SIGSOFT International Symposium on Foundations of Software Engineering, page 363--364. New York, NY, USA, ACM, (2010)
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.
Y. Hayduk, A. Sobe, and P. Felber. Distributed Applications and Interoperable Systems, volume 9038 of Lecture Notes in Computer Science, Springer, (2015)
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)
D. Costa, A. Andrzejak, J. Seboek, and D. Lo. Proceedings of the 8th ACM/SPEC on International Conference on Performance Engineering, page 389--400. New York, NY, USA, ACM, (2017)
T. Mytkowicz, A. Diwan, M. Hauswirth, and P. Sweeney. Proceedings of the 31st ACM SIGPLAN Conference on Programming Language Design and Implementation, page 187--197. ACM, (June 2010)
T. Würthinger. Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion, page 41--42. New York, NY, USA, ACM, (2011)
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)
M. De Wael, S. Marr, and T. Van Cutsem. Proceedings of the 2014 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools, page 39--50. (September 2014)(acceptance rate 39%).
H. Masuhara, and A. Yonezawa. International Colloquium on Partial Evaluation and Program Transformation (PE Day'99), page 83--102. Waseda University, Tokyo, Japan, (November 1999)
A. Azevedo, A. Kejariwal, A. Veidenbaum, and A. Nicolau. EMSOFT '05: Proceedings of the 5th ACM international conference on Embedded software, page 52--61. New York, NY, USA, ACM, (2005)
J. Roemer, K. Genc, and M. Bond. Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation, page 374--389. ACM, (2018)
A. Shali, and W. Cook. Proceedings of the 2011 ACM International Conference on Object Oriented Programming Systems Languages and Applications, page 375--390. ACM, (2011)
M. Bebenita, A. Gal, and M. Franz. PPPJ '07: Proceedings of the 5th international symposium on Principles and practice of programming in Java, page 145--154. New York, NY, USA, ACM, (September 2007)
P. Welch, N. Brown, J. Moores, K. Chalmers, and B. Sputh. Communicating Process Architectures 2007CPA, volume 65 of Concurrent Systems Engineering Series, page 349--370. IOS Press, (2007)