SherLog: error diagnosis by connecting clues from run-time logs