Sometimes, varnishhtcpd will stop responding to HTCP requests due to unexplained thread corruption issues. In a recent example, the daemon was logging "Can't call method "accept" on an undefined value at /usr/local/bin/varnishhtcpd line 71" on purge requests. varnishhtcpd spawns worker threads, and apparently, sometimes the workers go on strike, and that's what the picket signs say. ;-)
A workaround that Asher proposes is to modify the daemon to kill itself when it gets in that state, which should cause upstart to respawn.
This problem was discovered in fixing the HTCP issues documented in the comments on bug 41130 (late December 2012 comments).