Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/1352592.1352612acmconferencesArticle/Chapter ViewAbstractPublication PageseurosysConference Proceedingsconference-collections
research-article

Hang analysis: fighting responsiveness bugs

Published: 01 April 2008 Publication History

Abstract

Soft hang is an action that was expected to respond instantly but instead drives an application into a coma. While the application usually responds eventually, users cannot issue other requests while waiting. Such hang problems are widespread in productivity tools such as desktop applications; similar issues arise in server programs as well. Hang problems arise because the software contains blocking or time-consuming operations in graphical user interface (GUI) and other time-critical call paths that should not.
This paper proposes HangWiz to find hang bugs in source code, which are difficult to eliminate before release by testing, as they often depend on a user's environment. HangWiz finds hang bugs by finding hang points: an invocation that is expected to complete quickly, such as a GUI action, but calls a blocking function. HangWiz collects hang patterns from runtime traces supplemented with expert knowledge, and feed these patterns into a static analysis framework that searches exhaustively for hang points that involve potential hang bugs.
Experiments with several large, real-world software packages (including a source control client, a graphics editor and a web server) show that there are several hang bugs in these applications, and that HangWiz is effective in finding them. The experiments also demonstrate that HangWiz is scalable and can analyze millions of lines of code. We further discuss related techniques and report our experience on fixing hang bugs.

References

[1]
Phoenix compiler framework. http://research.microsoft.com/phoenix/.
[2]
M. K. Aguilera, J. C. Mogul, J. L. Wiener, P. Reynolds, and A. Muthitacharoen. Performance debugging for distributed systems of black boxes. In ACM Symposium on Operating Systems Principles (SOSP'03), 2003.
[3]
Z. Anderson, E. Brewer, J. Condit, R. Ennals, D. Gay, M. Harren, G. C. Necula, and F. Zhou. Beyond bug-finding: Sound program analysis for Linux. In Workshop on Hot Topics in Operating Systems (HotOS XI), 2007.
[4]
T. Ball, E. Bounimova, B. Cook, V. Levin, J. Lichtenberg, C. McGarvey, B. Ondrusek, S. K. Rajamani, and A. Ustuner. Thorough static analysis of device drivers. In ACM SIGOPS European Conference on Computer Systems (EuroSys'06), 2006.
[5]
T. Ball and S. K. Rajamani. The SLAM project: Debugging system software via static analysis. In ACM SIGPLAN-SIGACT Conference on Principles of Programming Languages (POPL'02), 2002.
[6]
P. Barham, A. Donnelly, R. Isaacs, and R. Mortier. Using Magpie for request extraction and workload modelling. In USENIX Symposium on Operating Systems Design and Implementation (OSDI'04), 2004.
[7]
S. Basu, J. Dunagan, and G. Smith. Why did my PC suddenly slow down? In Workshop on Tackling Computer Systems Problems with Machine Learning Techniques (SysML'07), 2007.
[8]
R. E. Bryant. Graph-based algorithms for Boolean function manipulation. IEEE Transactions on Computers, 35(8):677--691, 1986.
[9]
A. Chanda, A. Cox, and W. Zwaenepoel. Whodunit: Transactional profiling for multi-tier applications. In ACM SIGOPS European Conference on Computer Systems (EuroSys'07), 2007.
[10]
M. Y. Chen, A. Accardi, E. K1c1man, J. Lloyd, D. Patterson, A. Fox, and E. Brewer. Path-based failure and evolution management. In USENIX Symposium on Networked Systems Design and Implementation (NSDI'04), 2004.
[11]
B. Cook, A. Podelski, and A. Rybalchenko. Termination proofs for systems code. In ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'06), 2006.
[12]
B. Cook, A. Podelski, and A. Rybalchenko. Proving thread termination. In ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'07), 2007.
[13]
M. Das, S. Lerner, and M. Seigle. ESP: Path-sensitive program verification in polynomial time. In ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'02), 2002.
[14]
I. Dillig, T. Dillig, and A. Aiken. Static error detection using semantic inconsistency inference. In ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'07), 2007.
[15]
K. Elmeleegy, A. Chanda, A. L. Cox, and W. Zwaenepoel. Lazy asynchronous I/O for event-driven servers. In USENIX Annual Technical Conference (USENIX'04), 2004.
[16]
Y. Endo and M. Seltzer. Improving interactive performance using TIPME. In ACM SIGMETRICS International Conference on Measurement and Modeling of Computer Systems (SIGMETRICS'00), 2000.
[17]
D. Engler and K. Ashcraft. RacerX: Effective, static detection of race conditions and deadlocks. In ACM Symposium on Operating Systems Principles (SOSP'03), 2003.
[18]
D. Engler, D. Y. Chen, S. Hallem, A. Chou, and B. Chelf. Bugs as deviant behavior: A general approach to inferring errors in systems code. In ACM Symposium on Operating Systems Principles (SOSP'01), 2001.
[19]
P. Godefroid, M. Y. Levin, and D. Molnar. Automated whitebox fuzz testing. In ISOC Network and Distributed System Security Symposium (NDSS'08), 2008.
[20]
Z. Guo, X. Wang, X. Liu, W. Lin, and Z. Zhang. BOX: Icing the APIs. Technical Report MSR-TR-2008-03, Microsoft, 2008.
[21]
Z. Guo, X. Wang, X. Liu, W. Lin, and Z. Zhang. Towards pragmatic library-based replay. Technical Report MSR-TR-2008-02, Microsoft, 2008.
[22]
B. Hackett, M. Das, D. Wang, and Z. Yang. Modular checking for buffer overflows in the large. In International Conference on Software Engineering (ICSE'06), 2006.
[23]
S. Hallem, B. Chelf, Y. Xie, and D. Engler. A system and language for building system-specific, static analyses. In ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'02), 2002.
[24]
T. A. Henzinger, R. Jhala, R. Majumdar, and G. Sutre. Lazy abstraction. In ACM SIGPLAN-SIGACT Conference on Principles of Programming Languages (POPL'02), 2002.
[25]
D. Hovemeyer and W. Pugh. Finding more null pointer bugs, but not too many. In ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE'07), 2007.
[26]
M. S. Lam, J. Whaley, V. B. Livshits, M. C. Martin, D. Avots, M. Carbin, and C. Unkel. Context-sensitive program analysis as database queries. In SIGMOD-SIGACT-SIGART Symposium on Principles of Database Systems (PODS'05), 2005.
[27]
J. R. Larus, T. Ball, M. Das, R. DeLine, M. Fahndrich, J. Pincus, S. K. Rajamani, and R. Venkatapathy. Righting software. IEEE Software, 21(3):92--100, 2004.
[28]
X. Liu, Z. Guo, X. Wang, F. Chen, X. Lian, J. Tang, M. Wu, and Z. Zhang. D3S: Debugging deployed distributed systems. In USENIX Symposium on Networked Systems Design and Implementation (NSDI'08), 2008.
[29]
V. B. Livshits, J. Whaley, and M. S. Lam. Reflection analysis for Java. In Asian Symposium on Programming Languages and Systems (APLAS'05), 2005.
[30]
G. Maffeo and P. Sliwowicz. Win32 I/O cancellation support in Windows Vista. http://msdn2.microsoft.com/en-us/library/aa480216.aspx, 2005.
[31]
M. Martin, V. B. Livshits, and M. S. Lam. Finding application errors and security flaws using PQL: a program query language. In ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA'05), 2005.
[32]
V. S. Pai, P. Druschely, and W. Zwaenepoely. Flash: An efficient and portable Web server. In USENIX Annual Technical Conference (USENIX'99), 1999.
[33]
D. Pariag, T. Brecht, A. Harji, P. Buhr, A. Shukla, and D. R. Cheriton. Comparing the performance of web server architectures. In ACM SIGOPS European Conference on Computer Systems (EuroSys'07), 2007.
[34]
T. Reps. Demand interprocedural program analysis using logic databases. In R. Ramakrishnan, editor, Applications of Logic Databases. Kluwer Academic Publishers, 1994.
[35]
U. Shankar, K. Talwar, J. S. Foster, and D. Wagner. Detecting format-string vulnerabilities with type qualifiers. In USENIX Security Symposium (Security'01), 2001.
[36]
J. D. Ullman. Principles of Database and Knowledge-Base Systems, volume II. Computer Science Press, 1989.
[37]
H. J. Wang, J. C. Platt, Y. Chen, R. Zhang, and Y.-M. Wang. Automatic misconfiguration troubleshooting with PeerPressure. In USENIX Symposium on Operating Systems Design and Implementation (OSDI'04), 2004.
[38]
G. Wassermann and Z. Su. Sound and precise analysis of Web applications for injection vulnerabilities. In ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'07), 2007.
[39]
J. Whaley. Context-Sensitive Pointer Analysis using Binary Decision Diagrams. PhD thesis, Stanford University, 2007.
[40]
J. Whaley and M. S. Lam. Cloning-based context-sensitive pointer alias analysis using binary decision diagrams. In ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'04), 2004.
[41]
A. Williams, W. Thies, and M. D. Ernst. Static deadlock detection for Java libraries. In European Conference on Object-Oriented Programming (ECOOP'05), 2005.
[42]
Y. Xie and A. Aiken. Scalable error detection using Boolean satisfiability. In ACM SIGPLAN Symposium on Principles of Programming Languages (POPL'05), 2005.
[43]
C. Yuan, N. Lao, J.-R. Wen, J. Li, Z. Zhang, Y.-M. Wang, and W.-Y. Ma. Automated known problem diagnosis with event traces. In ACM SIGOPS European Conference on Computer Systems (EuroSys'06), 2006.
[44]
N. Zeldovich, A. Yip, F. Dabek, R. T. Morris, D. Maziéresy, and M. F. Kaashoek. Multiprocessor support for event-driven programs. In USENIX Annual Technical Conference (USENIX'03), 2003.
[45]
F. Zhou, J. Condit, Z. Anderson, I. Bagrak, R. Ennals, M. Harren, G. Necula, and E. Brewer. SafeDrive: Safe and recoverable extensions using language-based techniques. In USENIX Symposium on Operating System Design and Implementation (OSDI'06), 2006.

Cited By

View all

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
Eurosys '08: Proceedings of the 3rd ACM SIGOPS/EuroSys European Conference on Computer Systems 2008
April 2008
346 pages
ISBN:9781605580135
DOI:10.1145/1352592
  • cover image ACM SIGOPS Operating Systems Review
    ACM SIGOPS Operating Systems Review  Volume 42, Issue 4
    EuroSys '08
    May 2008
    321 pages
    ISSN:0163-5980
    DOI:10.1145/1357010
    Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 April 2008

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. blocking invocation
  2. hang
  3. interactive performance
  4. program analysis
  5. responsive invocation
  6. responsiveness

Qualifiers

  • Research-article

Conference

Eurosys '08
Sponsor:
Eurosys '08: Eurosys 2008 Conference
April 1 - 4, 2008
Glasgow, Scotland UK

Upcoming Conference

EuroSys '25
Twentieth European Conference on Computer Systems
March 30 - April 3, 2025
Rotterdam , Netherlands

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)15
  • Downloads (Last 6 weeks)3
Reflects downloads up to 14 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2023)An Empirical Study on Quality Issues of Deep Learning PlatformProceedings of the 45th International Conference on Software Engineering: Software Engineering in Practice10.1109/ICSE-SEIP58684.2023.00052(455-466)Online publication date: 17-May-2023
  • (2020)HangFixProceedings of the 11th ACM Symposium on Cloud Computing10.1145/3419111.3421288(344-357)Online publication date: 12-Oct-2020
  • (2018)Hang doctorProceedings of the Thirteenth EuroSys Conference10.1145/3190508.3190525(1-15)Online publication date: 23-Apr-2018
  • (2017)GUI-Profiling for Performance and Coverage Analysis2017 IEEE International Symposium on Software Reliability Engineering Workshops (ISSREW)10.1109/ISSREW.2017.78(28-31)Online publication date: Oct-2017
  • (2015)Automatic Server Hang Bug DiagnosisProceedings of the 2015 IEEE International Conference on Autonomic Computing10.1109/ICAC.2015.52(127-132)Online publication date: 7-Jul-2015
  • (2014)What Bugs Live in the Cloud? A Study of 3000+ Issues in Cloud SystemsProceedings of the ACM Symposium on Cloud Computing10.1145/2670979.2670986(1-14)Online publication date: 3-Nov-2014
  • (2013)Context-sensitive delta inference for identifying workload-dependent performance bottlenecksProceedings of the 2013 International Symposium on Software Testing and Analysis10.1145/2483760.2483784(90-100)Online publication date: 15-Jul-2013
  • (2013)Anticrasher: Predicting and preventing impending crashes on runtime at user end2013 International Conference on Advances in Computing, Communications and Informatics (ICACCI)10.1109/ICACCI.2013.6637213(448-453)Online publication date: Aug-2013
  • (2012)What Is System Hang and How to Handle ItProceedings of the 2012 IEEE 23rd International Symposium on Software Reliability Engineering10.1109/ISSRE.2012.12(141-150)Online publication date: 27-Nov-2012
  • (2010)Performance Testing of GUI ApplicationsProceedings of the 2010 Third International Conference on Software Testing, Verification, and Validation Workshops10.1109/ICSTW.2010.27(247-251)Online publication date: 6-Apr-2010
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media