Characterizing system failures in commercial and open source systems