TitleFinding errors in multithreaded GUI applications
Publication TypeConference Paper
Year of Publication2012
AuthorsZhang S, Lü H, Ernst MD
Conference NameISSTA 2012, Proceedings of the 2012 International Symposium on Software Testing and Analysis
Pagination243–253
Date or Month PublishedJuly
Conference LocationMinneapolis, MN, USA
AbstractTo keep a Graphical User Interface (GUI) responsive and active, a GUI application often has a main \textitUI thread (or \textitevent dispatching thread) and spawns separate threads to handle lengthy operations in the background, such as expensive computation, I/O tasks, and network requests. Many GUI frameworks require all GUI objects to be accessed exclusively by the UI thread. If a GUI object is accessed from a non-UI thread, an \textitinvalid thread access error occurs and the whole application may abort. \par This paper presents a general technique to find such \textitinvalid thread access errors in multithreaded GUI applications. We formulate finding invalid thread access errors as a call graph reachability problem with thread spawning as the sources and GUI object accessing as the sinks. Standard call graph construction algorithms fail to build a good call graph for some modern GUI applications, because of heavy use of reflection. Thus, our technique builds reflection-aware call graphs. \par We implemented our technique and instantiated it for four popular Java GUI frameworks: SWT, the Eclipse plugin framework, Swing, and Android. In an evaluation on 9 programs comprising 89273 LOC, our technique found 5 previously-known errors and 5 new ones.
Downloadshttps://github.com/zhang-sai/guierrordetector implementation https://homes.cs.washington.edu/~mernst/pubs/gui-thread-issta2012.pdf PDF https://homes.cs.washington.edu/~mernst/pubs/gui-thread-issta2012-slides... slides (PDF) https://homes.cs.washington.edu/~mernst/pubs/gui-thread-tr130401.pdf extended version (PDF)
Citation KeyZhangLE2012