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:28 +0100 |
commit | 0784db7dd0fef6f0621ad8d74372f44e87fef950 (patch) | |
tree | fc05735bf8101e655b7cae47f48811d1a3105f3f /lib | |
parent | d8c2175f6a7b5fdf111d6a073b2c3dbd3c0b061d (diff) | |
download | bitbake-contrib-0784db7dd0fef6f0621ad8d74372f44e87fef950.tar.gz |
server/process: Disable gc around critical section
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>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/bb/server/process.py | 3 |
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() |