O problema acabou sendo o modo como eu escrevia o código do aplicativo da Web Node.js, usando caminhos relativos ao script de aplicativo da Web que quebrou quando executado por upstart.
Eu adicionei __dirname + "/"
e as falhas silenciosas se tornaram sucessos discretos.