upstart will close (and reopen) its log file when it notices that the file is deleted. However, if you look at what gzip does, you see that it doesn't delete the file until after it's one writing the output file. That means that there always is a race condition where...
gzip: stdin: file size changed while zipping This is caused by a logrotate definition using “compress” without “delaycompress”. The error message is especially unhelpful because it doesn’t contain the filename causing the problem, due to the way logrotateinvokes gzip as a pipe...