Failures triggered by hard to debug defects usually involve complex interactions between many program elements. We hypothesize that information flows present a good model for such interactions and therefore provide a sound building block for an effective fault localization technique. This paper presents a new fault localization technique that is based on Dynamic information flow analysis (DIFA). Using a test suite, our technique ranks the statements in a program in terms of their likelihood of being faulty by comparing the information flows induced by the failing runs to the ones induced by the passing runs. The ranking of the statements associated with a given flow is primarily determined by contrasting the percentage of failing runs to the percentage of passing runs that induced it. Generally, a higher percentage of failing runs implies a higher rank. To demonstrate the potential of our information flow coverage technique we applied it to several open source Java programs and compare...