diff --git a/MEMO b/MEMO
index 9c527091411f6047e1f30a7f78c82da47bea3611..a281b98085a5ce9e37102cbf94231596e6563b79 100644
--- a/MEMO
+++ b/MEMO
@@ -37,14 +37,14 @@ Things to consider
 To-do
 ^^^^^
 
+- Just touching a variable written to by a non-idempotent
+  instruction makes that instruction also not idempotent
+
 - assert dependencies <= parent_inames in loopy/__init__.py
   ???
 
 - user interface for dim length prescription
 
-- Give a good error message if a parameter assignment in get_problems()
-  is missing.
-
 - Deal with equality constraints.
   (These arise, e.g., when partitioning a loop of length 16 into 16s.)
 
@@ -83,6 +83,9 @@ Future ideas
 Dealt with
 ^^^^^^^^^^
 
+- Give a good error message if a parameter assignment in get_problems()
+  is missing.
+
 - Slab decomposition for ILP
   -> I don't think that's possible.
 
diff --git a/loopy/__init__.py b/loopy/__init__.py
index 67af82443ec5d87d790cc832e2435f3ce3f7a62b..46f6a76555afcf51c65cb4b2fcc7d7283fbf397a 100644
--- a/loopy/__init__.py
+++ b/loopy/__init__.py
@@ -411,8 +411,15 @@ def get_problems(kernel, parameters):
     glens, llens = kernel.get_grid_sizes_as_exprs()
 
     from pymbolic import evaluate
-    glens = evaluate(glens, parameters)
-    llens = evaluate(llens, parameters)
+    from pymbolic.mapper.evaluator import UnknownVariableError
+    try:
+        glens = evaluate(glens, parameters)
+        llens = evaluate(llens, parameters)
+    except UnknownVariableError, name:
+        raise RuntimeError("When checking your kernel for problems, "
+                "a value for parameter '%s' was not available. Pass "
+                "it in the 'parameters' kwarg to check_kernels()."
+                % name)
 
     if (max(len(glens), len(llens))
             > kernel.device.max_work_item_dimensions):