GUI threading, explained and verified

Michael D. Ernst

A GUI application uses an event thread for the UI and worker threads for computation. If a worker thread modifies a UI object, the application crashes! Accessing the UI from a worker thread is one of the three most common errors in GUIs.

This talk will explain why this happens and what you can do about it. We will present an approach to reasoning about threading, based on an effect system that estimates side effects (like a type system estimates values).

We will demo a new open-source tool that implements a GUI effect system in an unobtrusive way. This tool runs at compile time and guarantees the absence of these errors. It requires only a small number of annotations that mirror the documentation that programmers already write.


Michael Ernst

Michael Ernst loves programmers and wants to make their lives better. He builds programming tools and was the specification lead for JSR-308, which extended Java’s annotation syntax.

As a professor at the University of Washington, his research aims to make software more reliable, more secure, and easier (and more fun!) to produce. Ernst’s research combines strong theoretical foundations with realistic experimentation, with an eye to changing the way that software developers work.
He publishes in software engineering, programming languages, type theory, security, program analysis, bug prediction, testing, and verification.

Dr. Ernst was previously a developer at Microsoft, a researcher at Microsoft Research, and a tenured professor at MIT.

Powerpoint Slides

View Fullscreen