Finding errors in multithreaded GUI applications

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
Date or Month PublishedJuly 17–19
Conference LocationMinneapolis, MN, USA
Abstract<p>To keep a Graphical User Interface (GUI) responsive and active, a GUI application often has a main <em>UI thread</em> (or <em>event dispatching thread</em>) 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 <em>invalid thread access</em> error occurs and the whole application may abort. </p> <p> This paper presents a general technique to find such <em>invalid thread access</em> 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. </p> <p> 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.</p>
Downloadsimplementation
Citation KeyZhangLE2012
Last changed Mon, 2013-06-03 10:27