The increasing complexity of embedded systems in information and communication technology causes a problem with locating faults during system failures. One reason for this problem is that system components that receive abnormal input data from other components may also output abnormal data, even if they are not in abnormal states, and consequently many redundant faults are detected in the system. In this paper, we present a diagnosis method for locating the origin of faults automatically in systems where fault propagation may occur. We use a model-based diagnosis scheme and abstract behavior modeling technique to deal with complex software components. We propose a new approach to diagnose systems that have data flow loops. Finally, we propose a one-stage approach for solving the abstract model-based diagnosis based on its formulation into the partial maximum satisfiability problem.