diff --git a/bitbake/bin/bitbake-worker b/bitbake/bin/bitbake-worker
index 9334f11fb8..40da7a0c2b 100755
--- a/bitbake/bin/bitbake-worker
+++ b/bitbake/bin/bitbake-worker
@@ -118,7 +118,9 @@ def worker_child_fire(event, d):
data = b"" + pickle.dumps(event) + b""
try:
worker_pipe_lock.acquire()
- worker_pipe.write(data)
+ while(len(data)):
+ written = worker_pipe.write(data)
+ data = data[written:]
worker_pipe_lock.release()
except IOError:
sigterm_handler(None, None)
@@ -321,7 +323,9 @@ class runQueueWorkerPipe():
end = len(self.queue)
index = self.queue.find(b"")
while index != -1:
- worker_fire_prepickled(self.queue[:index+8])
+ msg = self.queue[:index+8]
+ assert msg.startswith(b"") and msg.count(b"") == 1
+ worker_fire_prepickled(msg)
self.queue = self.queue[index+8:]
index = self.queue.find(b"")
return (end > start)