[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.5555/3155562.3155696guideproceedingsArticle/Chapter ViewAbstractPublication PagesaseConference Proceedingsconference-collections
Article
Free access

Characterizing and taming non-deterministic bugs in JavaScript applications

Published: 30 October 2017 Publication History

Abstract

JavaScript has become one of the most popular programming languages for both client-side and server-side applications. In JavaScript applications, events may be generated, triggered and consumed non-deterministically. Thus, JavaScript applications may suffer from non-deterministic bugs, when events are triggered and consumed in an unexpected order. In this proposal, we aim to characterize and combat non-deterministic bugs in JavaScript applications. Specifically, we first perform a comprehensive study about real-world non-deterministic bugs in server-side JavaScript applications. In order to facilitate bug diagnosis, we further propose approaches to isolate the necessary events that are responsible for the occurrence of a failure. We also plan to design new techniques in detecting non-deterministic bugs in JavaScript applications.

References

[1]
“Developer Survey Results 2016.” {Online}. Available: http://stackoverflow.com/research/developer-survey-2016.
[2]
“New Node.js Foundation Survey Reports New ‘Full Stack’ In Demand Among Enterprise Developers.” {Online}. Available: https://nodejs.org/uk/blog/announcements/nodejs-foundation-survey/.
[3]
J. Mickens, J. Elson, and J. Howell, “Mugshot : Deterministic Capture and Replay for JavaScript Applications,” in Proceedings of the USENIX Conference on Networked Systems Design and Implementation(NSDI), 2010, pp. 159–174.
[4]
J. Davis, A. Thekumparampil, and D. Lee, “Node.fz: Fuzzing the Server-Side Event-Driven Architecture,” in Proceedings of the European Conference on Computer Systems(EuroSys), 2017, pp. 145–160.
[5]
J. Wang, W. Dou, G. Yu, G. Chushu, Q. Feng, and W. Jun, “A Comprehensive Study on Real World Concurrency Bugs in Node.js,” in Proceedings of the IEEE/ACM International Conference on Automated Software Engineering (ASE), 2017.
[6]
J. Wang, W. Dou, C. Gao, and J. Wei, “Fast Reproducing Web Application Errors,” in Preceedings of International Symposium on Software Reliability Engineering(ISSRE), 2015, pp. 530–540.
[7]
J. Wang, “Constraint-Based Event Trace Reduction,” in Preceedings of ACM SIGSOFT International Symposium on the Foundations of Software Engineering(FSE16-SRC), 2016, pp. 1106–1108.
[8]
F. S. Ocariza, K. Pattabiraman, and B. Zorn, “JavaScript Errors in the Wild: An Empirical Study,” in Proceedings of International Symposium on Software Reliability Engineering(ISSRE), 2011, pp. 100–109.
[9]
F. S. Ocariza, K. Bajaj, K. Pattabiraman, and A. Mesbah, “A Study of Causes and Consequences of Client-Side JavaScript Bugs,” IEEE Transactions on Software Engineering (TSE), vol. 43, no. 2, pp. 128–144, 2016.
[10]
F. Ocariza, K. Bajaj, K. Pattabiraman, and A. Mesbah, “An Empirical Study of Client-side JavaScript Bugs,” in Preceedings of the International Symposium on Empirical Software Engineering and Measurement(ESEM), 2013, pp. 55–64.
[11]
S. Lu, S. Park, E. Seo, and Y. Zhou, “Learning from Mistakes - A Comprehensive Study on Real World Concurrency Bug Characteristics,” in Proceedings of the International Conference on Architectural Support for Programming Languages and Operating Systems(ASPLOS), 2008, pp. 329–339.
[12]
T. Leesatapornwongsa, J. F. Lukman, S. Lu, and H. S. Gunawi, “TaxDC:A Taxonomy of Non-Deterministic Concurrency Bugs in Datacenter Distributed Systems,” in Proceedings of the International Conference on Architectural Support for Programming Languages and Operating Systems(ASPLOS), 2016, pp. 517–530.
[13]
P. Bielik, V. Raychev, and M. Vechev, “Scalable Race Detection for Android Applications,” in Proceedings of the ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications(OOPSLA), 2015, pp. 332–348.
[14]
C.-H. Hsiao, J. Yu, S. Narayanasamy, Z. Kong, C. L. Pereira, G. A. Pokam, P. M. Chen, and J. Flinn, “Race Detection for Event-driven Mobile Applications,” ACM SIGPLAN Notices, vol. 49, no. 6, pp. 326– 336, 2014.
[15]
B. Petrov, M. Vechev, M. Sridharan, and J. Dolby, “Race Detection for Web Applications,” in Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), 2012, pp. 251–262.
[16]
W. Wang, Y. Zheng, P. Liu, L. Xu, X. Zhang, and P. Eugster, “ARROW : Automated Repair of Races on Client-Side Web Pages,” in Proceedings of the International Symposium on Software Testing and Analysis(ISSTA), 2016, pp. 201–212.
[17]
Y. Zheng and X. Zhang, “Static Detection of Resource Contention Problems in Server-Side Scripts,” in Proceedings of the International Conference on Software Engineering (ICSE), 2012, pp. 584–594.
[18]
K. H. Lee, Y. Zheng, N. Sumner, and X. Zhang, “Toward Generating Reducible Replay Logs,” in Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), 2011, pp. 246–257.
[19]
X. Zhang, S. Tallam, and R. Gupta, “Dynamic Slicing Long Running Programs Through Execution Fast Forwarding,” in Proceedings of ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE), 2006, pp. 81–91.
[20]
A. Zeller and R. Hildebrandt, “Simplifying and Isolating Failure-inducing Input,” IEEE Transactions on Software Engineering (TSE), vol. 28, no. 2, pp. 183–200, 2002.
[21]
G. Misherghi and Z. Su, “HDD: Hierarchical Delta Debugging,” in Proceedings of the International Conference on Software Engineering(ICSE), 2006, pp. 142–151.
[22]
M. Hammoudi, B. Burg, G. Bae, and G. Rothermel, “On the Use of Delta Debugging to Reduce Recordings and Facilitate Debugging of Web Applications,” in Proceedings of Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software (ESEC/FSE), 2015, pp. 333–344.
[23]
G. Pinto, W. Torres, and F. Castor, “A Study on the Most Popular Questions about Concurrent Programming,” in Proceedings of the Workshop on Evaluation and Usability of Programming Languages and Tools, 2015, pp. 39–46.
[24]
M. Yu, Y.-S. Ma, and D.-H. Bae, “Characterizing Non-deadlock Concurrency Bug Fixes in Open-source Java Programs,” in Proceedings of the Annual ACM Symposium on Applied Computing(SAC), 2016, pp. 1534–1537.
[25]
G. Li, E. Andreasen, and I. Ghosh, “SymJS: Automatic Symbolic Testing of JavaScript Web Applications,” in Proceedings of the ACM SIGSOFT International Symposium on Foundations of Software Engineering(FSE), 2014, pp. 449–459.

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image Guide Proceedings
ASE '17: Proceedings of the 32nd IEEE/ACM International Conference on Automated Software Engineering
October 2017
1033 pages
ISBN:9781538626849

Sponsors

Publisher

IEEE Press

Publication History

Published: 30 October 2017

Author Tags

  1. JavaScript
  2. Node.js
  3. bug detection
  4. empirical study
  5. non-deterministic bug
  6. record and replay

Qualifiers

  • Article

Acceptance Rates

Overall Acceptance Rate 82 of 337 submissions, 24%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 219
    Total Downloads
  • Downloads (Last 12 months)81
  • Downloads (Last 6 weeks)7
Reflects downloads up to 05 Jan 2025

Other Metrics

Citations

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media