diff --git a/lib/modules/Thread.pmod b/lib/modules/Thread.pmod
index 0bdd21a9a2d6a4ce72dbb7f19c4b78dea07c250f..a337ad18ce802a35bdd4af4f3b9bc17476a69eca 100644
--- a/lib/modules/Thread.pmod
+++ b/lib/modules/Thread.pmod
@@ -52,6 +52,7 @@ class Queue {
       object key=lock::lock();
       while(!size()) r_cond::wait(key);
       tmp=buffer[r_ptr++];
+      key=0;
       return tmp;
     }
   
@@ -67,6 +68,7 @@ class Queue {
       }
       buffer[w_ptr]=v;
       w_ptr++;
+      key=0; // Must free this one _before_ the signal...
       r_cond::signal();
     }
 };