Skip to content

Fix spam in gitlab logs about BlockingIOError exception being ignored

commit 9ebfd7f0:

cerbero: Fix some typos and documentation

commit 8dd2d49e:

cerbero: Log download output to a the fetch log
Not sure how this was missed all this time! The output from fetch to
stdout is unreadable when we download several recipes in parallel,
which is the default.

commit 84933abd:

cerbero: Use a list for the download command, not a string
We split the string immediately in async_call, so no point doing this.
Just pass a list from the start, which also avoids shell quoting
issues.

commit 0d130afe:

cerbero: Fix BlockingIOError spam on iOS gitlab CI
When using asyncio, if we spawn too many short-lived processes, python
tries to write SIGCHLD to the wakeup fd when each process exits. However,
this is racy, see: https://bugs.python.org/issue21595#msg219299 and we get
lots of useless errors about ignored exceptions, particularly when
generating the static library framework for iOS during the packaging step.

Unset the wakeup fd when running the asyncio loop, and re-set it
+ send SIGCHLD when entering it to handle all the children that exited
in between.

commit 552ae1b4:

cerbero/fwlib: Output dots for status when not interactive
We spend a lot of time processing without giving any feedback in
non-interactive mode, so print dots, which should be unaffected by
interleaving when printing async.

95% of the lines in our cross-ios-universal gitlab CI logs are just the following spurious warning:

Exception ignored when trying to write to the signal wakeup fd:
BlockingIOError: [Errno 35] Resource temporarily unavailable

See, f.ex.: https://gitlab.freedesktop.org/nirbheek/cerbero/-/jobs/1310349. This makes the logs complete unreadable.

Much cleaner after these patches: https://gitlab.freedesktop.org/nirbheek/cerbero/-/jobs/1314240

Edited by Nirbheek Chauhan

Merge request reports