%-------------------------------------------------------------------------------
\movedUpBody{-0.75in}{\Brown{Software Faults}}
\vspace{0.3in}
\begin{center}
	\begin{figure*}
	\epsfxsize=5.0in
	\centerline{\epsfbox{Figures/201.eps}}
	\end{figure*}
	{\small \% of outages by fault category (30,000 system years)}
\end{center}
\vspace{0.2in}
\hspace{0.7in} $\bullet$ Software faults are increasingly dominant\\
\hspace{0.7in} $\bullet$ $\approx$ 3 bugs per 1000 lines of code! \ \ \ \MidnightBlue{[Gray \& Reuter 93]}

%-------------------------------------------------------------------------------
\movedUpBody{-0.75in}{\Brown{Traditional Rollback Recovery in Distributed Systems}}
\vspace{0.3in}
\begin{center}
	\begin{figure*}
	\epsfxsize=5.7in
	\centerline{\epsfbox{Figures/202.eps}}
	\end{figure*}
\begin{tabbing}
xxxxxx\= xxxxx\= xxxxxxxxxxxxxxxxxxxxxxxxxx\= \kill
\>{\bf The Restoration Problem:}\\
\> To restore the {\em maximum recoverable (consistent) state\/} using 
saved\\ 
\>state information.\\ \\
\> Assumptions: failstop, independent failures
\end{tabbing}
\end{center}

%-------------------------------------------------------------------------------

\movedUpBody{-0.75in}{\Brown{Bohrbugs and Heisenbugs}}
\vspace{0.5in}
\begin{tabbing}
xxxxxx\= xxxxx\= xxxxxxxxxxxxxxxxxxxxxxxxxx\= \kill
\> {\bf Bohrbugs:}\\
\>\> deterministic bugs,  e.g. arithmetic overflow\\ 
\>\> recur in each re-execution with the same inputs\\ \\
\> {\bf Heisenbugs:}\\
\>\> non-deterministic bugs, e.g. synchronization bug\\
\>\> do not recur in each re-execution with the same inputs\\ \\
\> $\bullet$ over 99\% of bugs in production code are Heisenbugs! \ \  \MidnightBlue{[Adams 84]}.\\ \\
\>$\bullet$ Rollback recovery is a viable approach.
\end{tabbing}

%-------------------------------------------------------------------------------

\movedUpBody{-0.75in}{\Brown{Rollback Recovery for Software Faults}}
\vspace{0.3in}
\begin{center}
	\begin{figure*}
	\epsfxsize=5.4in
	\centerline{\epsfbox{Figures/203.eps}}
	\end{figure*}
\begin{tabbing}
xxxxxx\= xxxxx\= xxxxxxxxxxxxxxxxxxxxxxxxxx\= \kill
\>{\bf The Restoration Problem:}\\
\> To restore {\em a\/} consistent state using saved state information.\\ \\
\> $\bullet$ Non-failstop: failure latency, failures are not independent.\\
\> $\bullet$ Optimistic logging \ \ \MidnightBlue{[Strom \& Yemini 85], [Wang et al, 97]}
\end{tabbing}
\end{center}

%-------------------------------------------------------------------------------

\movedUpBody{-0.75in}{\Brown{Rollback Recovery for Software Faults}}
\vspace{0.3in}
\begin{center}
	\begin{figure*}
	\epsfxsize=5.6in
	\centerline{\epsfbox{Figures/204.eps}}
	\end{figure*}
\vspace{0.2in}
\begin{tabbing}
xxxxxx\= xxxxx\= xxxxxxxxxxxxxxxxxxxxxxxxxx\= \kill
\>{\bf The Re-execution Problem:}\\
\> To re-execute in order to avoid a recurrence of a previously \\
\> detected failure\\ \\ 
\> $\bullet$ Progressive Retry \ \ \MidnightBlue{[Wang et al, 97]}
\end{tabbing}
\end{center}

%-------------------------------------------------------------------------------

\movedUpBody{-0.75in}{\Brown{Talk Outline}}
\vspace{0.5in}
\begin{itemize}
\item Solving the Restoration Problem:
	\begin{itemize}
	\item Conventional Optimistic Logging
	\item Optimistic Logging in Multi-threaded Environments.
	\item Generalization: Coordinated Logging
	\end{itemize}
\item Solving the Re-execution Problem:
	\begin{itemize}
	\item Controlled Re-execution for Races
	\item The Off-line Mutual Exclusion Problem
	\item Implementation and Evaluation
	\item Generalization: The Predicate Control Problem
	\end{itemize}
\item Conclusions
\end{itemize}
%-------------------------------------------------------------------------------
