Leo Famulari skribis: > On Mon, Sep 06, 2021 at 03:39:52PM +0000, Guillaume Le Vaillant wrote: >> There's a bug in binutils 1.37, which we are using on the >> core-updates-frozen branch. > > 2.37, right? :) > Indeed. :) >> It's a file descriptor leak that can lead to 'malformed archive' errors >> when linking libraries. We get this problem at least when building >> qtwekbit and qtwebengine. A workaround allows us to compile qtwebkit >> (see [1]), but it doesn't work for qtwebengine. >> >> The bug was discussed at [2] and upstream has a patch to fix it at [3]. >> However, adding this patch to our binutils rebuilds the world. >> I'm currently trying to build things with the patched binutils. >> If everything works, should I push this fix on core-updates-frozen, or >> does someone have an idea that would lead to less rebuilds? > > There are a few options: > > 1) Apply the patch in the normal way and rebuild the world. If the > changes in the patch are limited to fixing this bug, then we can be > confident that changing binutils will not break other packages, which is > the main goal behind "freezing" the core-updates branch. Do you think > that expectation is reasonable? Otherwise, the branch is frozen except > for bug fixes; we'd like to avoid rebuilding the world but it's not a > problem if we have to. > 2) Create a binutils-fixed package and only use it for qtwebkit and > qtwebengine > 3) Try to work around the bug in the qtwebkit and qtwebengine packages > > 2 and 3 are not great because maybe the bug affects other packages in > some situations. Do you know if it manifests deterministically? The problem happens when linking a library with a lot of members (I don't know exactly how many), which is the case at least for qtwebkit and qtwebengine. Users creating such libraries in their projects will also have the problem. Increasing the maximum number of open file descriptors seems not be a very robust workaround. Setting it at 4096 for qtwebkit works, but I tried 4096, 8192 and 16384 for qtwebengine and it didn't work. I have built many packages with the patched binutils and I didn't get any new failure so far. I'm not yet at qtwebkit and qtwebengine though (compiling the 20 versions of rust took a while). So when I get there, and if the patch really solves the issue, pushing it looks like the best solution. Do you know if there are other world-rebuilding pending fixes that could go in at the same time?