diff --git a/lib/gen_print.py b/lib/gen_print.py
index 1ccde52..48d7f1c 100755
--- a/lib/gen_print.py
+++ b/lib/gen_print.py
@@ -129,6 +129,24 @@
     return func_name
 
 
+def work_around_inspect_stack_cwd_failure():
+    r"""
+    Work around the inspect.stack() getcwd() failure by making "/tmp" the
+    current working directory.
+
+    If the current working directory has been deleted, inspect.stack() will
+    fail with "OSError: [Errno 2] No such file or directory" because it tries
+    to do a getcwd().
+
+    This function will try to prevent this failure by detecting the scenario
+    in advance and making "/tmp" the current working directory.
+    """
+    try:
+        os.getcwd()
+    except OSError:
+        os.chdir("/tmp")
+
+
 def get_line_indent(line):
     r"""
     Return the number of spaces at the beginning of the line.
@@ -241,6 +259,7 @@
         print("")
         print_call_stack(debug_indent, 2)
 
+    work_around_inspect_stack_cwd_failure()
     for count in range(0, 2):
         try:
             frame, filename, cur_line_no, function_name, lines, index = \
@@ -1187,6 +1206,7 @@
     buffer += sprint_dashes(indent, 6, 0) + " " + sprint_dashes(0, 73)
 
     # Grab the current program stack.
+    work_around_inspect_stack_cwd_failure()
     current_stack = inspect.stack()
 
     # Process each frame in turn.
@@ -1243,6 +1263,7 @@
         else:
             stack_frame_ix = 1
 
+    work_around_inspect_stack_cwd_failure()
     stack_frame = inspect.stack()[stack_frame_ix]
 
     func_and_args = sprint_func_line(stack_frame, style)
@@ -1620,6 +1641,7 @@
                                     function, etc.
     """
 
+    work_around_inspect_stack_cwd_failure()
     return next((frame[0].f_locals[var_name]
                  for frame in inspect.stack()[init_stack_ix:]
                  if var_name in frame[0].f_locals), default)
