diff --git a/python/dune/codegen/sumfact/autotune.py b/python/dune/codegen/sumfact/autotune.py
index c2a0272f2eeab98234c2cf5a6dadb0db656163fc..59ad1886072619a9fbac956f402f95a7d9e26662 100644
--- a/python/dune/codegen/sumfact/autotune.py
+++ b/python/dune/codegen/sumfact/autotune.py
@@ -194,10 +194,10 @@ def autotune_realization(sf):
 
     basename = "autotune_sumfact_{}".format(sf.function_name)
     basename = hashlib.sha256(basename.encode()).hexdigest()
-    basename = os.path.join(dir, basename)
+
     filename = os.path.join(dir, "{}.cc".format(basename))
     logname = os.path.join(dir, "{}.log".format(basename))
-    lock = "{}.lock".format(basename)
+    lock = os.path.join(dir, "{}.lock".format(basename))
 
     # Generate and compile a benchmark program
     with cache_restoring():
@@ -205,7 +205,7 @@ def autotune_realization(sf):
             if not os.path.isfile(logname):
                 generate_standalone_code(sf, filename)
 
-                ret = subprocess.call(compiler_invocation(name, filename))
+                ret = subprocess.call(compiler_invocation(basename, filename))
                 if ret != 0:
                     raise CodegenAutotuneError("Compilation of autotune executable failed. Invocation: {}".format(" ".join(compiler_invocation(name, filename))))
 
@@ -216,7 +216,7 @@ def autotune_realization(sf):
                     call.append(wrapper)
 
                 # Run the benchmark program
-                call.append(name)
+                call.append(basename)
                 call.append(logname)
                 devnull = open(os.devnull, 'w')
                 ret = subprocess.call(call, stdout=devnull, stderr=subprocess.STDOUT)