Several schemes for detecting and locating faulty processors through self-diagnosis in multiprocessor systems have been discussed in the past. These schemes attempt to start multiple copies (versions) of the tasks on available idle processors simultaneously and compare the results generated by the copies to detect or locate faulty processors. These schemes are based on the FCFS scheduling strategy. However, they cannot be applied directly to real-time multiprocessor systems where tasks have timing constraints. We present a new scheduling algorithm that not only schedules real-time tasks, but also attempts to perform self-diagnosis if the system is not heavily loaded. We define load as a function of task laxity. We have carried out extensive simulations and compared the results of our algorithm with that of the myopic algorithm, a real-time task scheduler. Simulation results show that our algorithm that exploits both task laxity and spare capacity (unused processors) offers the same performance (guarantee ratio) as that of the myopic algorithm in addition to achieving fault detection and location. © 1998 IEEE.