summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2022-04-16 09:17:10 -1000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2022-04-16 23:03:28 +0100
commit0784db7dd0fef6f0621ad8d74372f44e87fef950 (patch)
treefc05735bf8101e655b7cae47f48811d1a3105f3f
parentd8c2175f6a7b5fdf111d6a073b2c3dbd3c0b061d (diff)
downloadbitbake-0784db7dd0fef6f0621ad8d74372f44e87fef950.tar.gz
server/process: Disable gc around critical sectionyocto-3.1.17yocto-3.1.162020-04.17-dunfell2020-04.16-dunfell1.46.171.46.16
The python gc can trigger whilst we're holding the event stream lock and when cleaning up objects, they can trigger warnings. This translates into a new event which would then need the lock and we can deadlock. Disable gc whilst we hold that lock to avoid this unfortunate and problematic situation. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit 96a6303949cefd469bcf5ed250ff512271354357) Signed-off-by: Steve Sakoman <steve@sakoman.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/server/process.py3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/bb/server/process.py b/lib/bb/server/process.py
index 3c9ed7068..4bdb84ae3 100644
--- a/lib/bb/server/process.py
+++ b/lib/bb/server/process.py
@@ -25,6 +25,7 @@ import subprocess
import errno
import re
import datetime
+import gc
import bb.server.xmlrpcserver
from bb import daemonize
from multiprocessing import queues
@@ -671,8 +672,10 @@ class ConnectionWriter(object):
def send(self, obj):
obj = multiprocessing.reduction.ForkingPickler.dumps(obj)
+ gc.disable()
with self.wlock:
self.writer.send_bytes(obj)
+ gc.enable()
def fileno(self):
return self.writer.fileno()