diff --git a/cbuildbot/failures_lib.py b/cbuildbot/failures_lib.py
index dd56b69..13e313c 100644
--- a/cbuildbot/failures_lib.py
+++ b/cbuildbot/failures_lib.py
@@ -8,6 +8,7 @@
 
 import collections
 import sys
+import traceback
 
 from chromite.cbuildbot import constants
 from chromite.lib import cros_build_lib
@@ -160,12 +161,12 @@
       except self.source_exception:
         # Get the information about the original exception.
         exc_type, exc_value, _ = sys.exc_info()
+        exc_traceback = traceback.format_exc()
         if issubclass(exc_type, self.category_exception):
           # Do not re-raise if the exception is a subclass of the set
           # exception type because it offers more information.
           raise
         else:
-          exc_traceback = cros_build_lib.FormatDetailedTraceback()
           exc_infos = CreateExceptInfo(exc_value, exc_traceback)
           raise self.category_exception(exc_infos=exc_infos)
 
diff --git a/cbuildbot/stages/generic_stages.py b/cbuildbot/stages/generic_stages.py
index d643d46..2070d40 100644
--- a/cbuildbot/stages/generic_stages.py
+++ b/cbuildbot/stages/generic_stages.py
@@ -13,6 +13,7 @@
 import re
 import sys
 import time
+import traceback
 
 # We import mox so that we can identify mox exceptions and pass them through
 # in our exception handling code.
@@ -342,7 +343,7 @@
     if issubclass(exc_type, failures_lib.StepFailure):
       return str(exc_value)
     else:
-      return cros_build_lib.FormatDetailedTraceback(exc_info=exc_info)
+      return ''.join(traceback.format_exception(*exc_info))
 
   @classmethod
   def _HandleExceptionAsWarning(cls, exc_info, retrying=False):
diff --git a/lib/alerts.py b/lib/alerts.py
index 680da45..0ebc4cd 100644
--- a/lib/alerts.py
+++ b/lib/alerts.py
@@ -15,6 +15,7 @@
 import smtplib
 import socket
 import sys
+import traceback
 
 from chromite.lib import cros_build_lib
 from chromite.lib import retry_util
@@ -126,7 +127,7 @@
 
   if inc_trace:
     if sys.exc_info() != (None, None, None):
-      trace = cros_build_lib.FormatDetailedTraceback()
+      trace = traceback.format_exc()
       message += '\n\n' + trace
 
   attachment = None
diff --git a/scripts/cbuildbot.py b/scripts/cbuildbot.py
index 3aac2e4..310ae5f 100644
--- a/scripts/cbuildbot.py
+++ b/scripts/cbuildbot.py
@@ -22,6 +22,7 @@
 import pickle
 import sys
 import tempfile
+import traceback
 
 from chromite.cbuildbot import afdo
 from chromite.cbuildbot import cbuildbot_config
@@ -379,7 +380,7 @@
         if isinstance(ex, failures_lib.CompoundFailure):
           print(str(ex))
 
-        cros_build_lib.PrintDetailedTraceback(file=sys.stdout)
+        traceback.print_exc(file=sys.stdout)
         raise
 
       if not (print_report and isinstance(ex, failures_lib.StepFailure)):
