diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2022-04-16 09:17:10 -1000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2022-04-16 23:03:46 +0100 |
commit | eee9fba7b4d5d7a268a495688039027390894e6d (patch) | |
tree | eaf22760cb0d5fe21513d5db197eddc801ed4b7d /bitbake/lib/bb | |
parent | 52645c86076482722ccbcbbb065c6f58b3ce3857 (diff) | |
download | poky-e337d7723babb5d5201e8e9fcc17ac3a2150e13d.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>
Diffstat (limited to 'bitbake/lib/bb')
-rw-r--r-- | bitbake/lib/bb/server/process.py | 3 |
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 | |||
26 | import re | 26 | import re |
27 | import datetime | 27 | import datetime |
28 | import pickle | 28 | import pickle |
29 | import gc | ||
29 | import bb.server.xmlrpcserver | 30 | import bb.server.xmlrpcserver |
30 | from bb import daemonize | 31 | from bb import daemonize |
31 | from multiprocessing import queues | 32 | from 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() |