binutils 2.34 on NixOS

Bernardo Meurer bernardo@standard.ai
Fri Apr 24 17:19:22 GMT 2020


Hi Nick,

> OK, so let me get this clear.  You are saying that if you build the
> coreutils using binutils 2.31.1 then it works and coreutils passes its
> tests, but if you build the *exact same* coreutils sources using binutils
> 2.33.1 or 2.34 then it breaks ?  (Well the coreutils build, but then new
> failures appear in the testsuite).  Plus the only difference is the 
> changed binutils.  Nothing else has changed, right ?

That is correct, to recap:
* coreutils 8.31 & binutils 2.31.1 => AOK
* coreutils 8.31 & binutils 2.33.1 => coreutils test failures
* coreutils 8.31 & binutils 2.34   => coreutils test failures
* coreutils 8.32 & binutils 2.31.1 => AOK
* coreutils 8.32 & binutils 2.33.1 => coreutils test failures
* coreutils 8.32 & binutils 2.34   => coreutils test failures

No other changes happened between these tests.

> This is going to be a very hard one to reproduce.  I am unfamiliar with
> NixOS, and certainly do not have access to any systems using it.

I understand, I will add that you can use Nix, the package manager, even
outside
of NixOS and then you'd be able to reliably reproduce this. If you're
interested
in doing this let me know and I can provide instructions :)

> Really
> you need to have somebody find out what has gone wrong with the coreutils
> build, and this should provide a clue as to what is going wrong.

So, another contributor added some information on the PR[1] which I will
quote here:

> @lovesegfault <https://github.com/lovesegfault> We disable various
> syscalls that might produce files which we can't serialize into the
> nix-store, see
> https://github.com/NixOS/nix/blob/master/src/libstore/build.cc#L3001-L3028.
>
> In the case of coreutils' |tests/cp/parent-perm-race|, it tries to
> |chmod g+s| a directory, which is disallowed by the seccomp configured
> inside the first part of the linked code.
>
From this it seems like these tests were never supposed to pass anyway,
and that
they did was a bug. Did something change in the 2.31<->2.33.1 version
span that
could be the cause of this?

I will try bisect on that version range and report back.

Cheers!
Bernardo.

[1]: https://github.com/NixOS/nixpkgs/pull/78204#issuecomment-618955150

On 4/24/20 12:43 AM, Nick Clifton wrote:
> Hi Bernardo,
>
>> coreutils> FAIL: tests/misc/mknod
>> coreutils> ======================
>> coreutils> mknod: cannot set permissions of 'f1': Function not implemented
>> coreutils> mkfifo: cannot set permissions of 'f2': Function not implemented
>> coreutils> mkdir: cannot change permissions of 'f3': Function not
>> implemented
>>> I've been trying to get binutils 2.34 on nixpkgs so that those on
>>> NixOS can benefit from it. The PR[1] has been open since January, for
>>> version 2.33.1, and I've since attempted to upgrade to 2.34 also
>>> without success. NixOS is currently on 2.31.1.
> OK, so let me get this clear.  You are saying that if you build the
> coreutils using binutils 2.31.1 then it works and coreutils passes its
> tests, but if you build the *exact same* coreutils sources using binutils
> 2.33.1 or 2.34 then it breaks ?  (Well the coreutils build, but then new
> failures appear in the testsuite).  Plus the only difference is the 
> changed binutils.  Nothing else has changed, right ?
>
>
> This is going to be a very hard one to reproduce.  I am unfamiliar with
> NixOS, and certainly do not have access to any systems using it.  Really
> you need to have somebody find out what has gone wrong with the coreutils
> build, and this should provide a clue as to what is going wrong.
>
> Does this problem happen with all of the architectures supported by NixOS
> or just some of them ?
>
> Cheers
>   Nick
>
>




More information about the Binutils mailing list