diff --git a/loopy/kernel/tools.py b/loopy/kernel/tools.py
index cbacf5e284fe42ae2b5605d12fa3582bcf0ac4fd..7545070261a9be7a8b5e3e5dde4fdce3e815f44a 100644
--- a/loopy/kernel/tools.py
+++ b/loopy/kernel/tools.py
@@ -1139,7 +1139,7 @@ def find_reverse_dependencies(kernel, insn_ids):
 # {{{ draw_dependencies_as_unicode_arrows
 
 def draw_dependencies_as_unicode_arrows(
-        instructions, fore, style, flag_downward=True):
+        instructions, fore, style, flag_downward=True, max_columns=20):
     """
     :arg instructions: an ordered iterable of :class:`loopy.InstructionBase`
         instances
@@ -1222,12 +1222,17 @@ def draw_dependencies_as_unicode_arrows(
 
     # }}}
 
-    def extend_to_uniform_length(s):
-        return s + " "*(n_columns[0]-len(s))
+    uniform_length = min(n_columns[0], max_columns)
+
+    def conform_to_uniform_length(s):
+        if len(s) <= uniform_length:
+            return s + " "*(uniform_length-len(s))
+        else:
+            return s[:uniform_length] + "..."
 
     return [
-            (extend_to_uniform_length(row),
-                extend_to_uniform_length(extender))
+            (conform_to_uniform_length(row),
+                conform_to_uniform_length(extender))
             for row, extender in rows]
 
 # }}}
diff --git a/loopy/schedule/__init__.py b/loopy/schedule/__init__.py
index c8174d94cf9f86bde574b3e1eff353d26438cab8..9342fedb67a675012e3fcdf39a5a9fdb1a4999da 100644
--- a/loopy/schedule/__init__.py
+++ b/loopy/schedule/__init__.py
@@ -1758,6 +1758,17 @@ def insert_barriers(kernel, schedule, reverse, kind, verify_only, level=0):
 # {{{ main scheduling entrypoint
 
 def generate_loop_schedules(kernel, debug_args={}):
+    import sys
+    rec_limit = sys.getrecursionlimit()
+    new_limit = max(rec_limit, len(kernel.instructions) * 2)
+    sys.setrecursionlimit(new_limit)
+    try:
+        return generate_loop_schedules_inner(kernel, debug_args=debug_args)
+    finally:
+        sys.setrecursionlimit(rec_limit)
+
+
+def generate_loop_schedules_inner(kernel, debug_args={}):
     from loopy.kernel import kernel_state
     if kernel.state not in (kernel_state.PREPROCESSED, kernel_state.SCHEDULED):
         raise LoopyError("cannot schedule a kernel that has not been "