mozilla/servo — pull request #1415 by dhedlund (2013-12-15 06:10:52+00:00)
Title: Drain compositor_chan on shutdown, causes deadlocks on constellation

Constellation blocks on SetId by sending a Port through the compositor channel and waits for a response. If the compositor is in the process of shutting down, it will not look in the queue again. The compositor requires the constellation to be shut down first, so it sends a message to shut down and blocks until the constellation finishes, deadlocking.

Only very short lived executions would've been likely to see this deadlock.

_It is technically still possible to trigger a SetId message between when the compositor finishes running and when the constellation shuts down, but the window for exposure is greatly reduced. I've only seen it with "-o" so far._