Finding errors in multithreaded GUI applications
Submitted by mernst on Tue, 2012-05-15 14:53
| Title | Finding errors in multithreaded GUI applications |
| Publication Type | Conference Paper |
| Year of Publication | 2012 |
| Authors | Zhang S, Lü H, Ernst MD |
| Conference Name | ISSTA 2012, Proceedings of the 2012 International Symposium on Software Testing and Analysis |
| Date or Month Published | July 17–19 |
| Conference Location | Minneapolis, 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> |
| Downloads | implementation |
| Citation Key | ZhangLE2012 |
Last changed Mon, 2013-06-03 10:27

cs.