diff --git a/predtuner/approxapp.py b/predtuner/approxapp.py
index 7564bb81a61f2c6a31b982c28b9be6eb4c21d426..c0cd6910b0c4c33a232482950091d38d3b9ea6c4 100644
--- a/predtuner/approxapp.py
+++ b/predtuner/approxapp.py
@@ -110,7 +110,7 @@ class Config:
     ) -> None:
         self.qos = qos
         self.perf = perf
-        self.knobs = knobs
+        self.knobs = dict(sorted(knobs.items()))
         self.test_qos: Optional[float] = test_qos
 
 
diff --git a/predtuner/pipedbin.py b/predtuner/pipedbin.py
index 554ece787c84430c7624a0fb489ba8a3162159e3..cb066c9ef2292d7387296b2de6427f8d58496526 100644
--- a/predtuner/pipedbin.py
+++ b/predtuner/pipedbin.py
@@ -122,8 +122,7 @@ class PipedBinaryApp(ModeledApp):
     def _stop_binary(self):
         if self.process.poll() is not None:
             return
-        with self.fifo_w_file.open("w") as f:
-            f.write("stop")
+        self.process.terminate()
 
     def _check_running(self):
         return_code = self.process.poll()
@@ -189,6 +188,8 @@ def parse_hpvm_tensor(buffer: bytes) -> torch.Tensor:
         data = np.frombuffer(buffer, dtype=np.float32, offset=offset, count=nelem)
         offset += nelem * 4
         batches.append(data.reshape(*dims))
+    if not batches:
+        raise ValueError("No tensor returned from HPVM binary")
     batches = np.concatenate(batches, axis=0)
     return torch.from_numpy(batches).squeeze(-1).squeeze(-1)