simon-git: bob (main): Simon Tatham
Commits to Tartarus hosted VCS
tartarus-commits at lists.tartarus.org
Thu Oct 20 20:02:46 BST 2022
TL;DR:
3749073 Work around a bug with Podman containers.
Repository: https://git.tartarus.org/simon/bob.git
On the web: https://git.tartarus.org/?p=simon/bob.git
Branch updated: main
Committer: Simon Tatham <anakin at pobox.com>
Date: 2022-10-20 20:02:46
commit 3749073d9ab4afa7dd579fa641063b7df04f02c5
web diff https://git.tartarus.org/?p=simon/bob.git;a=commitdiff;h=3749073d9ab4afa7dd579fa641063b7df04f02c5;hp=c4e6836339c0e6f22cdd47cbe313b1487ca621f6
Author: Simon Tatham <anakin at pobox.com>
Date: Thu Oct 20 18:22:37 2022 +0100
Work around a bug with Podman containers.
I've been finding recently that my Puzzles builds fail while trying to
return data from the Emscripten build (which is delegated into a
Podman container). Investigating, this appears to be because the
'conmon' process associated with the container is segfaulting.
I found https://github.com/containers/conmon/issues/315 which seems to
be describing very similar symptoms, and in particular, everyone
involved agrees that transferring a lot of data out of the container
via its standard output is the trigger for the segfault - which is
indeed exactly what's happening in my case when bob-delegate-server
returns files.
Workaround: use a different channel to get data in and out of the
container. In this commit I add command-line options to
bob-delegate-server that allows it to open a pair of named pipes to
speak the delegate protocol over, and in the Podman case of delegate
startup, I make a pair of fifos, share them into the container via a
spare temp directory, and use them in place of the subprocess.PIPE
file objects. This seems to make the data transfer work reliably.
bob-delegate-server | 151 ++++++++++++++++++++++++++++++----------------------
execute.py | 59 +++++++++++++++-----
2 files changed, 133 insertions(+), 77 deletions(-)
More information about the tartarus-commits
mailing list