Recent advances in computer technology have increased the performance of computers, but application requirements will always exceed the performance level available today. This requires the use of multiprocessors. The importance of multiprocessor systems is increasing due to many reasons, one of which is reliability. Reliability is also an important aspect in any computer system design. For reliable operation the system should be able to detect and locate most of its faults. The idea of using a set of processes collectively known as a Recovery Metaprogram (RMP) is applied in this thesis to system diagnosis. Several error location algorithms are analyzed and compared. Most of them are comparison methods. A new algorithm, called Duplication algorithm, is developed and analyzed. Primitives, oriented to the specific functions of error diagnosis, required by the RMP to coordinate recovery functions are also developed in this thesis.