  Consider a system of autonomous mobile robots initially randomly deployed on
the nodes of an anonymous finite grid. A gathering algorithm is a sequence of
moves to be executed independently by each robot so that all robots meet at a
single node after finite time. The robots operate in Look-Compute-Move cycles.
In each cycle, a robot takes a snapshot of the current configuration of the
grid in terms of occupied nodes (\emph{Look}), then based on the perceived
configuration, decides whether to stay put or to move to an adjacent node
(\emph{Compute}), and in the later case makes an instantaneous move accordingly
(\emph{Move}). The robots have \emph{weak multiplicity detection} capability,
which enables them to detect if a node is empty or occupied by a single robot
or by multiple robots. The robots are \emph{asynchronous}, \emph{oblivious},
\emph{anonymous}, can not communicate with each other and execute the same
distributed algorithm. In a faulty system, however, any robot can \emph{crash},
which means that it becomes completely inactive and does not take part in the
process any further. In that case a fault-tolerant gathering algorithm is an
algorithm that gathers all the non-faulty robots at a single node. This paper
considers a faulty system that can have at most one crash fault. With these
assumptions deterministic fault-tolerant gathering algorithms are presented
that gather all initial configurations that are gatherable in a non-faulty
system, except for one specific configuration called the \emph{2S2
configuration}.
