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:46 +0100
commiteee9fba7b4d5d7a268a495688039027390894e6d (patch)
treeeaf22760cb0d5fe21513d5db197eddc801ed4b7d
parent52645c86076482722ccbcbbb065c6f58b3ce3857 (diff)
downloadpoky-eee9fba7b4d5d7a268a495688039027390894e6d.tar.gz
bitbake: server/process: Disable gc around critical sectionyocto-3.3.6hardknott-3.3.6
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. (Bitbake rev: d01d8326331cfe59208674cfc53aa26c0028b313) 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--bitbake/lib/bb/server/process.py3
1 files changed, 3 insertions, 0 deletions
diff --git a/bitbake/lib/bb/server/process.py b/bitbake/lib/bb/server/process.py
index fcdce19717..b11c903e08 100644
--- a/bitbake/lib/bb/server/process.py
+++ b/bitbake/lib/bb/server/process.py
@@ -26,6 +26,7 @@ import errno
26import re 26import re
27import datetime 27import datetime
28import pickle 28import pickle
29import gc
29import bb.server.xmlrpcserver 30import bb.server.xmlrpcserver
30from bb import daemonize 31from bb import daemonize
31from multiprocessing import queues 32from multiprocessing import queues
@@ -737,8 +738,10 @@ class ConnectionWriter(object):
737 738
738 def send(self, obj): 739 def send(self, obj):
739 obj = multiprocessing.reduction.ForkingPickler.dumps(obj) 740 obj = multiprocessing.reduction.ForkingPickler.dumps(obj)
741 gc.disable()
740 with self.wlock: 742 with self.wlock:
741 self.writer.send_bytes(obj) 743 self.writer.send_bytes(obj)
744 gc.enable()
742 745
743 def fileno(self): 746 def fileno(self):
744 return self.writer.fileno() 747 return self.writer.fileno()