From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 11 07:50:29 2025 Received: (at submit) by debbugs.gnu.org; 11 Sep 2025 11:50:29 +0000 Received: from localhost ([127.0.0.1]:42993 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uwfoq-0006dX-IJ for submit@debbugs.gnu.org; Thu, 11 Sep 2025 07:50:28 -0400 Received: from lists.gnu.org ([2001:470:142::17]:47124) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uwfol-0006dC-CE for submit@debbugs.gnu.org; Thu, 11 Sep 2025 07:50:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uwfoc-0007HP-O2 for bug-coreutils@gnu.org; Thu, 11 Sep 2025 07:50:16 -0400 Received: from sdaoden.eu ([217.144.132.164]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uwfo6-0005Ul-Mk for bug-coreutils@gnu.org; Thu, 11 Sep 2025 07:49:47 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sdaoden.eu; s=citron; t=1757591375; x=1758258041; h=date:author:from:to:cc:subject: message-id:mail-followup-to:openpgp:blahblahblah:author:from:subject:date: to:cc:resent-author:resent-date:resent-from:resent-sender:resent-to: resent-cc:resent-reply-to:resent-message-id:in-reply-to:references: mime-version:content-type:content-transfer-encoding:content-disposition: content-id:content-description:message-id:mail-followup-to:openpgp: blahblahblah; bh=6SITbfMJ0155U432w41h6fUCbhDjMZ/TFvFMJDHjxz4=; b=WZAg5S4UWRG4tHaNAXqz6Frma/NV7EurRWSkUStAk0W+Ij1mNFRxSolx0GBFMSlxt718aUgJ 2k60FmtpF8Z2fObGAZmYAFhGpKKVmELjWSHZNRGbpLVyB+UapVquFdaVbLtk/Nr6camap82AUz m6c92h7MEbADL2kcJy5Mq8JnBjCeBIQxfZE1FQHer7SOKXn+qZzpevQ/5UXCEbB2wwb/rNEnCQ axddWStJb2v0OlYYH2uMf28OcS7tUIfYMCEE06t9oXIQ0LhqyJbetj9Cm0dSyej1eq4boeU5YQ Au5FkHAiZaNOHSnY7nPiReY0cObtMvH0KkR6SSCaSnuDzuWg== Date: Thu, 11 Sep 2025 13:49:33 +0200 Author: Steffen Nurpmeso From: Steffen Nurpmeso To: bug-coreutils@gnu.org Subject: 9.7: cp(1): lchownat(2/3) fallback bogus? Message-ID: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> Mail-Followup-To: bug-coreutils@gnu.org, Steffen Nurpmeso User-Agent: s-nail v14.9.25-709-g8a51e128fe-dirty OpenPGP: id=EE19E1C1F2F7054F8D3954D8308964B51883A0DD; url=https://ftp.sdaoden.eu/steffen.asc; preference=signencrypt BlahBlahBlah: Any stupid boy can crush a beetle. But all the professors in the world can make no bugs. Received-SPF: pass client-ip=217.144.132.164; envelope-from=steffen@sdaoden.eu; helo=sdaoden.eu X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit Cc: Steffen Nurpmeso X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) Hello. During package update of kbd i got a build error cp: failed to preserve ownership for /tmp/.pkgmk/pkg/usr/share/kbd/keymaps/i386/qwertz/sr-latin.map.gz: Operation not supported This ended up as (kbd 2.9.0: build error (under fakeroot(1) environment))[1] which was fixed like [2] (-dPR instead of -a). However we went over |>|cp -a is used in the makefile. The -a means no dereference and preserve |>|links and other attributes. This should not be a problem if you have |>|the same user. |> |> GNU coreutils 9.7 cp(1) is of a different opinion: |> |> $ touch xa |> $ ln -s xa xb |> $ cp -a xb xc |> cp: failed to preserve ownership for xc: Operation not supported | |No. This is security settings on your system. | |On my laptop: | |$ touch xa |$ ln -s xa xb |$ cp -a xb xc and so i came to This is really strange; i have no "security setting", actually, only the fs.protected_* sysctls are set. I get the failure in the "sticky" /tmp/ as well as as myself in my home directory. Looking at coreutils cp.c the error comes from if (x->preserve_ownership) { if (lchownat (dst_dirfd, relname, p->st.st_uid, p->st.st_gid) != 0) ... error (0, errno, _("failed to preserve ownership for %s"), quoteaf (dst_name)); Here there is no lchownat(3/2), and if i do (copied from manual and made runnable) #include #include #include #include #include #include #include int main(void){ struct passwd *pwd; struct group *grp; int x; pwd = getpwnam("steffen"); grp = getgrnam("steffen"); x = lchown("xb", pwd->pw_uid, grp->gr_gid); fprintf(stderr, "x=%d errno=%s\n", x, strerror(errno)); return 0; } i get #?148|kent:x$ fakeroot tcc -run t.c x=0 errno=Success #?0|kent:x$ tcc -run t.c x=0 errno=Success wherever i try, and so it seems to me the GNU coreutils lib/fchownat.c fallback implementation of lchownat() is bogus thus?? And so i am here to report that?. [1] https://lore.kernel.org/kbd/20250910123724.s2uU6eVo@steffen%25sdaoden.eu/T/#m80238c1410528dc960f54dad20a126fa5ecdb059 [2] https://git.kernel.org/pub/scm/linux/kernel/git/legion/kbd.git/commit/?id=db82eb6f86e6c0b8ac4260e88b88d66e1cd7c077 Ciao, --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt) From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 12 09:15:54 2025 Received: (at 79433) by debbugs.gnu.org; 12 Sep 2025 13:15:54 +0000 Received: from localhost ([127.0.0.1]:49536 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ux3d3-0005oI-JT for submit@debbugs.gnu.org; Fri, 12 Sep 2025 09:15:54 -0400 Received: from shaun.sig.nz ([103.6.212.24]:46740) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ux3cv-0005nn-JY for 79433@debbugs.gnu.org; Fri, 12 Sep 2025 09:15:50 -0400 Received: from kohi.sig.nz ([114.23.207.132] helo=u2.kohi.sig.nz) by shaun.sig.nz ([103.6.212.24]:587) with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92 #3) id 1ux3cp-00088W-S7 for 79433@debbugs.gnu.org; Fri, 12 Sep 2025 13:15:39 +0000 Received: from mail-yb1-f178.google.com ([209.85.219.178]) by u2.kohi.sig.nz ([192.168.2.224]:587) with esmtpsa (TLS1.3:ECDHE_X25519__ECDSA_SECP256R1_SHA256__AES_128_GCM:128) (Exim 4.96 #2) id 1ux3cp-002Z90-0S for 79433@debbugs.gnu.org; Fri, 12 Sep 2025 13:15:39 +0000 Received: by mail-yb1-f178.google.com with SMTP id 3f1490d57ef6-e931c71a1baso1837882276.0 for <79433@debbugs.gnu.org>; Fri, 12 Sep 2025 06:15:39 -0700 (PDT) X-Gm-Message-State: AOJu0YwvqvwY4NRM6iaGY4u0TFNEKFeWHHcwONhUMEGqwFEmogdXfRet d5f1Fnnl76/jM/xpvDsSjGMGx8FWpYIkMa0D1o7ljUJPGyRBAf2oNeedi3NCxNtkZgb8bdLN1qc SuG8XLy1ufiU8dDZ03Bvp/VUIrcGFGK0= X-Google-Smtp-Source: AGHT+IHPxI73MxQOlApIQ497as1+IjBnNVllBU5cshHO3AcX+s8LxcDM4ldK7Bd705P2KmN5z7K9dvuRWxNdy9N0rfY= X-Received: by 2002:a05:6902:1444:b0:e9e:f83c:7e3d with SMTP id 3f1490d57ef6-ea3d97ad76emr2017771276.4.1757682936817; Fri, 12 Sep 2025 06:15:36 -0700 (PDT) MIME-Version: 1.0 References: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> In-Reply-To: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> From: Martin D Kealey Date: Fri, 12 Sep 2025 23:15:20 +1000 X-Gmail-Original-Message-ID: X-Gm-Features: Ac12FXwoxxceZEDBvkc9MV618Fi8zRbtpddiw_ABxoTWClqpnYwJnVc-pqFCuNQ Message-ID: Subject: Re: bug#79433: 9.7: cp(1): lchownat(2/3) fallback bogus? To: bug-coreutils@gnu.org, Steffen Nurpmeso Content-Type: multipart/alternative; boundary="00000000000013b193063e9a73c3" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79433 Cc: 79433@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --00000000000013b193063e9a73c3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Steffen It's important to note the distinction between ENOSYS =E2=80=9CFunction not implemented=E2=80=9D, which means there's no kernel call available, and EN= OTSUP =E2=80=9COperation not supported=E2=80=9D, which means the system call exis= ts but the filesystem driver doesn't implement the requested function (either generally, or not for the target object). If lchown exists but reports ENOTSUP, then it is extremely unlikely that fchownat would get a different result, especially when you consider that lchown may actually be a library call that invokes fchownat. What filesystem underpins the files you're trying to manipulate in the example you've given? (Any chance it's NFS?) -Martin PS: The English descriptions of those errors are arguably swapped, but their E* symbols are clear(er). On Thu, 11 Sept 2025 at 21:49, Steffen Nurpmeso wrote: > Hello. > > During package update of kbd i got a build error > > cp: failed to preserve ownership for > /tmp/.pkgmk/pkg/usr/share/kbd/keymaps/i386/qwertz/sr-latin.map.gz: > Operation not supported > > This ended up as (kbd 2.9.0: build error (under fakeroot(1) > environment))[1] which was fixed like [2] (-dPR instead of -a). > However we went over > > |>|cp -a is used in the makefile. The -a means no dereference and preser= ve > |>|links and other attributes. This should not be a problem if you have > |>|the same user. > |> > |> GNU coreutils 9.7 cp(1) is of a different opinion: > |> > |> $ touch xa > |> $ ln -s xa xb > |> $ cp -a xb xc > |> cp: failed to preserve ownership for xc: Operation not supported > | > |No. This is security settings on your system. > | > |On my laptop: > | > |$ touch xa > |$ ln -s xa xb > |$ cp -a xb xc > > and so i came to > > This is really strange; i have no "security setting", actually, > only the fs.protected_* sysctls are set. > I get the failure in the "sticky" /tmp/ as well as as myself in my > home directory. Looking at coreutils cp.c the error comes from > > if (x->preserve_ownership) > { > if (lchownat (dst_dirfd, relname, p->st.st_uid, p->st.st_gid) > !=3D 0) > ... > error (0, errno, _("failed to preserve ownership for > %s"), > quoteaf (dst_name)); > > Here there is no lchownat(3/2), and if i do (copied from manual > and made runnable) > > #include > #include > #include > #include > #include > #include > #include > int main(void){ > struct passwd *pwd; > struct group *grp; > int x; > > pwd =3D getpwnam("steffen"); > grp =3D getgrnam("steffen"); > x =3D lchown("xb", pwd->pw_uid, grp->gr_gid); > fprintf(stderr, "x=3D%d errno=3D%s\n", x, strerror(errno))= ; > return 0; > } > > i get > > #?148|kent:x$ fakeroot tcc -run t.c > x=3D0 errno=3DSuccess > #?0|kent:x$ tcc -run t.c > x=3D0 errno=3DSuccess > > wherever i try, and so it seems to me the GNU coreutils > lib/fchownat.c fallback implementation of lchownat() is bogus > thus?? > > And so i am here to report that?. > > [1] > https://lore.kernel.org/kbd/20250910123724.s2uU6eVo@steffen%25sdaoden.eu/= T/#m80238c1410528dc960f54dad20a126fa5ecdb059 > [2] > https://git.kernel.org/pub/scm/linux/kernel/git/legion/kbd.git/commit/?id= =3Ddb82eb6f86e6c0b8ac4260e88b88d66e1cd7c077 > > Ciao, > > --steffen > | > |Der Kragenbaer, The moon bear, > |der holt sich munter he cheerfully and one by one > |einen nach dem anderen runter wa.ks himself off > |(By Robert Gernhardt) > > > > --00000000000013b193063e9a73c3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Steffen

It's importan= t to note the distinction between ENOSYS =E2=80=9CFunction not implemented= =E2=80=9D, which means there's no kernel call available, and=C2=A0 ENOT= SUP =E2=80=9COperation not supported=E2=80=9D, which means the system call = exists but the filesystem driver doesn't implement the requested functi= on (either generally, or not for the target object).

If lchow= n exists but reports ENOTSUP, then it is extremely unlikely that fchownat w= ould get a different result, especially when you consider that lchown may= =C2=A0actually be a library call that invokes fchownat.

What filesystem underpins the files you're trying to manipulate i= n the example you've given? (Any chance it's NFS?)

-Martin

PS: The English descriptions of those e= rrors are arguably swapped, but their E* symbols are clear(er).
<= br>

<= div dir=3D"ltr" class=3D"gmail_attr">On Thu, 11 Sept 2025 at 21:49, Steffen= Nurpmeso <steffen@sdaoden.eu&= gt; wrote:
Hello= .

During package update of kbd i got a build error

=C2=A0 cp: failed to preserve ownership for /tmp/.pkgmk/pkg/usr/share/kbd/k= eymaps/i386/qwertz/sr-latin.map.gz: Operation not supported

This ended up as (kbd 2.9.0: build error (under fakeroot(1)
environment))[1] which was fixed like [2] (-dPR instead of -a).
However we went over

=C2=A0|>|cp -a is used in the makefile. The -a means no dereference and = preserve
=C2=A0|>|links and other attributes. This should not be a problem if you= have
=C2=A0|>|the same user.
=C2=A0|>
=C2=A0|> GNU coreutils 9.7 cp(1) is of a different opinion:
=C2=A0|>
=C2=A0|>=C2=A0 =C2=A0$ touch xa
=C2=A0|>=C2=A0 =C2=A0$ ln -s xa xb
=C2=A0|>=C2=A0 =C2=A0$ cp -a xb xc
=C2=A0|>=C2=A0 =C2=A0cp: failed to preserve ownership for xc: Operation = not supported
=C2=A0|
=C2=A0|No. This is security settings on your system.
=C2=A0|
=C2=A0|On my laptop:
=C2=A0|
=C2=A0|$ touch xa
=C2=A0|$ ln -s xa xb
=C2=A0|$ cp -a xb xc

and so i came to

=C2=A0 This is really strange; i have no "security setting", actu= ally,
=C2=A0 only the fs.protected_* sysctls are set.
=C2=A0 I get the failure in the "sticky" /tmp/ as well as as myse= lf in my
=C2=A0 home directory.=C2=A0 Looking at coreutils cp.c the error comes from=

=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (x->preserve_ownership)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (lchownat (dst_dirfd, relname,= p->st.st_uid, p->st.st_gid)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 !=3D 0)
=C2=A0 ...
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 error= (0, errno, _("failed to preserve ownership for %s"),
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0quoteaf (dst_name));

=C2=A0 Here there is no lchownat(3/2), and if i do (copied from manual
=C2=A0 and made runnable)

=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0#include <sys/typ= es.h>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0#include <unistd.= h>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0#include <pwd.h&g= t;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0#include <grp.h&g= t;
=C2=A0 =C2=A0 #include <errno.h>
=C2=A0 =C2=A0 #include <string.h>
=C2=A0 =C2=A0 #include <stdio.h>
=C2=A0 =C2=A0 int main(void){
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0struct passwd *pwd;<= br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0struct group=C2=A0 *= grp;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0int x;

=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0pwd =3D getpwnam(&qu= ot;steffen");
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0grp =3D getgrnam(&qu= ot;steffen");
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0x =3D lchown("x= b", pwd->pw_uid, grp->gr_gid);
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0fprintf(stderr, &quo= t;x=3D%d errno=3D%s\n", x, strerror(errno));
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;
=C2=A0 =C2=A0 }

=C2=A0 i get

=C2=A0 =C2=A0 #?148|kent:x$ fakeroot tcc -run t.c
=C2=A0 =C2=A0 x=3D0 errno=3DSuccess
=C2=A0 =C2=A0 #?0|kent:x$ tcc -run t.c
=C2=A0 =C2=A0 x=3D0 errno=3DSuccess

=C2=A0 wherever i try, and so it seems to me the GNU coreutils
=C2=A0 lib/fchownat.c fallback implementation of lchownat() is bogus
=C2=A0 thus??

And so i am here to report that?.

=C2=A0 [1] https://lore.kernel.org/kbd/20250910123724.s2uU= 6eVo@steffen%25sdaoden.eu/T/#m80238c1410528dc960f54dad20a126fa5ecdb059<= br> =C2=A0 [2] https://git.kernel.org/pub/scm/linux/kernel/git/= legion/kbd.git/commit/?id=3Ddb82eb6f86e6c0b8ac4260e88b88d66e1cd7c077
Ciao,

--steffen
|
|Der Kragenbaer,=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 The= moon bear,
|der holt sich munter=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0he cheerfully= and one by one
|einen nach dem anderen runter=C2=A0 wa.ks himself off
|(By Robert Gernhardt)



--00000000000013b193063e9a73c3-- From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 12 09:39:50 2025 Received: (at submit) by debbugs.gnu.org; 12 Sep 2025 13:39:50 +0000 Received: from localhost ([127.0.0.1]:49646 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ux40D-0007Is-E0 for submit@debbugs.gnu.org; Fri, 12 Sep 2025 09:39:50 -0400 Received: from lists.gnu.org ([2001:470:142::17]:45858) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ux40A-0007IQ-22 for submit@debbugs.gnu.org; Fri, 12 Sep 2025 09:39:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux404-0004gN-Et for bug-coreutils@gnu.org; Fri, 12 Sep 2025 09:39:40 -0400 Received: from sdaoden.eu ([217.144.132.164]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux401-0004BM-9j for bug-coreutils@gnu.org; Fri, 12 Sep 2025 09:39:39 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sdaoden.eu; s=citron; t=1757684370; x=1758351036; h=date:author:from:to:cc:subject: message-id:in-reply-to:references:mail-followup-to:openpgp:blahblahblah: mime-version:content-type:content-transfer-encoding:author:from:subject: date:to:cc:resent-author:resent-date:resent-from:resent-sender:resent-to: resent-cc:resent-reply-to:resent-message-id:in-reply-to:references: mime-version:content-type:content-transfer-encoding:content-disposition: content-id:content-description:message-id:mail-followup-to:openpgp: blahblahblah; bh=EHXlUXOb1v61mOVRl0OaZ/GQnQQTCRY3L0Y48ke2fpU=; b=MiNfRiJlVgyuRm9AcgdBy1xLtSWGIFvP7He9JQb9tE6DoJ03kBZqjExVqmE/8sfbOTb5ALdn lweOIh+jcv+eGSnH11EJcYZCryddv4Tv9uv5d4+QDszbi6frz+VTfD05a/oKT5p7vlzf2vmYHV 7+2oP7cNbAV4TClTkMBxqc/FjU8h1QrtxMuCa2U667oG406g/sZ/ytBLmlWdm7fvg481eYz0K/ 9uYAxMUo47Bk0MDh7KRZjNI7KcBtzKH6Qg84oa1K2+52KGqq4sgZOOsjCCKXBZQov+ZsAanbJf 32tdq912orbwQgh3a6eX32hRFWf9rvejXGSeLBdcv5SEIGxw== Date: Fri, 12 Sep 2025 15:39:28 +0200 Author: Steffen Nurpmeso From: Steffen Nurpmeso To: Martin D Kealey Subject: Re: bug#79433: 9.7: cp(1): lchownat(2/3) fallback bogus? Message-ID: <20250912133928.TkuN0pdA@steffen%sdaoden.eu> In-Reply-To: References: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> Mail-Followup-To: Martin D Kealey , bug-coreutils@gnu.org, 79433@debbugs.gnu.org, Steffen Nurpmeso User-Agent: s-nail v14.9.25-709-g8a51e128fe-dirty OpenPGP: id=EE19E1C1F2F7054F8D3954D8308964B51883A0DD; url=https://ftp.sdaoden.eu/steffen.asc; preference=signencrypt BlahBlahBlah: Any stupid boy can crush a beetle. But all the professors in the world can make no bugs. MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass client-ip=217.144.132.164; envelope-from=steffen@sdaoden.eu; helo=sdaoden.eu X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit Cc: bug-coreutils@gnu.org, 79433@debbugs.gnu.org, Steffen Nurpmeso X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) Hello Martin o/, [i resort a bit] Martin D Kealey wrote in : |On Thu, 11 Sept 2025 at 21:49, Steffen Nurpmeso wrot= e: ... |> cp: failed to preserve ownership for |> /tmp/.pkgmk/pkg/usr/share/kbd/keymaps/i386/qwertz/sr-latin.map.gz: |> Operation not supported ... |>|>|cp -a is used in the makefile. The -a means no dereference and preser= ve |>|>|links and other attributes. This should not be a problem if you have |>|>|the same user. |>|> |>|> GNU coreutils 9.7 cp(1) is of a different opinion: |>|> |>|> $ touch xa |>|> $ ln -s xa xb |>|> $ cp -a xb xc |>|> cp: failed to preserve ownership for xc: Operation not supported |>| |>|No. This is security settings on your system. |>| |>|On my laptop: ... |> [.] Looking at coreutils cp.c the error comes from |> |> if (x->preserve_ownership) |> { |> if (lchownat (dst_dirfd, relname, p->st.st_uid, p->st.st_gi= d) |> !=3D 0) |> ... |> error (0, errno, _("failed to preserve ownership for ... |> |> wherever i try, and so it seems to me the GNU coreutils |> lib/fchownat.c fallback implementation of lchownat() is bogus ... |It's important to note the distinction between ENOSYS =E2=80=9CFunction n= ot=20 |implemented=E2=80=9D, which means there's no kernel call available, and= =C2=A0 ENOTSUP =E2=80=9C |Operation not supported=E2=80=9D, which means the system call exists but = the=20 |filesystem driver doesn't implement the requested function (either=20 |generally, or not for the target object). | |If lchown exists but reports ENOTSUP, then it is extremely unlikely that= =20 (Like i had shown, lchown(3/2) just works.) |fchownat would get a different result, especially when you consider that= =20 |lchown may=C2=A0actually be a library call that invokes fchownat. | |What filesystem underpins the files you're trying to manipulate in the=20 |example you've given? (Any chance it's NFS?) This is BTRFS and tmpfs. This is glibc 2.40, and Linux kernel 6.1.150. There is no lchown* except for $ grep -r lchown /usr/include/ /usr/include/llvm/Analysis/TargetLibraryInfo.def:/// int lchown(const cha= r *path, uid_t owner, gid_t group); /usr/include/llvm/Analysis/TargetLibraryInfo.def:TLI_DEFINE_ENUM_INTERNAL= (lchown) /usr/include/llvm/Analysis/TargetLibraryInfo.def:TLI_DEFINE_STRING_INTERN= AL("lchown") /usr/include/uv.h:UV_EXTERN int uv_fs_lchown(uv_loop_t* loop, /usr/include/libmount/libmount.h: * filesystem mounted, but subsequent X-= mount.owner=3D/X-mount.group=3D lchown(2) failed /usr/include/unistd.h:extern int lchown (const char *__file, __uid_t __ow= ner, __gid_t __group) /usr/include/bits/syscall.h:#ifdef __NR_lchown /usr/include/bits/syscall.h:# define SYS_lchown __NR_lchown /usr/include/bits/syscall.h:#ifdef __NR_lchown32 /usr/include/bits/syscall.h:# define SYS_lchown32 __NR_lchown32 /usr/include/asm/unistd_x32.h:#define __NR_lchown (__X32_SYSCALL_BIT + 94) /usr/include/asm/unistd_64.h:#define __NR_lchown 94 /usr/include/asm/unistd_32.h:#define __NR_lchown 16 /usr/include/asm/unistd_32.h:#define __NR_lchown32 198 /usr/include/python3.12/pyconfig.h:/* Define to 1 if you have the 'lchown= ' function. */ |-Martin | |PS: The English descriptions of those errors are arguably swapped, but=20 |their E* symbols are clear(er). --End of --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt) From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 12 11:17:38 2025 Received: (at 79433) by debbugs.gnu.org; 12 Sep 2025 15:17:38 +0000 Received: from localhost ([127.0.0.1]:50613 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ux5Ws-00057g-9p for submit@debbugs.gnu.org; Fri, 12 Sep 2025 11:17:38 -0400 Received: from mail.cs.ucla.edu ([131.179.128.66]:35126) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ux5Wp-00057Q-6T for 79433@debbugs.gnu.org; Fri, 12 Sep 2025 11:17:36 -0400 Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id 091663C2BEBB5; Fri, 12 Sep 2025 08:17:28 -0700 (PDT) Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10032) with ESMTP id eDJsEBhwPwIC; Fri, 12 Sep 2025 08:17:27 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id D515D3C306625; Fri, 12 Sep 2025 08:17:27 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.cs.ucla.edu D515D3C306625 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.ucla.edu; s=9D0B346E-2AEB-11ED-9476-E14B719DCE6C; t=1757690247; bh=x7nbznHD09hnDWZBzN3c6Ew7Hpnr3j6srmKHnAlrMvg=; h=Message-ID:Date:MIME-Version:To:From; b=WdT97scOKM09YOBLkabEZj5q4knr1I8iGPawYVuhPLO+RlAPrHyXvVs0uAMBeEi7q Ha2/F2EJH4yyzs/XSXTN4x8kZxLsKge9tYSQqNi6Cno157vQdGy0+6O65nFXWUdyRW qdN3FUPa6SLIuK0Z6MQU9gm+RVYvwGyn4IygvJRzxcH+BksEpzoMEQKu4aWpZcpEoj 6xQa3Xg1LVVYawCOk33T9bEMbDoHRyYUgrHxHao0q8o2qIVRXyEbCnkqVAyYio05rO O88srXkAjSGuG601lHDzPH0uJ+dNoqnia/1cxnQKk8lQGE0GSxlTScAR5/x6AegC7K +O0xnjUNlBZjw== X-Virus-Scanned: amavis at mail.cs.ucla.edu Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10026) with ESMTP id OS20ayI2jm9D; Fri, 12 Sep 2025 08:17:27 -0700 (PDT) Received: from penguin.cs.ucla.edu (47-154-17-226.fdr01.snmn.ca.ip.frontiernet.net [47.154.17.226]) by mail.cs.ucla.edu (Postfix) with ESMTPSA id B793B3C2BEBB5; Fri, 12 Sep 2025 08:17:27 -0700 (PDT) Message-ID: <3fe25ff1-2c46-4d2f-997f-3e9dc9c6ca69@cs.ucla.edu> Date: Fri, 12 Sep 2025 08:17:26 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#79433: 9.7: cp(1): lchownat(2/3) fallback bogus? To: Steffen Nurpmeso References: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> Content-Language: en-US From: Paul Eggert Organization: UCLA Computer Science Department In-Reply-To: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79433 Cc: 79433@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2025-09-11 04:49, Steffen Nurpmeso wrote: > if (lchownat (dst_dirfd, relname, p->st.st_uid, p->st.st_gid) > != 0) > ... > error (0, errno, _("failed to preserve ownership for %s"), > quoteaf (dst_name)); > > Here there is no lchownat(3/2), No kernel or C library has lchownat; that's a convenience function defined in coreutils/lib/openat.h (taken from Gnulib), equivalent to fchownat (..., AT_SYMLINK_NOFOLLOW). What does "strace cp -a xb xc" say? I see this: ... geteuid32() = 1000 openat(AT_FDCWD, "xb", O_RDONLY|O_LARGEFILE|O_PATH|O_DIRECTORY) = -1 ENOENT (No such file or directory) statx(AT_FDCWD, "xa", AT_STATX_SYNC_AS_STAT|AT_SYMLINK_NOFOLLOW|AT_NO_AUTOMOUNT, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0664, stx_size=4, ...}) = 0 lgetxattr("xa", "security.selinux", "unconfined_u:object_r:user_tmp_t"..., 255) = 36 futex(0xf7f7ccc4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 openat(AT_FDCWD, "/proc/thread-self/attr/fscreate", O_RDWR|O_LARGEFILE|O_CLOEXEC) = 3 write(3, "unconfined_u:object_r:user_tmp_t"..., 36) = 36 close(3) = 0 openat(AT_FDCWD, "xa", O_RDONLY|O_LARGEFILE|O_NOFOLLOW) = 3 statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0664, stx_size=4, ...}) = 0 openat(AT_FDCWD, "xb", O_WRONLY|O_CREAT|O_EXCL|O_LARGEFILE, 0600) = 4 ioctl(4, BTRFS_IOC_CLONE or FICLONE, 3) = -1 EOPNOTSUPP (Operation not supported) statx(4, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0600, stx_size=0, ...}) = 0 fadvise64_64(3, 0, 0, POSIX_FADV_SEQUENTIAL) = 0 uname({sysname="Linux", nodename="penguin.cs.ucla.edu", ...}) = 0 copy_file_range(3, NULL, 4, NULL, 1073741824, 0) = 4 copy_file_range(3, NULL, 4, NULL, 1073741824, 0) = 0 utimensat(4, NULL, [{tv_sec=1757689789, tv_nsec=946283700} /* 2025-09-12T08:09:49.946283700-0700 */, {tv_sec=1757689789, tv_nsec=946283700} /* 2025-09-12T08:09:49.946283700-0700 */], 0) = 0 flistxattr(3, NULL, 0) = 17 flistxattr(3, "security.selinux\0", 17) = 17 fchmod(4, 0100664) = 0 flistxattr(3, NULL, 0) = 17 flistxattr(3, "security.selinux\0", 17) = 17 openat(AT_FDCWD, "/etc/xattr.conf", O_RDONLY|O_LARGEFILE) = 5 statx(5, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=817, ...}) = 0 read(5, "# /etc/xattr.conf\n#\n# Format:\n# "..., 4096) = 817 read(5, "", 4096) = 0 close(5) = 0 openat(AT_FDCWD, "/usr/lib/gconv/gconv-modules.cache", O_RDONLY|O_CLOEXEC) = 5 statx(5, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=27010, ...}) = 0 mmap2(NULL, 27010, PROT_READ, MAP_SHARED, 5, 0) = 0xf7f99000 close(5) = 0 futex(0xf7f2eee8, FUTEX_WAKE_PRIVATE, 2147483647) = 0 close(4) = 0 close(3) = 0 ... What happens if you use fchownat directly? Something like the following: #include #include #include #include #include #include #include int main (void) { char const *user = getenv ("LOGNAME"); struct passwd const *pwd = getpwnam (user); struct group const *grp = getgrnam (user); int x = fchownat (AT_FDCWD, "xb", pwd->pw_uid, grp->gr_gid, AT_SYMLINK_NOFOLLOW); if (x < 0) perror ("fchownat"); int y = lchown ("xb", pwd->pw_uid, grp->gr_gid); if (y < 0) perror ("lchown"); } I see this: ... fchownat(AT_FDCWD, "xb", 1000, 1000, AT_SYMLINK_NOFOLLOW) = 0 lchown("xb", 1000, 1000) = 0 ... From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 13 11:20:08 2025 Received: (at 79433) by debbugs.gnu.org; 13 Sep 2025 15:20:08 +0000 Received: from localhost ([127.0.0.1]:55948 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uxS2p-0001S6-6i for submit@debbugs.gnu.org; Sat, 13 Sep 2025 11:20:07 -0400 Received: from sdaoden.eu ([217.144.132.164]:40946) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uxS2l-0001RK-C6 for 79433@debbugs.gnu.org; Sat, 13 Sep 2025 11:20:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sdaoden.eu; s=citron; t=1757776800; x=1758443466; h=date:author:from:to:cc:subject: message-id:in-reply-to:references:openpgp:blahblahblah:author:from: subject:date:to:cc:resent-author:resent-date:resent-from:resent-sender: resent-to:resent-cc:resent-reply-to:resent-message-id:in-reply-to: references:mime-version:content-type:content-transfer-encoding: content-disposition:content-id:content-description:message-id: mail-followup-to:openpgp:blahblahblah; bh=4i+gsPpxhSHoFd4Ge54Iz5TMCPssBa3SvBPUeDroUo8=; b=ZT7PTmjIvm2IcHdYKIqHbzytQbT1v5+0+rkcRwTma/kd/Y+k2OevNIejLGt5NCYT5Q5fQf9y RDWFRMsmQOyHoLbhaxGK5G9B51x9TIV53wWS0TY+FaK5R33DuS/6MlKc/ROWraxiT/8N7Y4wJL xgTJfBzfSp3VqOinZPFQdG/cupnlLeWfaT2Ca15Od5K09sk59aoS0E352SaXQWERzz8YpmR9et vHuWEt1NzzMgV1bXW6ZU8Y5mBwBkuSubl9hWSg8rEE9PZX3WgsD0c6eglNYnLpDkUUMq8o8PnU kGtMc5t0XCw7O2/kAxF54MopB0owHbQzIWZdh2IdxpDWZLNg== Date: Sat, 13 Sep 2025 16:56:05 +0200 Author: Steffen Nurpmeso From: Steffen Nurpmeso To: Paul Eggert Subject: Re: bug#79433: 9.7: cp(1): lchownat(2/3) fallback bogus? Message-ID: <20250913145605.8pwzZFk4@steffen%sdaoden.eu> In-Reply-To: <3fe25ff1-2c46-4d2f-997f-3e9dc9c6ca69@cs.ucla.edu> References: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> <3fe25ff1-2c46-4d2f-997f-3e9dc9c6ca69@cs.ucla.edu> User-Agent: s-nail v14.9.25-709-g8a51e128fe-dirty OpenPGP: id=EE19E1C1F2F7054F8D3954D8308964B51883A0DD; url=https://ftp.sdaoden.eu/steffen.asc; preference=signencrypt BlahBlahBlah: Any stupid boy can crush a beetle. But all the professors in the world can make no bugs. X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79433 Cc: 79433@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Paul Eggert wrote in <3fe25ff1-2c46-4d2f-997f-3e9dc9c6ca69@cs.ucla.edu>: |On 2025-09-11 04:49, Steffen Nurpmeso wrote: |> if (lchownat (dst_dirfd, relname, p->st.st_uid, p->st.st_gid\ |> ) |> != 0) |> ... |> error (0, errno, _("failed to preserve ownership \ |> for %s"), |> quoteaf (dst_name)); |> |> Here there is no lchownat(3/2), | |No kernel or C library has lchownat; that's a convenience function |defined in coreutils/lib/openat.h (taken from Gnulib), equivalent to |fchownat (..., AT_SYMLINK_NOFOLLOW). | |What does "strace cp -a xb xc" say? I see this: geteuid() = 1000 openat(AT_FDCWD, "c", O_RDONLY|O_PATH|O_DIRECTORY) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "b", {st_mode=S_IFLNK|0777, st_size=1, ...}, AT_SYMLINK_NOFOLLOW) = 0 newfstatat(AT_FDCWD, "c", 0x7ffdf869dea0, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory) readlink("b", "a", 2) = 1 symlinkat("a", AT_FDCWD, "c") = 0 newfstatat(AT_FDCWD, "c", {st_mode=S_IFLNK|0777, st_size=1, ...}, AT_SYMLINK_NOFOLLOW) = 0 lchown("c", 1000, 1000) = 0 fchmodat2(AT_FDCWD, "c", 0777, AT_SYMLINK_NOFOLLOW) = -1 ENOSYS (Function not implemented) ^^ openat(AT_FDCWD, "c", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3 newfstatat(3, "", {st_mode=S_IFLNK|0777, st_size=1, ...}, AT_EMPTY_PATH) = 0 close(3) = 0 fcntl(1, F_GETFL) = 0x2 (flags O_RDWR) write(2, "cp: ", 4cp: ) = 4 write(2, "failed to preserve ownership for"..., 34failed to preserve ownership for c) = 34 write(2, ": Operation not supported", 25: Operation not supported) = 25 write(2, "\n", 1 ) = 1 lseek(0, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek) ... |What happens if you use fchownat directly? Something like the following: That just works. I do not know how $ grep -r fchmodat2 /usr/include/ /usr/include/bits/syscall.h:#ifdef __NR_fchmodat2 /usr/include/bits/syscall.h:# define SYS_fchmodat2 __NR_fchmodat2 gets into there, the kernel definitely does not have that as via grep. Generated at glibc build time via # install kernel headers make -C /usr/src/linux mrproper make -C /usr/src/linux INSTALL_HDR_PATH=$PKG/usr headers_install --End of <3fe25ff1-2c46-4d2f-997f-3e9dc9c6ca69@cs.ucla.edu> --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt) From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 13 13:17:43 2025 Received: (at 79433) by debbugs.gnu.org; 13 Sep 2025 17:17:43 +0000 Received: from localhost ([127.0.0.1]:56613 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uxTsd-0003Wu-1p for submit@debbugs.gnu.org; Sat, 13 Sep 2025 13:17:43 -0400 Received: from mail.cs.ucla.edu ([131.179.128.66]:45910) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uxTsZ-0003VZ-4b for 79433@debbugs.gnu.org; Sat, 13 Sep 2025 13:17:40 -0400 Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id E3F1B3C2BEB9D; Sat, 13 Sep 2025 10:17:31 -0700 (PDT) Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10032) with ESMTP id xgHRSZrTH0hC; Sat, 13 Sep 2025 10:17:31 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id BCCDB3C3068FD; Sat, 13 Sep 2025 10:17:31 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.cs.ucla.edu BCCDB3C3068FD DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.ucla.edu; s=9D0B346E-2AEB-11ED-9476-E14B719DCE6C; t=1757783851; bh=Pt5uXpgpbrV/jTa9NSIMtDWzxa6KJLsDoNFOnknlAwU=; h=Message-ID:Date:MIME-Version:To:From; b=YRUEsFmibWyW/cdglUs0Fq69eCPTs1V39MxdwzGBt4PqmqkQjw19et56HUfGF4dUh ceNKzt+NAyZIjPkaUxkqZq3dHoj2+1E4JTw8kvWSzmKRYNOUa05Pc8cwe5ogEHcG8F hFKCtFSnuH2ErlZwC66SRuumZfYBCt/NrEEXpXMPJohyZa7q/wdN9gUxvHPJ3BUUcK yra0LdalSZOYF0zV5JMgQd4A+5zqJ9dRkbTUVv0v86eUKlCFO3XojMZpwfCR/ZiG1R 6AwK5h752nWqGpuGKAdSgZ/mCF/4pEBXhJ8w8Th81qmywD7c56/jDgWyTxiNtdyVR0 tnYsDSA0w1GDg== X-Virus-Scanned: amavis at mail.cs.ucla.edu Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10026) with ESMTP id Rh4TMe-lLeqd; Sat, 13 Sep 2025 10:17:31 -0700 (PDT) Received: from penguin.cs.ucla.edu (47-154-17-226.fdr01.snmn.ca.ip.frontiernet.net [47.154.17.226]) by mail.cs.ucla.edu (Postfix) with ESMTPSA id 9DD9E3C2BEB9D; Sat, 13 Sep 2025 10:17:31 -0700 (PDT) Message-ID: <34c2ddd8-e258-496f-ac97-797c8982d8c3@cs.ucla.edu> Date: Sat, 13 Sep 2025 10:17:30 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#79433: 9.7: cp(1): lchownat(2/3) fallback bogus? To: Steffen Nurpmeso References: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> <3fe25ff1-2c46-4d2f-997f-3e9dc9c6ca69@cs.ucla.edu> <20250913145605.8pwzZFk4@steffen%sdaoden.eu> Content-Language: en-US From: Paul Eggert Organization: UCLA Computer Science Department In-Reply-To: <20250913145605.8pwzZFk4@steffen%sdaoden.eu> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79433 Cc: 79433@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2025-09-13 07:56, Steffen Nurpmeso wrote: > |What does "strace cp -a xb xc" say? I see this: > > geteuid() = 1000 > openat(AT_FDCWD, "c", O_RDONLY|O_PATH|O_DIRECTORY) = -1 ENOENT (No such file or directory) > newfstatat(AT_FDCWD, "b", {st_mode=S_IFLNK|0777, st_size=1, ...}, AT_SYMLINK_NOFOLLOW) = 0 > newfstatat(AT_FDCWD, "c", 0x7ffdf869dea0, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory) > readlink("b", "a", 2) = 1 > symlinkat("a", AT_FDCWD, "c") = 0 > newfstatat(AT_FDCWD, "c", {st_mode=S_IFLNK|0777, st_size=1, ...}, AT_SYMLINK_NOFOLLOW) = 0 > lchown("c", 1000, 1000) = 0 > fchmodat2(AT_FDCWD, "c", 0777, AT_SYMLINK_NOFOLLOW) = -1 ENOSYS (Function not implemented) > ^^ So far the bug report has been about lchownat. But now you're saying that cp fails because fchmodat2 fails. So it sounds like we have been barking up the wrong tree by worrying about the chown-related syscalls, and that we should instead worry about chmod-related syscalls. > I do not know how > > $ grep -r fchmodat2 /usr/include/ > /usr/include/bits/syscall.h:#ifdef __NR_fchmodat2 > /usr/include/bits/syscall.h:# define SYS_fchmodat2 __NR_fchmodat2 > > gets into there, the kernel definitely does not have that as via > grep. Generated at glibc build time via > > # install kernel headers > make -C /usr/src/linux mrproper > make -C /usr/src/linux INSTALL_HDR_PATH=$PKG/usr headers_install Recent glibc fchmodat uses fchmodat2 if available. It assumes fchmodat2 is available if __ASSUME_FCHMODAT2 is nonzero, and __ASSUME_FCHMODAT2 is nonzero if you build glibc with headers from Linux kernel 6.6 or later. It sounds like your glibc was built with __ASSUME_FCHMODAT2 = 1, but is running atop an older kernel lacking fchmodat2. If so, that would explain the abovementioned symptoms, and it would be a bug in how your glibc was built, not a coreutils bug. From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 13 13:36:50 2025 Received: (at 79433) by debbugs.gnu.org; 13 Sep 2025 17:36:50 +0000 Received: from localhost ([127.0.0.1]:56783 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uxUB8-0005JZ-0X for submit@debbugs.gnu.org; Sat, 13 Sep 2025 13:36:50 -0400 Received: from sdaoden.eu ([217.144.132.164]:27404) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uxUB2-0005J6-Nd for 79433@debbugs.gnu.org; Sat, 13 Sep 2025 13:36:47 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sdaoden.eu; s=citron; t=1757785001; x=1758451667; h=date:author:from:to:cc:subject: message-id:in-reply-to:references:openpgp:blahblahblah:author:from: subject:date:to:cc:resent-author:resent-date:resent-from:resent-sender: resent-to:resent-cc:resent-reply-to:resent-message-id:in-reply-to: references:mime-version:content-type:content-transfer-encoding: content-disposition:content-id:content-description:message-id: mail-followup-to:openpgp:blahblahblah; bh=FaCcU2eVz88rzoD7KvkPdK/OUyJ6tK2y5smgCALOI6w=; b=DhoSX+cTKPNpxFTpEo2ht60rXFlyd507cPudgA6pwrIhkLHphc74azeS/oYW+0B4xED5aw5U t8NGgBtDNPLPNn0DHzXJj8R19Dx/HRYoTDev5odkRj2H6aAROmgSbwubxCcsM1rFcIwQziWyWV fDjAf0aGlelLSFbSjEeAwR841Jk15XIG0IFxbqZ+xDtrWYMSb9e8xqfzHfLn/eurwg+DRW9i40 +hTGRW+m9GIlhoXKvZMLVlKInA99XPMi3MFy00aQDOa2Ypvke+i9RP9b4Wm+Q3j7u5kFrotvM1 Tk6ZxwL6HRcMZy9Gio/7slRzbQyDuXd3u49tgHaB9fgD9Z1A== Date: Sat, 13 Sep 2025 19:36:40 +0200 Author: Steffen Nurpmeso From: Steffen Nurpmeso To: Paul Eggert Subject: Re: bug#79433: 9.7: cp(1): lchownat(2/3) fallback bogus? Message-ID: <20250913173640.swZGt4kl@steffen%sdaoden.eu> In-Reply-To: <34c2ddd8-e258-496f-ac97-797c8982d8c3@cs.ucla.edu> References: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> <3fe25ff1-2c46-4d2f-997f-3e9dc9c6ca69@cs.ucla.edu> <20250913145605.8pwzZFk4@steffen%sdaoden.eu> <34c2ddd8-e258-496f-ac97-797c8982d8c3@cs.ucla.edu> User-Agent: s-nail v14.9.25-709-g8a51e128fe-dirty OpenPGP: id=EE19E1C1F2F7054F8D3954D8308964B51883A0DD; url=https://ftp.sdaoden.eu/steffen.asc; preference=signencrypt BlahBlahBlah: Any stupid boy can crush a beetle. But all the professors in the world can make no bugs. X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79433 Cc: 79433@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Paul Eggert wrote in <34c2ddd8-e258-496f-ac97-797c8982d8c3@cs.ucla.edu>: |On 2025-09-13 07:56, Steffen Nurpmeso wrote: |>|What does "strace cp -a xb xc" say? I see this: |> |> geteuid() = 1000 |> openat(AT_FDCWD, "c", O_RDONLY|O_PATH|O_DIRECTORY) = -1 ENOENT \ |> (No such file or directory) |> newfstatat(AT_FDCWD, "b", {st_mode=S_IFLNK|0777, st_size=1, ...}, \ |> AT_SYMLINK_NOFOLLOW) = 0 |> newfstatat(AT_FDCWD, "c", 0x7ffdf869dea0, AT_SYMLINK_NOFOLLOW) \ |> = -1 ENOENT (No such file or directory) |> readlink("b", "a", 2) = 1 |> symlinkat("a", AT_FDCWD, "c") = 0 |> newfstatat(AT_FDCWD, "c", {st_mode=S_IFLNK|0777, st_size=1, ...}, \ |> AT_SYMLINK_NOFOLLOW) = 0 |> lchown("c", 1000, 1000) = 0 |> fchmodat2(AT_FDCWD, "c", 0777, AT_SYMLINK_NOFOLLOW) = -1 ENOSYS \ |> (Function not implemented) |> ^^ | |So far the bug report has been about lchownat. But now you're saying Well i am just a user, ok? I am saying nothing, i had a build problem caused by cp(1), the kbd guy thankfully fixed that via -dPR not -a, i then saw it is from a code line that says lchownat() in coreutils' cp.c, that was all i know. I stopped looking into (the horrible and terrible-style) GNU source code when i switched from Linux to FreeBSD 4.7, which was a fantastic experience in comparison! |that cp fails because fchmodat2 fails. So it sounds like we have been |barking up the wrong tree by worrying about the chown-related syscalls, |and that we should instead worry about chmod-related syscalls. Seems like that. |> I do not know how |> |> $ grep -r fchmodat2 /usr/include/ |> /usr/include/bits/syscall.h:#ifdef __NR_fchmodat2 |> /usr/include/bits/syscall.h:# define SYS_fchmodat2 __NR_fchmodat2 |> |> gets into there, the kernel definitely does not have that as via |> grep. Generated at glibc build time via |> |> # install kernel headers |> make -C /usr/src/linux mrproper |> make -C /usr/src/linux INSTALL_HDR_PATH=$PKG/usr headers_install | |Recent glibc fchmodat uses fchmodat2 if available. It assumes fchmodat2 |is available if __ASSUME_FCHMODAT2 is nonzero, and __ASSUME_FCHMODAT2 is |nonzero if you build glibc with headers from Linux kernel 6.6 or later. Like i said i have the Linux 6.1.* series, and i build glibc with the Linux kernel that i run (which is a local change, the default Pkgfile downloads and installs 6.1.86 just for that: # install kernel headers #make -C $SRC/linux-$_kernel_version mrproper #make -C $SRC/linux-$_kernel_version INSTALL_HDR_PATH=$PKG/usr headers_install make -C /usr/src/linux mrproper make -C /usr/src/linux INSTALL_HDR_PATH=$PKG/usr headers_install ... $SRC/$name-$version/configure \ --prefix=/usr \ --libdir=/usr/lib \ --libexecdir=/usr/lib \ --with-headers=$PKG/usr/include \ --enable-kernel=5.10 \ --enable-stack-protector=strong \ --enable-bind-now \ --enable-multi-arch \ --disable-profile \ --disable-werror \ --without-gd) |It sounds like your glibc was built with __ASSUME_FCHMODAT2 = 1, but is |running atop an older kernel lacking fchmodat2. If so, that would |explain the abovementioned symptoms, and it would be a bug in how your |glibc was built, not a coreutils bug. No. It was build exactly like so: # Description: The C library used in the GNU system # URL: https://www.gnu.org/software/libc/ # Maintainer: CRUX System Team, core-ports at crux dot nu name=glibc version=2.40 release=3 _kernel_version=6.1.86 source=(https://ftp.gnu.org/gnu/glibc/glibc-$version.tar.xz #https://www.kernel.org/pub/linux/kernel/v6.x/linux-$_kernel_version.tar.xz glibc-$version.patch hosts resolv.conf nsswitch.conf host.conf ld.so.conf locale-gen locale.gen.in) build() { # install kernel headers #make -C $SRC/linux-$_kernel_version mrproper #make -C $SRC/linux-$_kernel_version INSTALL_HDR_PATH=$PKG/usr headers_install make -C /usr/src/linux mrproper make -C /usr/src/linux INSTALL_HDR_PATH=$PKG/usr headers_install chown root:root $PKG/usr patch -p1 -d $SRC/$name-${version:0:4} -i $SRC/$name-$version.patch mkdir $SRC/build cd $SRC/build export libc_cv_slibdir=/lib $SRC/$name-$version/configure \ --prefix=/usr \ --libdir=/usr/lib \ --libexecdir=/usr/lib \ --with-headers=$PKG/usr/include \ --enable-kernel=5.10 \ --enable-stack-protector=strong \ --enable-bind-now \ --enable-multi-arch \ --disable-profile \ --disable-werror \ --without-gd make #make check make install_root=$PKG install install -m 0644 $SRC/$name-${version:0:4}/nscd/nscd.conf $PKG/etc install -d $PKG/var/db/nscd install -m 0644 $SRC/{hosts,resolv.conf,nsswitch.conf,host.conf,ld.so.conf} $PKG/etc ln -sf ../usr/share/zoneinfo/UTC $PKG/etc/localtime install -d $PKG/etc/ld.so.conf.d $PKG/usr/lib/locale touch $PKG/etc/ld.so.cache install -Dm755 $SRC/locale-gen $PKG/usr/sbin/locale-gen install -Dm644 $SRC/locale.gen.in $PKG/etc/locale.gen sed -e '1,3d' -e 's|/| |g' -e 's|\\| |g' -e 's|^|#|g' \ $SRC/$name-$version/localedata/SUPPORTED >> $PKG/etc/locale.gen LC_ALL=C ./elf/ld.so --library-path . $PKG/usr/bin/localedef \ --force --quiet \ --inputfile=$SRC/$name-$version/localedata/locales/C \ --charmap=$SRC/$name-$version/localedata/charmaps/UTF-8 \ $PKG/usr/lib/locale/C.UTF-8 || true rm -r $PKG/usr/share/locale \ $PKG/usr/bin/{tzselect,zdump} \ $PKG/usr/sbin/zic install -Dm644 $SRC/$name-$version/intl/locale.alias \ $PKG/usr/share/locale/locale.alias } The patch was -rw-rw-r-- 1 ports ports 1186584 Jul 24 17:01 glibc-2.40.patch and created like : ${version?'Need $version'} curl -L -o .glibc-$version.patch \ 'https://sourceware.org/git/?p=glibc.git;a=commitdiff_plain;hp=refs/tags/glibc-'$version';h=refs/heads/release/'$version'/master' (with $version being 2.40). That is all i know. --End of <34c2ddd8-e258-496f-ac97-797c8982d8c3@cs.ucla.edu> --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt) From debbugs-submit-bounces@debbugs.gnu.org Mon Sep 15 13:44:50 2025 Received: (at 79433) by debbugs.gnu.org; 15 Sep 2025 17:44:50 +0000 Received: from localhost ([127.0.0.1]:42400 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uyDFu-000401-Gp for submit@debbugs.gnu.org; Mon, 15 Sep 2025 13:44:50 -0400 Received: from mail.cs.ucla.edu ([131.179.128.66]:57076) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uyDFk-0003zG-RA for 79433@debbugs.gnu.org; Mon, 15 Sep 2025 13:44:40 -0400 Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id B1BF33C2C22D6; Mon, 15 Sep 2025 10:44:29 -0700 (PDT) Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10032) with ESMTP id lLRE9iod9QJA; Mon, 15 Sep 2025 10:44:29 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id 8AAD53C306600; Mon, 15 Sep 2025 10:44:29 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.cs.ucla.edu 8AAD53C306600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.ucla.edu; s=9D0B346E-2AEB-11ED-9476-E14B719DCE6C; t=1757958269; bh=jdolKBOpnWhpnh9qTSFiqvuHQq//y0twcRKWr6+jY0A=; h=Message-ID:Date:MIME-Version:To:From; b=Wl5lT/vDXxaZ0KPwwbjLCBWnhaaFX2qSj6hTf9ITcChyrbfW7UbBU/NGgNbvSDOmD Ywd4sOw81iizphUQnjmvTSLKiqBDcwGvwRpwjHmBsvkye89NXCbQgsHeDt3tqViJqL pTPuPByCMj60tF81dBEzCAJIRWqxIVEcbjas/HT4DDCpyKi0qxjrphMz+XosCIBwNB X6dt1Hd1d/MirXbZ9aMHSf2KIMqVXG4PpLL9Kw+yaZr5eW9hILvR1Kmo9VWXGCiF6Z VtOFSpckTxWgEqvqvNydSMyeryVEvq52xh7B03lTjFGnm5SIBHpFnhnf7bzWlbSf2y zDD9h8yxS3YGw== X-Virus-Scanned: amavis at mail.cs.ucla.edu Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10026) with ESMTP id 4awyegScJPK2; Mon, 15 Sep 2025 10:44:29 -0700 (PDT) Received: from penguin.cs.ucla.edu (47-154-17-226.fdr01.snmn.ca.ip.frontiernet.net [47.154.17.226]) by mail.cs.ucla.edu (Postfix) with ESMTPSA id 6DB403C2C22D6; Mon, 15 Sep 2025 10:44:29 -0700 (PDT) Message-ID: <4d962618-fee0-4cbb-b769-6ca61a96aef4@cs.ucla.edu> Date: Mon, 15 Sep 2025 10:44:28 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#79433: 9.7: cp(1): lchownat(2/3) fallback bogus? To: Steffen Nurpmeso References: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> <3fe25ff1-2c46-4d2f-997f-3e9dc9c6ca69@cs.ucla.edu> <20250913145605.8pwzZFk4@steffen%sdaoden.eu> <34c2ddd8-e258-496f-ac97-797c8982d8c3@cs.ucla.edu> <20250913173640.swZGt4kl@steffen%sdaoden.eu> Content-Language: en-US From: Paul Eggert Organization: UCLA Computer Science Department In-Reply-To: <20250913173640.swZGt4kl@steffen%sdaoden.eu> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79433 Cc: 79433@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2025-09-13 10:36, Steffen Nurpmeso wrote: > Paul Eggert wrote in > |that cp fails because fchmodat2 fails. So it sounds like we have been > |barking up the wrong tree by worrying about the chown-related syscalls, > |and that we should instead worry about chmod-related syscalls. > > Seems like that. On further looking at your trace in it seems that I was mistaken. Even though the fchmodat2 syscall fails with ENOSYS, it appears that the glibc fchmodat library function then calls openat with O_NOFOLLOW|O_PATH and then calls fstatat+AT_EMPTY_PATH, determines that "c" is a symlink, and then returns -1 with errno=ENOTSUP. But then I'm lost. If b is a symlink, I don't see why 'cp -a b c' would ever call fchmodat. The coreutils 9.7 source code says that fopr symlinks copy_internal should call symlinkat via force_symlinkat (copy.c:3117), then fchownat via lchownat (copy.c:3152), then utimensat (copy.c:3227), but it should never call fchmodat. Could you investigate why coreutils 9.7 cp is not behaving the way the source code says it should? You can use a debugger, or insert print statements, to figure out why in this particular case it is going awry. Lets get the chmod issue figured out first. We can worry about the chown issue later; one thing at a time. From debbugs-submit-bounces@debbugs.gnu.org Mon Sep 15 20:40:17 2025 Received: (at 79433) by debbugs.gnu.org; 16 Sep 2025 00:40:17 +0000 Received: from localhost ([127.0.0.1]:45236 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uyJk0-0007IT-H3 for submit@debbugs.gnu.org; Mon, 15 Sep 2025 20:40:17 -0400 Received: from sdaoden.eu ([217.144.132.164]:60832) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uyJjw-0007HF-2j for 79433@debbugs.gnu.org; Mon, 15 Sep 2025 20:40:13 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sdaoden.eu; s=citron; t=1757983209; x=1758649875; h=date:author:from:to:cc:subject: message-id:in-reply-to:references:openpgp:blahblahblah:author:from: subject:date:to:cc:resent-author:resent-date:resent-from:resent-sender: resent-to:resent-cc:resent-reply-to:resent-message-id:in-reply-to: references:mime-version:content-type:content-transfer-encoding: content-disposition:content-id:content-description:message-id: mail-followup-to:openpgp:blahblahblah; bh=G5Kz+2EPZKcvOg+0HbXdNyhmvzwX8Sro9cSwm1JX3KI=; b=R5Lm6iPW6JOPvA2unVaygIa2AobMPkvf/KBDN61OYGt9N5LxbnKDFTaEUT2W/d0kJ5jFp8qU R6NaR91ityaWXD76puOBsm7S+8J+IHiVq4BfjpHu9heOuKpFJu/yxxhCT5yRzWwvfLf0jn2niV olX4OKuXNpXynOc02PGViQM0RzmHx8arpM2M9WC8YicbPZt1Q3qf5tKAr3Tu8lW7QpoPMp+xkS aNtJSTaGH+7CLqEygvrdyrYj6eIatEB6fOaajtpz2yTOPx33S4ZsvYYcrunSIvA2eWwJDmN4+M nD4EZh32ukB8kzeLDtNgmyHMCYoKlYFNAwkh2gyrTY4OFfkQ== Date: Tue, 16 Sep 2025 02:40:07 +0200 Author: Steffen Nurpmeso From: Steffen Nurpmeso To: Paul Eggert Subject: Re: bug#79433: 9.7: cp(1): lchownat(2/3) fallback bogus? Message-ID: <20250916004007.NC_8Vftj@steffen%sdaoden.eu> In-Reply-To: <4d962618-fee0-4cbb-b769-6ca61a96aef4@cs.ucla.edu> References: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> <3fe25ff1-2c46-4d2f-997f-3e9dc9c6ca69@cs.ucla.edu> <20250913145605.8pwzZFk4@steffen%sdaoden.eu> <34c2ddd8-e258-496f-ac97-797c8982d8c3@cs.ucla.edu> <20250913173640.swZGt4kl@steffen%sdaoden.eu> <4d962618-fee0-4cbb-b769-6ca61a96aef4@cs.ucla.edu> User-Agent: s-nail v14.9.25-712-gc20034e134-dirty OpenPGP: id=EE19E1C1F2F7054F8D3954D8308964B51883A0DD; url=https://ftp.sdaoden.eu/steffen.asc; preference=signencrypt BlahBlahBlah: Any stupid boy can crush a beetle. But all the professors in the world can make no bugs. X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79433 Cc: 79433@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hello. Sorry for the late reply. Paul Eggert wrote in <4d962618-fee0-4cbb-b769-6ca61a96aef4@cs.ucla.edu>: |On 2025-09-13 10:36, Steffen Nurpmeso wrote: |> Paul Eggert wrote in |>|that cp fails because fchmodat2 fails. So it sounds like we have been |>|barking up the wrong tree by worrying about the chown-related syscalls, |>|and that we should instead worry about chmod-related syscalls. |> |> Seems like that. | |On further looking at your trace in | it seems that I |was mistaken. Even though the fchmodat2 syscall fails with ENOSYS, it Please stop right here. I followed your advice and rebuilt coreutils 9.7. I cannot reproduce the error, strace(1)d flows change due to fchmodat2(). I give the logs below. $ grep chown /usr/include/asm/unistd_64.h #define __NR_chown 92 #define __NR_fchown 93 #define __NR_lchown 94 #define __NR_fchownat 260 $ grep fchmod /usr/include/asm/unistd_64.h #define __NR_fchmod 91 #define __NR_fchmodat 268 $ ll /bin/cp -rwxr-xr-x 1 root root 126240 Apr 29 11:59 /bin/cp* $ ll src/cp -rwxr-x--- 1 steffen steffen 480888 Sep 16 01:18 src/cp* On my box, since April, quite some things changed (CRUX is rolling release, except for certain core ports which only get bugfixes). I cannot reconstruct exact software environment from April. $ strings /bin/cp | grep -i gcc: GCC: (CRUX-x86_64-multilib) 14.2.0 $ strings src/cp | grep -i gcc: GCC: (CRUX-x86_64-multilib) 14.3.0 That. glibc 2.40 is here since last Octobre (20th) i would think, it was updated three or four times (CVEs .. at least). Kernel is 6.1.* ever since it was declared LTS. |appears that the glibc fchmodat library function then calls openat with |O_NOFOLLOW|O_PATH and then calls fstatat+AT_EMPTY_PATH, determines that |"c" is a symlink, and then returns -1 with errno=ENOTSUP. | |But then I'm lost. If b is a symlink, I don't see why 'cp -a b c' would |ever call fchmodat. The coreutils 9.7 source code says that fopr |symlinks copy_internal should call symlinkat via force_symlinkat |(copy.c:3117), then fchownat via lchownat (copy.c:3152), then utimensat |(copy.c:3227), but it should never call fchmodat. | |Could you investigate why coreutils 9.7 cp is not behaving the way the |source code says it should? You can use a debugger, or insert print |statements, to figure out why in this particular case it is going awry. | |Lets get the chmod issue figured out first. We can worry about the chown |issue later; one thing at a time. So i instrumented the code paths first, which was stupid, since it just works if compiled now. I do have the /bin/cp from April. Here is the diff. --- _bin_cp.log 2025-09-16 01:22:35.366585945 +0200 +++ _src_cp.log 2025-09-16 01:23:14.693251872 +0200 @@ -1,40 +1,40 @@ -execve("/bin/cp", ["/bin/cp", "-a", "xb", "xc"], 0x7ffee5e2ffb8 /* 94 vars */) = 0 -brk(NULL) = 0x55d3bf6d7000 -mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbbd5a6c000 +execve("src/cp", ["src/cp", "-a", "xb", "xc"], 0x7ffcd92e2298 /* 94 vars */) = 0 +brk(NULL) = 0x55b6475d1000 +mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3595bd8000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) ... openat(AT_FDCWD, "/usr/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) @@ -43,52 +43,106 @@ read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0 ... prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 -getrandom("\x03\x0b\xe6\x00\xb2\xbe\xbd\x51", 8, GRND_NONBLOCK) = 8 -brk(NULL) = 0x55d3bf6d7000 -brk(0x55d3bf6f8000) = 0x55d3bf6f8000 +getrandom("\x4f\x4b\xf5\x75\x90\xf4\x18\xef", 8, GRND_NONBLOCK) = 8 +brk(NULL) = 0x55b6475d1000 +brk(0x55b6475f2000) = 0x55b6475f2000 openat(AT_FDCWD, "/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=3061520, ...}) = 0 -mmap(NULL, 3061520, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fbbd5400000 +mmap(NULL, 3061520, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f3595600000 close(3) = 0 geteuid() = 1000 +write(2, "PRE DO_COPY\n", 12PRE DO_COPY +) = 12 +write(2, "DO_COPY\n", 8DO_COPY +) = 8 openat(AT_FDCWD, "xc", O_RDONLY|O_PATH|O_DIRECTORY) = -1 ENOTDIR (Not a directory) +write(2, "WORK2 xb xc\n", 12WORK2 xb xc +) = 12 +write(2, "COPY_INTERNAL xb -> xc\n", 23COPY_INTERNAL xb -> xc +) = 23 newfstatat(AT_FDCWD, "xb", {st_mode=S_IFLNK|0777, st_size=2, ...}, AT_SYMLINK_NOFOLLOW) = 0 +write(2, " 10\n", 9 10 +) = 9 newfstatat(AT_FDCWD, "xc", {st_mode=S_IFLNK|0777, st_size=2, ...}, AT_SYMLINK_NOFOLLOW) = 0 unlinkat(AT_FDCWD, "xc", 0) = 0 readlink("xb", "xa", 3) = 2 symlinkat("xa", AT_FDCWD, "xc") = 0 ==DIVERT -newfstatat(AT_FDCWD, "xc", {st_mode=S_IFLNK|0777, st_size=2, ...}, AT_SYMLINK_NOFOLLOW) = 0 -lchown("xc", 1000, 1000) = 0 -fchmodat2(AT_FDCWD, "xc", 0777, AT_SYMLINK_NOFOLLOW) = -1 ENOSYS (Function not implemented) -openat(AT_FDCWD, "xc", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3 -newfstatat(3, "", {st_mode=S_IFLNK|0777, st_size=2, ...}, AT_EMPTY_PATH) = 0 -close(3) = 0 Like you say -- sysdeps/unix/sysv/linux/fchmodat.c went over fchmodat_fallback(). How did it get here at all is your question; well, /bin/cp is stripped, CRUX strips stuff. -fcntl(1, F_GETFL) = 0x2 (flags O_RDWR) -write(2, "cp: ", 4cp: ) = 4 -write(2, "failed to preserve ownership for"..., 35failed to preserve ownership for xc) = 35 -write(2, ": Operation not supported", 25: Operation not supported) = 25 -write(2, "\n", 1 -) = 1 +write(2, " 314\n", 10 314 +) = 10 ... +write(2, " 316\n", 10 316 +) = 10 +fchownat(AT_FDCWD, "xc", 1000, 1000, AT_SYMLINK_NOFOLLOW) = 0 +write(2, " 320\n", 10 320 +) = 10 .. +utimensat(AT_FDCWD, "xc", [{tv_sec=1757977042, tv_nsec=253998375} /* 2025-09-16T00:57:22.253998375+0200 */, {tv_sec=1757977033, tv_nsec=957331866} /* 2025-09-16T00:57:13.957331866+0200 */], AT_SYMLINK_NOFOLLOW) = 0 +llistxattr("xb", NULL, 0) = 0 +llistxattr("xb", 0x7ffdb169b050, 0) = 0 +write(2, "do_copy returns 1\n", 18do_copy returns 1 +) = 18 lseek(0, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek) close(0) = 0 close(1) = 0 close(2) = 0 -exit_group(1) = ? -+++ exited with 1 +++ +exit_group(0) = ? ++++ exited with 0 +++ I do have that /bin/cp. Btw i note that if i strip src/cp it is much smaller than /bin/cp, but, different compiler etc. Well, that will be hard, to get more out of that. I do not use debuggers. Well, i guess i could install gdb and set breakpoint around symlinkat(), then step and try to look around. --End of <4d962618-fee0-4cbb-b769-6ca61a96aef4@cs.ucla.edu> How likely is a miscompilation of gcc 4.2.0? --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt) From debbugs-submit-bounces@debbugs.gnu.org Mon Sep 15 23:53:15 2025 Received: (at 79433) by debbugs.gnu.org; 16 Sep 2025 03:53:15 +0000 Received: from localhost ([127.0.0.1]:45883 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uyMkl-0006mk-0y for submit@debbugs.gnu.org; Mon, 15 Sep 2025 23:53:15 -0400 Received: from mail.cs.ucla.edu ([131.179.128.66]:51768) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uyMkg-0006mP-MZ for 79433@debbugs.gnu.org; Mon, 15 Sep 2025 23:53:12 -0400 Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id AF8D63C3068C9; Mon, 15 Sep 2025 20:53:03 -0700 (PDT) Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10032) with ESMTP id ZY6iWvevwWvy; Mon, 15 Sep 2025 20:53:03 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id 86DD13C3068DC; Mon, 15 Sep 2025 20:53:03 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.cs.ucla.edu 86DD13C3068DC DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.ucla.edu; s=9D0B346E-2AEB-11ED-9476-E14B719DCE6C; t=1757994783; bh=yZpvnBtE2g6l7qBVYVpBRI72B3B0yHR1IM3/zDWtEKY=; h=Message-ID:Date:MIME-Version:To:From; b=b4aPTDK4dDP6RH10QkIEQUxRAgzTPAvovr24Uv1wTOGeIGySIS2CafNpnnRRgpBOK yaXD7Hskr+NxiLk9cI316L8vveBbEtEfz3oO0VNvU0q3mz4Ol0qRI6fVkIZYg9MiGz pr2ACgjd9CDD6BAwcC5MTtQI9j2dFGtTxIxaAYlA1H9yYfcM6z0jRw1Z3+P0pZXmhp GBzjxi+8DHUfm56vuL95nAQ2U917Tr3E70llwWC4Ub2SIiwUK2F0pxTFNzIX+dLELG 2EIOBISk8F4+JonLLK5DSYZIeRhKkkVHqg5S0z2M1c967J2PRsh0ZodRW/PMQBSqqY 8Ms663VdTgw5Q== X-Virus-Scanned: amavis at mail.cs.ucla.edu Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10026) with ESMTP id 08fn0QyaRhgF; Mon, 15 Sep 2025 20:53:03 -0700 (PDT) Received: from penguin.cs.ucla.edu (47-154-17-226.fdr01.snmn.ca.ip.frontiernet.net [47.154.17.226]) by mail.cs.ucla.edu (Postfix) with ESMTPSA id 682BF3C3068C9; Mon, 15 Sep 2025 20:53:03 -0700 (PDT) Message-ID: Date: Mon, 15 Sep 2025 20:53:02 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#79433: 9.7: cp(1): lchownat(2/3) fallback bogus? To: Steffen Nurpmeso References: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> <3fe25ff1-2c46-4d2f-997f-3e9dc9c6ca69@cs.ucla.edu> <20250913145605.8pwzZFk4@steffen%sdaoden.eu> <34c2ddd8-e258-496f-ac97-797c8982d8c3@cs.ucla.edu> <20250913173640.swZGt4kl@steffen%sdaoden.eu> <4d962618-fee0-4cbb-b769-6ca61a96aef4@cs.ucla.edu> <20250916004007.NC_8Vftj@steffen%sdaoden.eu> Content-Language: en-US From: Paul Eggert Organization: UCLA Computer Science Department In-Reply-To: <20250916004007.NC_8Vftj@steffen%sdaoden.eu> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79433 Cc: 79433@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2025-09-15 17:40, Steffen Nurpmeso wrote: > How likely is a miscompilation of gcc 4.2.0? I would think not likely, but possible. If things are working for you know, I wouldn't spend much time worrying about it. From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 16 08:20:24 2025 Received: (at 79433) by debbugs.gnu.org; 16 Sep 2025 12:20:24 +0000 Received: from localhost ([127.0.0.1]:47763 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uyUfX-000806-Lo for submit@debbugs.gnu.org; Tue, 16 Sep 2025 08:20:23 -0400 Received: from sdaoden.eu ([217.144.132.164]:32846) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uyUfR-0007xW-Iq for 79433@debbugs.gnu.org; Tue, 16 Sep 2025 08:20:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sdaoden.eu; s=citron; t=1758025214; x=1758691880; h=date:author:from:to:cc:subject: message-id:in-reply-to:references:openpgp:blahblahblah:mime-version: content-type:author:from:subject:date:to:cc:resent-author:resent-date: resent-from:resent-sender:resent-to:resent-cc:resent-reply-to: resent-message-id:in-reply-to:references:mime-version:content-type: content-transfer-encoding:content-disposition:content-id: content-description:message-id:mail-followup-to:openpgp:blahblahblah; bh=/n0/7aodbyDQ6Tw5A4gozNEwEbfZNZnQwhzt4ovvcbU=; b=ZJi1FlKgUQJTVJF7pciDqWibVHU/yaNoXnql1e+18TFdVk9cZGdxhKv31HmWadoTJi+AkEIk 9rNpFAmvQ4psKtMWZqADUvDWTJsT5zVV0LXRJOCtPReRZ8meePQFlq2GlTrZEkEwUeBd2s5PQ2 7QfM2r0LmAYNPtd/RCWK84ZkyvemrRTMMad794KCjX7hseWU8yc622iGVcxYv6FGkXX5EsH6rW P3k8BAsHPgU7rPZae0+fgnAZUjiXxR8t5k/E+QdD62zzd7Ek+1ji0uxAhSajxKklncP+pbHPLj ZkVUlaMGxwCZR7dW++YZd1mXY8e7w0U6Djb/8lqVerO+4K8Q== Date: Tue, 16 Sep 2025 14:20:11 +0200 Author: Steffen Nurpmeso From: Steffen Nurpmeso To: Paul Eggert Subject: Re: bug#79433: 9.7: cp(1): lchownat(2/3) fallback bogus? Message-ID: <20250916122011.vqDfAgh0@steffen%sdaoden.eu> In-Reply-To: References: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> <3fe25ff1-2c46-4d2f-997f-3e9dc9c6ca69@cs.ucla.edu> <20250913145605.8pwzZFk4@steffen%sdaoden.eu> <34c2ddd8-e258-496f-ac97-797c8982d8c3@cs.ucla.edu> <20250913173640.swZGt4kl@steffen%sdaoden.eu> <4d962618-fee0-4cbb-b769-6ca61a96aef4@cs.ucla.edu> <20250916004007.NC_8Vftj@steffen%sdaoden.eu> User-Agent: s-nail v14.9.25-712-gc20034e134-dirty OpenPGP: id=EE19E1C1F2F7054F8D3954D8308964B51883A0DD; url=https://ftp.sdaoden.eu/steffen.asc; preference=signencrypt BlahBlahBlah: Any stupid boy can crush a beetle. But all the professors in the world can make no bugs. MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=blnyb8eabUsg6drhZ9sSkLEoc968Vroe982O=-=" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79433 Cc: 79433@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --=-=blnyb8eabUsg6drhZ9sSkLEoc968Vroe982O=-= Content-Disposition: inline Content-ID: <20250916122011.zX05qImL@steffen%sdaoden.eu> Content-Type: text/plain; charset="us-ascii" Paul Eggert wrote in : |On 2025-09-15 17:40, Steffen Nurpmeso wrote: |> How likely is a miscompilation of gcc 4.2.0? | |I would think not likely, but possible. | |If things are working for you know, I wouldn't spend much time worrying |about it. i'll attach it plzip(1)ped; i now install gdb, from objdump(1) alone i cannot figure it out, the codepaths are too mangled for me having no history with neither coreutils nor glibc. $ ldd /bin/cp linux-vdso.so.1 (0x00007fffe1e13000) libacl.so.1 => /lib/libacl.so.1 (0x00007fcf92d3a000) libattr.so.1 => /lib/libattr.so.1 (0x00007fcf92d32000) libc.so.6 => /lib/libc.so.6 (0x00007fcf92b42000) /lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007fcf92d66000) I could also place the actual libs on the server, just in case anyone wants the complete picture; seems unnecessary. It is absolutely reproducible, so the problem is in the binary for sure. --End of --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt) --=-=blnyb8eabUsg6drhZ9sSkLEoc968Vroe982O=-= Content-Disposition: attachment; filename="cp-9.7-April.lz" Content-Type: application/x-lzip Content-Transfer-Encoding: base64 Content-ID: <20250916122011.wjBhQwh4@steffen%sdaoden.eu> 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 DA4g7QEAAAAAADe8AAAAAAAA --=-=blnyb8eabUsg6drhZ9sSkLEoc968Vroe982O=-=-- From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 16 10:37:08 2025 Received: (at 79433) by debbugs.gnu.org; 16 Sep 2025 14:37:09 +0000 Received: from localhost ([127.0.0.1]:49171 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uyWns-0002I6-9Q for submit@debbugs.gnu.org; Tue, 16 Sep 2025 10:37:08 -0400 Received: from sdaoden.eu ([217.144.132.164]:35214) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uyWno-0002HW-2s for 79433@debbugs.gnu.org; Tue, 16 Sep 2025 10:37:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sdaoden.eu; s=citron; t=1758033420; x=1758700086; h=date:author:from:to:cc:subject: message-id:in-reply-to:references:openpgp:blahblahblah:author:from: subject:date:to:cc:resent-author:resent-date:resent-from:resent-sender: resent-to:resent-cc:resent-reply-to:resent-message-id:in-reply-to: references:mime-version:content-type:content-transfer-encoding: content-disposition:content-id:content-description:message-id: mail-followup-to:openpgp:blahblahblah; bh=Vp8+/pt5DgTKYx/aCBxaR3rZQj/t0S1trX4xSRFNBlA=; b=CfQvzG/6rvH4NqGtCmrC/7WYlgEgYIahWOZu486z+KXb36t6+0U/yAasPK/Y8OjCc+svmQ+N jbhIOi0GxYXFvmZmwT2yeLNNOxHEhKDU8YE2LcbdKY2W0reCdKVOXtMYjleE0dZy8Ut+l/KBfe Qp7u4NMdH6MiErl8kz210NkPw/ZKPddLt7/E1V2mU/1RGgQC4WTunPvEBeu0fX05969gpy616h 3Yd8wvTbdgFklJMCWZl/gCPehWOmh3rACiJVQ+EzqLbwG6xXOfD3w6I5s+sR3qidlwNj2KtZkr nP420VeJSyOHQ5N3Xrao5Gt7momSk7CpxxBfsk1nRRerQXpQ== Date: Tue, 16 Sep 2025 16:36:58 +0200 Author: Steffen Nurpmeso From: Steffen Nurpmeso To: Paul Eggert Subject: Re: bug#79433: 9.7: cp(1): lchownat(2/3) fallback bogus? Message-ID: <20250916143658.Sac81LV7@steffen%sdaoden.eu> In-Reply-To: <20250916122011.vqDfAgh0@steffen%sdaoden.eu> References: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> <3fe25ff1-2c46-4d2f-997f-3e9dc9c6ca69@cs.ucla.edu> <20250913145605.8pwzZFk4@steffen%sdaoden.eu> <34c2ddd8-e258-496f-ac97-797c8982d8c3@cs.ucla.edu> <20250913173640.swZGt4kl@steffen%sdaoden.eu> <4d962618-fee0-4cbb-b769-6ca61a96aef4@cs.ucla.edu> <20250916004007.NC_8Vftj@steffen%sdaoden.eu> <20250916122011.vqDfAgh0@steffen%sdaoden.eu> User-Agent: s-nail v14.9.25-712-gc20034e134-dirty OpenPGP: id=EE19E1C1F2F7054F8D3954D8308964B51883A0DD; url=https://ftp.sdaoden.eu/steffen.asc; preference=signencrypt BlahBlahBlah: Any stupid boy can crush a beetle. But all the professors in the world can make no bugs. X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79433 Cc: 79433@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Steffen Nurpmeso wrote in <20250916122011.vqDfAgh0@steffen%sdaoden.eu>: |Paul Eggert wrote in | : ||On 2025-09-15 17:40, Steffen Nurpmeso wrote: ||> How likely is a miscompilation of gcc 4.2.0? || ||I would think not likely, but possible. ... |i'll attach it plzip(1)ped; i now install gdb, from objdump(1) |alone i cannot figure it out, the codepaths are too mangled for me |having no history with neither coreutils nor glibc. | | $ ldd /bin/cp | linux-vdso.so.1 (0x00007fffe1e13000) | libacl.so.1 => /lib/libacl.so.1 (0x00007fcf92d3a000) | libattr.so.1 => /lib/libattr.so.1 (0x00007fcf92d32000) | libc.so.6 => /lib/libc.so.6 (0x00007fcf92b42000) | /lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007fcf92d6\ | 6000) | |I could also place the actual libs on the server, just in case .. | --End of --End of <20250916122011.vqDfAgh0@steffen%sdaoden.eu> So for gdb/gdb --args /bin/cp --debug -a xb xc we enter else if (S_ISLNK (src_mode)) at copy.c:3106 since i see unlinkat readlink@plt symlinkat@plt free lstat@plt [hmm where; lchownat fallback?] lstat64 fstatat64 lchown@plt lchown Thereafter only 10 "??" stepi in between resolved lchown and lchmod@plt fchmodat which seems to be lchmodat() at line 3312, which makes me wonder given that -a implies x->preserve_timestamps and thus the utimensat() path at line 3220+ should have been taken, and, furthermore, there is line 3256+ saying /* The operations beyond this point may dereference a symlink. */ if (dest_is_symlink) return delayed_ok; and then there was "dest_is_symlink = true;" at line 3109 in the S_ISLNK() block. Now my gdb knowledge is exceeded, i hate debuggers. And they hate me $ curl -O https://ftp.gnu.org/gnu/gdb/gdb-16.3.tar.xz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 23.3M 100 23.3M 0 0 18748 0 0:21:43 0:21:43 --:--:-- 210080 but that aside. It would need a debug guru to look at the data, the file is stripped. And it is optimized, so if i "break symlinkat" and then "x/10i $pc"<>"stepi" (sorry, never debuggers) we see early returns (gdb) next Single stepping until exit from function symlinkat, ... (gdb) x/10i $pc => 0x555555560a15: mov %eax,%ebx 0x555555560a17: test %eax,%eax 0x555555560a19: je 0x5555555609e3 ... (gdb) x/10i $pc => 0x5555555609e3: mov 0x118(%rsp),%rax 0x5555555609eb: sub %fs:0x28,%rax 0x5555555609f4: jne 0x555555560a77 0x5555555609fa: add $0x128,%rsp 0x555555560a01: mov %ebx,%eax 0x555555560a03: pop %rbx 0x555555560a04: pop %rbp 0x555555560a05: pop %r12 0x555555560a07: pop %r13 0x555555560a09: pop %r14 [..] 0x555555560a0b: pop %r15 0x555555560a0d: ret So we actually left that, which we did not from the C source file me thinks, so likely gcc spilled code around, anyway it would require very deep inspection; and for me this is manual, since i never ever cared for debugger and their support, it could be there is a smart analyzer tools / extension somewhere which does exactly that, but this i really do not know. It seems to me coreutils do not embed actual compiler and linker flags used somewhere, so the binary is all i can give, i would think, shall reproduction from scratch be of interest for some gcc developers maybe. I have it here, if anyone gives debugger knowledge we can go deeper, i could maybe even create a ssh guest account if it is really important, and i have posted the compressed binary which surely is where the error can be found. My enthusiasm is hereby extinct, even though i would like to see the content of the "const struct cp_options *x" as well as "dest_is_symlink" local variable. I would think it is a miscompilation of gcc 14.2. Sorry for the noise, shall nothing further happen. I, you know, had that build error and it produced circles, i thought a quick note is a thing. You know, is there any just plain "cp -a symlink symlink" test in coreutils, for example, as i look. Ciao, --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt) From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 16 14:51:13 2025 Received: (at 79433) by debbugs.gnu.org; 16 Sep 2025 18:51:13 +0000 Received: from localhost ([127.0.0.1]:50284 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uyall-00063X-72 for submit@debbugs.gnu.org; Tue, 16 Sep 2025 14:51:13 -0400 Received: from sdaoden.eu ([217.144.132.164]:54064) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uyalf-00063C-Du for 79433@debbugs.gnu.org; Tue, 16 Sep 2025 14:51:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sdaoden.eu; s=citron; t=1758048664; x=1758715330; h=date:author:from:to:cc:subject: message-id:in-reply-to:references:openpgp:blahblahblah:author:from: subject:date:to:cc:resent-author:resent-date:resent-from:resent-sender: resent-to:resent-cc:resent-reply-to:resent-message-id:in-reply-to: references:mime-version:content-type:content-transfer-encoding: content-disposition:content-id:content-description:message-id: mail-followup-to:openpgp:blahblahblah; bh=K52FHIFsE/GTU949Zw7nK4zh8lI/SpSWqDy3lC54sFY=; b=CjiZmTENJALsJXUDj9kpvupKoSFzk8OlrSUwO42ESgEfsjoJjd+tyyI+Qmbtpf+SDqKNRoEL VsAlGbJK4hz2JFB5iWTNx9eYeLGkglnXwX7uqNzTjcCy+qJSl/8dx/Mla3ocvdWLvOJ9OaoOgP HWBg5nFW2VGPcBfxdaYR5/s+Esh0leIaCX5RDBFOuh1A2faKqmtn/UImxoYAVxnVLRhnFsZrEg zegDhGsRsHuZdm7Vo85LcuoO2Si1R14Ex2q0+o7Vry/s7K0DBbi0iMhZmKA/f9lv2i7VcEly1k tADm64IItA4JBsTq2o3ZtqvD6MKouRIzRvgKrHC8zZzNhP6w== Date: Tue, 16 Sep 2025 20:51:03 +0200 Author: Steffen Nurpmeso From: Steffen Nurpmeso To: Paul Eggert Subject: Re: bug#79433: 9.7: cp(1): lchownat(2/3) fallback bogus? Message-ID: <20250916185103.eUaqIy9H@steffen%sdaoden.eu> In-Reply-To: <20250916143658.Sac81LV7@steffen%sdaoden.eu> References: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> <3fe25ff1-2c46-4d2f-997f-3e9dc9c6ca69@cs.ucla.edu> <20250913145605.8pwzZFk4@steffen%sdaoden.eu> <34c2ddd8-e258-496f-ac97-797c8982d8c3@cs.ucla.edu> <20250913173640.swZGt4kl@steffen%sdaoden.eu> <4d962618-fee0-4cbb-b769-6ca61a96aef4@cs.ucla.edu> <20250916004007.NC_8Vftj@steffen%sdaoden.eu> <20250916122011.vqDfAgh0@steffen%sdaoden.eu> <20250916143658.Sac81LV7@steffen%sdaoden.eu> User-Agent: s-nail v14.9.25-712-gc20034e134-dirty OpenPGP: id=EE19E1C1F2F7054F8D3954D8308964B51883A0DD; url=https://ftp.sdaoden.eu/steffen.asc; preference=signencrypt BlahBlahBlah: Any stupid boy can crush a beetle. But all the professors in the world can make no bugs. X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79433 Cc: 79433@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hello again, and however, Steffen Nurpmeso wrote in <20250916143658.Sac81LV7@steffen%sdaoden.eu>: |Steffen Nurpmeso wrote in | <20250916122011.vqDfAgh0@steffen%sdaoden.eu>: ||Paul Eggert wrote in || : |||On 2025-09-15 17:40, Steffen Nurpmeso wrote: |||> How likely is a miscompilation of gcc 4.2.0? ||| |||I would think not likely, but possible. | ... Do not laugh, but i can actually reproduce building coreutils in my current environment in a way that causes the bug to happen. But i do not know how. But i can give config.log files. I know how now. Just run configure via fakeroot! Yes! Ha!!! And all for free, what a shame. I attach a tar archives of the two different logfiles, maybe some GNU build system guru can figure out more. (btw isn't english funny "[kn]ow [h]ow [n]ow", sounds like Blackfoot's I am on the Run, or something.) --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt) From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 16 14:52:38 2025 Received: (at 79433) by debbugs.gnu.org; 16 Sep 2025 18:52:38 +0000 Received: from localhost ([127.0.0.1]:50287 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uyan8-00066H-4G for submit@debbugs.gnu.org; Tue, 16 Sep 2025 14:52:38 -0400 Received: from sdaoden.eu ([217.144.132.164]:24338) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uyan5-000667-4q for 79433@debbugs.gnu.org; Tue, 16 Sep 2025 14:52:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sdaoden.eu; s=citron; t=1758048754; x=1758715420; h=date:author:from:to:cc:subject: message-id:in-reply-to:references:openpgp:blahblahblah:mime-version: content-type:author:from:subject:date:to:cc:resent-author:resent-date: resent-from:resent-sender:resent-to:resent-cc:resent-reply-to: resent-message-id:in-reply-to:references:mime-version:content-type: content-transfer-encoding:content-disposition:content-id: content-description:message-id:mail-followup-to:openpgp:blahblahblah; bh=VRwNls5aFt1/MZFYunHJXMt5imm9SYBZPFba1Hh9Ors=; b=X/xHF/anJQgEyDUp7TX020rBUOhQAY0icj4cxXX8b+KnugXK2w9jUp8HqxcyMiOM9ep1D4iz YDtMn+CM+kDTOSd8tA2tD00pFfaTgsmjxNP6Qy+Hda48tFxAC9nFaU5hqQwITq7RRET52E9WVu sO30KZnCbXZL+Z8nicdEM68tneCDe2IuFa3WHTLu501mLaZUB1ewmvQLI8hznb0LMOCpCOuuTV YP7Njr2nZv3zoLsi3bs5hcExmpYvnejDXVKBNW06YsFqkEpu7TQpuR9cSIa30p9TK4KquItinC 95NC4o/gSyBGFzSr26ZagdjBgyD4KocrTWf20JGU/Ejj4Bkw== Date: Tue, 16 Sep 2025 20:52:32 +0200 Author: Steffen Nurpmeso From: Steffen Nurpmeso To: Paul Eggert Subject: Re: bug#79433: 9.7: cp(1): lchownat(2/3) fallback bogus? Message-ID: <20250916185232.cx61PkoO@steffen%sdaoden.eu> In-Reply-To: <20250916185103.eUaqIy9H@steffen%sdaoden.eu> References: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> <3fe25ff1-2c46-4d2f-997f-3e9dc9c6ca69@cs.ucla.edu> <20250913145605.8pwzZFk4@steffen%sdaoden.eu> <34c2ddd8-e258-496f-ac97-797c8982d8c3@cs.ucla.edu> <20250913173640.swZGt4kl@steffen%sdaoden.eu> <4d962618-fee0-4cbb-b769-6ca61a96aef4@cs.ucla.edu> <20250916004007.NC_8Vftj@steffen%sdaoden.eu> <20250916122011.vqDfAgh0@steffen%sdaoden.eu> <20250916143658.Sac81LV7@steffen%sdaoden.eu> <20250916185103.eUaqIy9H@steffen%sdaoden.eu> User-Agent: s-nail v14.9.25-712-gc20034e134-dirty OpenPGP: id=EE19E1C1F2F7054F8D3954D8308964B51883A0DD; url=https://ftp.sdaoden.eu/steffen.asc; preference=signencrypt BlahBlahBlah: Any stupid boy can crush a beetle. But all the professors in the world can make no bugs. MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=Fc9qN2e0uXOFwJTTDulDC8L8g44d1CKBzdwN=-=" X-Debbugs-Envelope-To: 79433 Cc: 79433@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" This is a multi-part message in MIME format. --=-=Fc9qN2e0uXOFwJTTDulDC8L8g44d1CKBzdwN=-= Content-Disposition: inline Content-ID: <20250916185232.1Pr0zBS9@steffen%sdaoden.eu> Content-Type: text/plain; charset="us-ascii" Steffen Nurpmeso wrote in <20250916185103.eUaqIy9H@steffen%sdaoden.eu>: |Steffen Nurpmeso wrote in | <20250916143658.Sac81LV7@steffen%sdaoden.eu>: ||Steffen Nurpmeso wrote in || <20250916122011.vqDfAgh0@steffen%sdaoden.eu>: |||Paul Eggert wrote in ||| : ||||On 2025-09-15 17:40, Steffen Nurpmeso wrote: ||||> How likely is a miscompilation of gcc 4.2.0? |||| ||||I would think not likely, but possible. || ... |But i can give config.log files. ... Sorry, forgot those. --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt) --=-=Fc9qN2e0uXOFwJTTDulDC8L8g44d1CKBzdwN=-= Content-Disposition: attachment; filename="logfiles.tar.lz" Content-Type: application/x-lzip Content-Transfer-Encoding: base64 Content-ID: <20250916185232.Dnp7F55V@steffen%sdaoden.eu> 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 --=-=Fc9qN2e0uXOFwJTTDulDC8L8g44d1CKBzdwN=-=-- From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 16 15:07:52 2025 Received: (at 79433) by debbugs.gnu.org; 16 Sep 2025 19:07:52 +0000 Received: from localhost ([127.0.0.1]:50349 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uyb1r-0006wP-U2 for submit@debbugs.gnu.org; Tue, 16 Sep 2025 15:07:52 -0400 Received: from mail.cs.ucla.edu ([131.179.128.66]:42958) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uyb1p-0006w8-Dl for 79433@debbugs.gnu.org; Tue, 16 Sep 2025 15:07:50 -0400 Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id D95AE3C306902; Tue, 16 Sep 2025 12:07:42 -0700 (PDT) Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10032) with ESMTP id z3rAW_rpRgT8; Tue, 16 Sep 2025 12:07:42 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id B22E93C2E8B44; Tue, 16 Sep 2025 12:07:42 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.cs.ucla.edu B22E93C2E8B44 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.ucla.edu; s=9D0B346E-2AEB-11ED-9476-E14B719DCE6C; t=1758049662; bh=JpottsL4MqlNkdNQdIlt9O/tRAP85LkBzPdKXG6E1bo=; h=Message-ID:Date:MIME-Version:To:From; b=VB0+GdvyQchvx56NndSsXkjqFOhfgBB8SYyxaPmj1obiGBryzT/jN/O8b3vKo1634 m2JkDzdBmRQo/CztiEKQFYiRpVHnBb9NaB2q5fnqiZq9y20tfPkokXGCC570kPLB64 M9ajUbhmocNe7q+cPmEZWbrbCsLLyavcCoo1pVX+BH4m/oas/Q8HDaDFPBOz01E/bj a+Yo0BLJuVGPOQdRJCGdyBMvPl0PEyFVlHmMbb5E8CRWNRut+PPetz2Lf959PaoNBT jY6p2b2arnGLjpXJ7VXSYCH+4fzJ9BM8+Dngo37k28n75y0v22lRg7ovJB1djDHmNk i8r2Znx5AapjQ== X-Virus-Scanned: amavis at mail.cs.ucla.edu Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10026) with ESMTP id YYUaxY7dNb7n; Tue, 16 Sep 2025 12:07:42 -0700 (PDT) Received: from penguin.cs.ucla.edu (47-154-17-226.fdr01.snmn.ca.ip.frontiernet.net [47.154.17.226]) by mail.cs.ucla.edu (Postfix) with ESMTPSA id 93DCD3C306902; Tue, 16 Sep 2025 12:07:42 -0700 (PDT) Message-ID: <1a4d6b04-595b-4717-a64d-1b5b555fae31@cs.ucla.edu> Date: Tue, 16 Sep 2025 12:07:42 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#79433: 9.7: cp(1): lchownat(2/3) fallback bogus? To: Steffen Nurpmeso References: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> <3fe25ff1-2c46-4d2f-997f-3e9dc9c6ca69@cs.ucla.edu> <20250913145605.8pwzZFk4@steffen%sdaoden.eu> <34c2ddd8-e258-496f-ac97-797c8982d8c3@cs.ucla.edu> <20250913173640.swZGt4kl@steffen%sdaoden.eu> <4d962618-fee0-4cbb-b769-6ca61a96aef4@cs.ucla.edu> <20250916004007.NC_8Vftj@steffen%sdaoden.eu> <20250916122011.vqDfAgh0@steffen%sdaoden.eu> <20250916143658.Sac81LV7@steffen%sdaoden.eu> Content-Language: en-US From: Paul Eggert Organization: UCLA Computer Science Department In-Reply-To: <20250916143658.Sac81LV7@steffen%sdaoden.eu> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79433 Cc: 79433@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2025-09-16 07:36, Steffen Nurpmeso wrote: > My enthusiasm is hereby extinct Yeah, it's really hard to figure out what went wrong, given that all we have is a stripped executable that may not have be built correctly for whatever reason. One possibility is some low-level problem with the dynamic linker. So you can ignore the rest of this email if you like. > at copy.c:3106 since i see > > unlinkat > readlink@plt > symlinkat@plt > free > lstat@plt [hmm where; lchownat fallback?] It could be from lib/fchownat.c:106, if CHOWN_TRAILING_SLASH_BUG is defined. However, I'd be surprised if this were the case, as glibc doesn't have that bug as far as I know. > lstat64 > fstatat64 > lchown@plt > lchown > > Thereafter only 10 "??" stepi in between resolved lchown and > > lchmod@plt > fchmodat If 'cp' was linked correctly, I don't see any way there could be only 10 insns between resolved lchown (presumably called from src/copy.c:3152 via lib/openat.h:77) and any call to lchmod/fchmodat. From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 16 15:21:56 2025 Received: (at 79433) by debbugs.gnu.org; 16 Sep 2025 19:21:56 +0000 Received: from localhost ([127.0.0.1]:50457 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uybFT-0007xm-Iy for submit@debbugs.gnu.org; Tue, 16 Sep 2025 15:21:55 -0400 Received: from mail.cs.ucla.edu ([131.179.128.66]:43812) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uybFQ-0007xN-Pp for 79433@debbugs.gnu.org; Tue, 16 Sep 2025 15:21:53 -0400 Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id 7D0583C306902; Tue, 16 Sep 2025 12:21:46 -0700 (PDT) Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10032) with ESMTP id DMz4sKi71m6I; Tue, 16 Sep 2025 12:21:46 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id 55C6C3C306903; Tue, 16 Sep 2025 12:21:46 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.cs.ucla.edu 55C6C3C306903 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.ucla.edu; s=9D0B346E-2AEB-11ED-9476-E14B719DCE6C; t=1758050506; bh=Rag+Fc0NpWUSZD6tVtdcKiWhwD7r6wUSSvdjeDpN3Hw=; h=Message-ID:Date:MIME-Version:To:From; b=PR3ieW+DEDVJMxVKL6KlsDAYBEDVlm5UgLEL/M9B0AGsq5yX3fv99BtzmlZUepxJO gvBoY0+sPTrCMD2jE2MZQUmmEgex/Pp3t1uPRXn7lOl8pB77qeHKWo/VoJcOgffyfc YeykVnvU7dVW/yueOXaGYQY4JhQVtEO1ALYdKqTWynXPRFfuB5Pi9Ei0N1QkYFmkuf Ea7DurrVYsX0oCg9wg/HrZ3pUaNrKoh7egfQZq8XFSOLJxARz9fBUUtAFD7Y12yV2j yDAgpZqMGRIZm/jt8Z1OL6jr56K1N1ZUOq2lHJUoEPCWuNHJdge2W8SSeDzvEuVxg3 bjqlqnD2S0erg== X-Virus-Scanned: amavis at mail.cs.ucla.edu Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10026) with ESMTP id o0yb90GTbIOk; Tue, 16 Sep 2025 12:21:46 -0700 (PDT) Received: from penguin.cs.ucla.edu (47-154-17-226.fdr01.snmn.ca.ip.frontiernet.net [47.154.17.226]) by mail.cs.ucla.edu (Postfix) with ESMTPSA id 3559A3C306902; Tue, 16 Sep 2025 12:21:46 -0700 (PDT) Message-ID: Date: Tue, 16 Sep 2025 12:21:46 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#79433: 9.7: cp(1): lchownat(2/3) fallback bogus? To: Steffen Nurpmeso References: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> <3fe25ff1-2c46-4d2f-997f-3e9dc9c6ca69@cs.ucla.edu> <20250913145605.8pwzZFk4@steffen%sdaoden.eu> <34c2ddd8-e258-496f-ac97-797c8982d8c3@cs.ucla.edu> <20250913173640.swZGt4kl@steffen%sdaoden.eu> <4d962618-fee0-4cbb-b769-6ca61a96aef4@cs.ucla.edu> <20250916004007.NC_8Vftj@steffen%sdaoden.eu> <20250916122011.vqDfAgh0@steffen%sdaoden.eu> <20250916143658.Sac81LV7@steffen%sdaoden.eu> <20250916185103.eUaqIy9H@steffen%sdaoden.eu> Content-Language: en-US From: Paul Eggert Organization: UCLA Computer Science Department In-Reply-To: <20250916185103.eUaqIy9H@steffen%sdaoden.eu> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79433 Cc: 79433@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2025-09-16 11:51, Steffen Nurpmeso wrote: > I attach a tar archives of the two different logfiles, maybe some > GNU build system guru can figure out more. The first difference in those logs occurs when 'configure' compiles and run the following program. It should succeed (exit status 0) but in your fakeroot build it fails and 'configure' then assumes chown needs replacement. Can you figure out why the test program fails (exit status 5) in the fakeroot environment? You can use strace to help find out. Once we figure this out, it may explain the other differences in the logs. #include #include #include #include #include int main (void) { struct stat st1, st2; if (close (creat ("conftest.file", 0600))) return 1; if (stat ("conftest.file", &st1)) return 2; sleep (1); if (chown ("conftest.file", st1.st_uid, st1.st_gid)) return 3; if (stat ("conftest.file", &st2)) return 4; if (st2.st_ctime <= st1.st_ctime) return 5; } Here's what strace says on my Fedora 42 host: creat("conftest.file", 0600) = 3 close(3) = 0 newfstatat(AT_FDCWD, "conftest.file", {st_mode=S_IFREG|0600, st_size=0, ...}, 0) = 0 clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=1, tv_nsec=0}, 0x7fffc15bb1f0) = 0 chown("conftest.file", 1000, 1000) = 0 newfstatat(AT_FDCWD, "conftest.file", {st_mode=S_IFREG|0600, st_size=0, ...}, 0) = 0 exit_group(0) = ? From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 17 12:46:20 2025 Received: (at 79433) by debbugs.gnu.org; 17 Sep 2025 16:46:20 +0000 Received: from localhost ([127.0.0.1]:57301 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uyvIR-0005B8-TA for submit@debbugs.gnu.org; Wed, 17 Sep 2025 12:46:20 -0400 Received: from sdaoden.eu ([217.144.132.164]:48222) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uyvIO-0005An-5m for 79433@debbugs.gnu.org; Wed, 17 Sep 2025 12:46:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sdaoden.eu; s=citron; t=1758127573; x=1758794239; h=date:author:from:to:cc:subject: message-id:in-reply-to:references:openpgp:blahblahblah:author:from: subject:date:to:cc:resent-author:resent-date:resent-from:resent-sender: resent-to:resent-cc:resent-reply-to:resent-message-id:in-reply-to: references:mime-version:content-type:content-transfer-encoding: content-disposition:content-id:content-description:message-id: mail-followup-to:openpgp:blahblahblah; bh=dXil2eJLyD46sCxvvKIUj/NfSbdniIX2jb+/13eTo5c=; b=Sws2qlP6HoMkkATSzyimdmJuaSZyvmjrkJ+dFnN34mdENfDSBYmemep0L+Acb8/73u77eLTC AxMzm9auzsTKgY4XNNTEjJSKGE0MKeeiZUmOPYeOojeZ6a7/K4LBrPOwUZfDNk9OE+1vI6PJku 1I+SiYoANiRY+XWdxOZV1jnB0OlFwL76H78eoVcgausseNX0GmemkI2LkRXADUm20sEEtNzqYa oSoQKJcj11alwHzb2R4VDtZxLj1/kaDgnnBpxcZQGl1TvEHUNMb06fLSAVg/Enz1PPJUnEeRL/ EQAeMjQsW33rDWPUiW1GrIZa2mO53/S11koF/jJueRzB5hQQ== Date: Wed, 17 Sep 2025 18:46:11 +0200 Author: Steffen Nurpmeso From: Steffen Nurpmeso To: Paul Eggert Subject: Re: bug#79433: 9.7: cp(1): lchownat(2/3) fallback bogus? Message-ID: <20250917164611.JO87MYf4@steffen%sdaoden.eu> In-Reply-To: References: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> <3fe25ff1-2c46-4d2f-997f-3e9dc9c6ca69@cs.ucla.edu> <20250913145605.8pwzZFk4@steffen%sdaoden.eu> <34c2ddd8-e258-496f-ac97-797c8982d8c3@cs.ucla.edu> <20250913173640.swZGt4kl@steffen%sdaoden.eu> <4d962618-fee0-4cbb-b769-6ca61a96aef4@cs.ucla.edu> <20250916004007.NC_8Vftj@steffen%sdaoden.eu> <20250916122011.vqDfAgh0@steffen%sdaoden.eu> <20250916143658.Sac81LV7@steffen%sdaoden.eu> <20250916185103.eUaqIy9H@steffen%sdaoden.eu> User-Agent: s-nail v14.9.25-712-gc20034e134-dirty OpenPGP: id=EE19E1C1F2F7054F8D3954D8308964B51883A0DD; url=https://ftp.sdaoden.eu/steffen.asc; preference=signencrypt BlahBlahBlah: Any stupid boy can crush a beetle. But all the professors in the world can make no bugs. X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79433 Cc: 79433@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hello. Paul Eggert wrote in : |On 2025-09-16 11:51, Steffen Nurpmeso wrote: |> I attach a tar archives of the two different logfiles, maybe some |> GNU build system guru can figure out more. | |The first difference in those logs occurs when 'configure' compiles and |run the following program. It should succeed (exit status 0) but in your Sure. (Just wondering, the final cp(1) should work for all configurable cases if config succeeds; the bug report as such was that "cp -a symlink symlink" causes a "set -e" build script to fail due to the exit status.) |fakeroot build it fails and 'configure' then assumes chown needs fakeroot is btw Version: 1.37.1.2 URL: http://packages.debian.org/unstable/utils/fakeroot |replacement. Can you figure out why the test program fails (exit status |5) in the fakeroot environment? You can use strace to help find out. |Once we figure this out, it may explain the other differences in the logs. | | #include | #include | #include | #include | #include | | int | main (void) | { | struct stat st1, st2; | if (close (creat ("conftest.file", 0600))) return 1; | if (stat ("conftest.file", &st1)) return 2; | sleep (1); | if (chown ("conftest.file", st1.st_uid, st1.st_gid)) return 3; | if (stat ("conftest.file", &st2)) return 4; | if (st2.st_ctime <= st1.st_ctime) return 5; |} | |Here's what strace says on my Fedora 42 host: | | creat("conftest.file", 0600) = 3 | close(3) = 0 | newfstatat(AT_FDCWD, "conftest.file", {st_mode=S_IFREG|0600, |st_size=0, ...}, 0) = 0 | clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=1, tv_nsec=0}, |0x7fffc15bb1f0) = 0 | chown("conftest.file", 1000, 1000) = 0 | newfstatat(AT_FDCWD, "conftest.file", {st_mode=S_IFREG|0600, |st_size=0, ...}, 0) = 0 | exit_group(0) = ? But that is not via fakeroot? I get the very result here. With fakeroot, i have instrumented it, and the above: struct stat st1, st2; if (close (creat ("conftest.file", 0600))) return 1; fprintf(stderr, "AFTER CLOSE\n"); if (stat ("conftest.file", &st1)) return 2; fprintf(stderr, "AFTER STAT\n"); sleep (1); if (chown ("conftest.file", st1.st_uid, st1.st_gid)) return 3; fprintf(stderr, "AFTER CHOWN\n"); if (stat ("conftest.file", &st2)) return 4; fprintf(stderr, "AFTER STAT 2\n"); if (st2.st_ctime == st1.st_ctime) return 6; if (st2.st_ctime <= st1.st_ctime) return 5; fprintf(stderr, "AFTER TIMECMP\n"); return 0; and i show my complete prompt which includes $? AFTER CLOSE FAKEROOT: r=1092, received message type=1, message=3 FAKEROOT: process stat oldstate=dev:ino=(21:285264), mode=0100600, own=(1000,1000), nlink=1, rdev=0 FAKEROOT: (previously unknown) AFTER STAT chown path conftest.file owner 0 group 0 ==lchown -1 1 Operation not permitted FAKEROOT: r=1092, received message type=1, message=0 AFTER CHOWN FAKEROOT: process chown dev:ino=(21:285264), mode=0100600, own=(0,0), nlink=1, rdev=0 FAKEROOT: insert_or_overwrite unknown stat: dev:ino=(21:285264), mode=0100600, own=(0,0), nlink=1, rdev=0 FAKEROOT: r=1092, received message type=1, message=3 FAKEROOT: process stat oldstate=dev:ino=(21:285264), mode=0100600, own=(1000,1000), nlink=1, rdev=0 FAKEROOT: (previously known): fake=dev:ino=(21:285264), mode=0100600, own=(0,0), nlink=1, rdev=0 AFTER STAT 2 #?6|kent:tmp$ So creat("conftest.file", 0600) = 3 close(3) = 0 stat("conftest.file", {st_mode=S_IFREG|0600, st_size=0, ...}) = 0 clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=1, tv_nsec=0}, 0x7ffeff1f6a10) = 0 stat("conftest.file", {st_mode=S_IFREG|0600, st_size=0, ...}) = 0 lchown("conftest.file", 0, 0) = -1 EPERM (Operation not permitted) Fakeroot fails to chown but ignores the error, yet the failed system call avoids getting the filestamp updated. Maybe fakeroot should "simply" perform the task with the original user and group, which are available, in order to make timestamp updates happen? #ifdef LIBFAKEROOT_DEBUGGING if (fakeroot_debug) { fprintf(stderr, "chown path %s owner %d group %d\n", path, owner, group); } #endif /* LIBFAKEROOT_DEBUGGING */ #ifdef LCHOWN_SUPPORT /*chown(sym-link) works on the target of the symlink if lchown is present and enabled.*/ r=INT_NEXT_STAT(path, &st); #else /*chown(sym-link) works on the symlink itself, use lstat: */ r=INT_NEXT_LSTAT(path, &st); #endif if(r) return r; st.st_uid=owner; st.st_gid=group; INT_SEND_STAT(&st,chown_func); if(!dont_try_chown()) r=next_lchown(path,owner,group); else r=0; if(r&&(errno==EPERM)) r=0; Would be a thing to protect against these conflicts. Well, ok, this is a thing, fakeroot warns against using it when running GNU autoconf systems, yet i use it to run the package manager as such (;-} Yeah, the problem is that the package footprints are checked, and then owner/group mismatches kill. Unfortunately the "make" and "make install" rules are run in a single "build()" step by this package manager .. maybe one of the very few not so nice decisions. All i could do otherwise is UID mapping inside this "filesystem overlay namespace container", but this is a hard thing to get right .. if at all. It has been around five years since i created this environment for package building on this Linux distro, yours is the first which fails. I have forgotten why i did not use UID mapping stuff. It is also, maybe, that i do *not* want to be root in the namespace. One reason why i do not use a VM, or LXC (or what its name was) or docker or all that. Simple mostly read-only overlayfs that then hosts ip netns exec ${NETNS} \ /usr/bin/env -i TERM=${TERM} \ /usr/bin/unshare --ipc --uts --pid --fork --mount --mount-proc ${kill_child} \ ${rooter} /init where /init in this case effectively is ${SUPER} -u ports /usr/bin/nice -n +20 fakeroot pkgmk ""${@} where $SUPER is doas(1) (or sudo or super that existed around Y2K and has not seen for long even via Google). Having said all that, and fakeroot aside, GNU cp(1) should not exit error if it fails to preserve permissions for a symbolic link #?1|kent:tmp$ rm xc #?0|kent:tmp$ /bin/cp -a xb xc cp: failed to preserve ownership for xc: Operation not supported #?1|kent:tmp$ ls -l xa xb xc -rw-r----- 1 steffen steffen 0 Sep 16 19:48 xa lrwxrwxrwx 1 steffen steffen 2 Sep 17 18:44 xc -> xa lrwxrwxrwx 1 steffen steffen 2 Sep 16 19:48 xb -> xa that way, so some fallback path in GNU coreutils is "bogus". --End of --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt) From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 17 13:26:58 2025 Received: (at 79433) by debbugs.gnu.org; 17 Sep 2025 17:26:58 +0000 Received: from localhost ([127.0.0.1]:57369 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uyvvm-0007Wp-1o for submit@debbugs.gnu.org; Wed, 17 Sep 2025 13:26:58 -0400 Received: from sdaoden.eu ([217.144.132.164]:37298) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uyvvj-0007WW-Tj for 79433@debbugs.gnu.org; Wed, 17 Sep 2025 13:26:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sdaoden.eu; s=citron; t=1758130013; x=1758796679; h=date:author:from:to:cc:subject: message-id:in-reply-to:references:openpgp:blahblahblah:author:from: subject:date:to:cc:resent-author:resent-date:resent-from:resent-sender: resent-to:resent-cc:resent-reply-to:resent-message-id:in-reply-to: references:mime-version:content-type:content-transfer-encoding: content-disposition:content-id:content-description:message-id: mail-followup-to:openpgp:blahblahblah; bh=TFDZeoiyNta9B7/ptBfmV2ZE6ukuZq8GHiMVM9rZmyg=; b=f7adwbM1TzN6jSBecGsHw4CLNgI0qthxCTrwnB9aZU8bU2FeX71G4CENL3SwANC2kZ/9AuP1 81qHYt8Qa9H+HDNAwnhH2XNzIBlxo3Scc0yxd3vMFSbdHd2+0LDH2Ia4LxjD9pQ0RRl02nqrQu lkQtqTwoSZ/YjaW3QdDTnAmlgBf8eCkFwXYJ0X2g5K21P254ddKEVZKYv64PKlKbJDAMTOxPDQ ptgFNPI4k/DmaZJZpwAkIoTgAYNPIXrFamnvvolZWrrs43YfYqNG5hvzv/acDaCYdMmB7aPghC StE7XBqW3MF3v+B7TlhCH4gRkpz83d2fO76WF6jBYNP6rw0A== Date: Wed, 17 Sep 2025 19:26:52 +0200 Author: Steffen Nurpmeso From: Steffen Nurpmeso To: Paul Eggert Subject: Re: bug#79433: 9.7: cp(1): lchownat(2/3) fallback bogus? Message-ID: <20250917172652.UrAFErr8@steffen%sdaoden.eu> In-Reply-To: <20250917164611.JO87MYf4@steffen%sdaoden.eu> References: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> <3fe25ff1-2c46-4d2f-997f-3e9dc9c6ca69@cs.ucla.edu> <20250913145605.8pwzZFk4@steffen%sdaoden.eu> <34c2ddd8-e258-496f-ac97-797c8982d8c3@cs.ucla.edu> <20250913173640.swZGt4kl@steffen%sdaoden.eu> <4d962618-fee0-4cbb-b769-6ca61a96aef4@cs.ucla.edu> <20250916004007.NC_8Vftj@steffen%sdaoden.eu> <20250916122011.vqDfAgh0@steffen%sdaoden.eu> <20250916143658.Sac81LV7@steffen%sdaoden.eu> <20250916185103.eUaqIy9H@steffen%sdaoden.eu> <20250917164611.JO87MYf4@steffen%sdaoden.eu> User-Agent: s-nail v14.9.25-712-gc20034e134-dirty OpenPGP: id=EE19E1C1F2F7054F8D3954D8308964B51883A0DD; url=https://ftp.sdaoden.eu/steffen.asc; preference=signencrypt BlahBlahBlah: Any stupid boy can crush a beetle. But all the professors in the world can make no bugs. X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79433 Cc: 79433@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Steffen Nurpmeso wrote in <20250917164611.JO87MYf4@steffen%sdaoden.eu>: ... |Fakeroot fails to chown but ignores the error, yet the failed |system call avoids getting the filestamp updated. Maybe fakeroot |should "simply" perform the task with the original user and group, |which are available, in order to make timestamp updates happen? ... i asked clint(AT)debian thus If intercepted system calls try to chown() to the very user and group that fakeroot reported that a file has, and the stat cache gives a hot entry for the file thus, wouldn't it make sense to assume that "something like the above" is the desire of the programmer? "Faking" the operation in such a context does not appear overly grazy to me? What do you think? --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt) From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 18 00:58:19 2025 Received: (at 79433) by debbugs.gnu.org; 18 Sep 2025 04:58:19 +0000 Received: from localhost ([127.0.0.1]:59366 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uz6ip-0006W7-H8 for submit@debbugs.gnu.org; Thu, 18 Sep 2025 00:58:19 -0400 Received: from mail.cs.ucla.edu ([131.179.128.66]:40608) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uz6ik-0006VP-Ic for 79433@debbugs.gnu.org; Thu, 18 Sep 2025 00:58:16 -0400 Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id C2B223C010844; Wed, 17 Sep 2025 21:58:07 -0700 (PDT) Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10032) with ESMTP id oWUDzaIKz-Aq; Wed, 17 Sep 2025 21:58:07 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id 9BAF43C306934; Wed, 17 Sep 2025 21:58:07 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.cs.ucla.edu 9BAF43C306934 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.ucla.edu; s=9D0B346E-2AEB-11ED-9476-E14B719DCE6C; t=1758171487; bh=Ce2wB++4Wf11aE3qkYwnNpicPn2lp442iaiYMJi8GtE=; h=Message-ID:Date:MIME-Version:To:From; b=IZ3dU4Huf9deO3cjchL1nyGdVkX0k4l+yX6/2HCDwl15QDfL2LO056ZPulY8YN/Cd QR6SR2Qz3XplLfzhlqwBuHt7yxk5kCCgOa6U+tpAfEtbkNax9k9N4YN3N+f/rs6SyO tfN2m3SiCe9CjMzjlQGfreV5FEq9DU6uX3ieyZHBQsvjqKMbnOl++595I8/PqK9n1Z fIKbr+mrgsGvEZVfL5FFURo2mNkHe1DOiwEgsrUJIDBPWpFMncb8txu6vsHpc+6khF r+G0Y9bAq1gTsn79bsKDmZoZT4cRKiKRuoYtCA5FMe7EbbYHztkbGgXseKk3q68FPR eDp26T36o+viQ== X-Virus-Scanned: amavis at mail.cs.ucla.edu Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10026) with ESMTP id zz0vW21BLD6r; Wed, 17 Sep 2025 21:58:07 -0700 (PDT) Received: from penguin.cs.ucla.edu (47-154-17-226.fdr01.snmn.ca.ip.frontiernet.net [47.154.17.226]) by mail.cs.ucla.edu (Postfix) with ESMTPSA id 7F1143C010844; Wed, 17 Sep 2025 21:58:07 -0700 (PDT) Message-ID: Date: Wed, 17 Sep 2025 21:58:07 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#79433: 9.7: cp(1): lchownat(2/3) fallback bogus? To: Steffen Nurpmeso References: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> <3fe25ff1-2c46-4d2f-997f-3e9dc9c6ca69@cs.ucla.edu> <20250913145605.8pwzZFk4@steffen%sdaoden.eu> <34c2ddd8-e258-496f-ac97-797c8982d8c3@cs.ucla.edu> <20250913173640.swZGt4kl@steffen%sdaoden.eu> <4d962618-fee0-4cbb-b769-6ca61a96aef4@cs.ucla.edu> <20250916004007.NC_8Vftj@steffen%sdaoden.eu> <20250916122011.vqDfAgh0@steffen%sdaoden.eu> <20250916143658.Sac81LV7@steffen%sdaoden.eu> <20250916185103.eUaqIy9H@steffen%sdaoden.eu> <20250917164611.JO87MYf4@steffen%sdaoden.eu> Content-Language: en-US From: Paul Eggert Organization: UCLA Computer Science Department In-Reply-To: <20250917164611.JO87MYf4@steffen%sdaoden.eu> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79433 Cc: 79433@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2025-09-17 09:46, Steffen Nurpmeso wrote: > (Just wondering, the final cp(1) should work for all > configurable cases if config succeeds; That sounds pretty ambitious! The main goal here is merely for coreutils to work on practical platforms. > But that is not via fakeroot? No, I'm not using fakeroot. I don't recommend using fakeroot for 'configure', for all the usual reasons. > Fakeroot fails to chown but ignores the error, yet the failed > system call avoids getting the filestamp updated. Clearly a bug in fakeroot. POSIX says the file timestamp must be updated. > i do > *not* want to be root in the namespace. That's fine. 'configure' need not be run as root. I don't recommend running it as root. > Having said all that, and fakeroot aside, GNU cp(1) should not > exit error if it fails to preserve permissions for a symbolic link GNU cp does not try to change the permissions of a symlink. > #?0|kent:tmp$ /bin/cp -a xb xc > cp: failed to preserve ownership for xc: Operation not supported That's not preserving permissions; it's preserving ownership. It's a different system call, with quite different semantics. From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 18 08:57:18 2025 Received: (at 79433) by debbugs.gnu.org; 18 Sep 2025 12:57:18 +0000 Received: from localhost ([127.0.0.1]:60879 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uzECM-00039k-5v for submit@debbugs.gnu.org; Thu, 18 Sep 2025 08:57:18 -0400 Received: from sdaoden.eu ([217.144.132.164]:54536) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uzECJ-00039Y-4Q for 79433@debbugs.gnu.org; Thu, 18 Sep 2025 08:57:16 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sdaoden.eu; s=citron; t=1758200231; x=1758866897; h=date:author:from:to:cc:subject: message-id:in-reply-to:references:openpgp:blahblahblah:author:from: subject:date:to:cc:resent-author:resent-date:resent-from:resent-sender: resent-to:resent-cc:resent-reply-to:resent-message-id:in-reply-to: references:mime-version:content-type:content-transfer-encoding: content-disposition:content-id:content-description:message-id: mail-followup-to:openpgp:blahblahblah; bh=ybLBve6KvS53+uZhs4GDhNGi4vrLFnzVzue6TGzmVdY=; b=Dw25yUSiPQQ49eRGhqPTYt1qRopQ4eG9IC1AORCXF7D5x7vw9fTqq8+wk21+d5eGxp9n8NXN ECK1rlkYc3bPyadrSlXdJtAQL2e7xNzcjE7bIMwyh47zYiQ3siivjrPdMTYVqbb6l+jROtzfpm 9qt0OmT/N1QLiQwXVsBDysWUteI8LfS4wFPp8P7Ycx0hy5fvDiUII28ZkQ8rWNH9LcMJllklna AK3HX7J3shoEwDnCygd3w7zzNnC+xYpOr9puo7kfFL2TtWUbYerSPKcscpKhKd/DArInFcO0BS MFv+Q78aDHzug5X6NYSy6iMdC6mwd68LBgTth/x/4PTV626A== Date: Thu, 18 Sep 2025 14:57:10 +0200 Author: Steffen Nurpmeso From: Steffen Nurpmeso To: Paul Eggert Subject: Re: bug#79433: 9.7: cp(1): lchownat(2/3) fallback bogus? Message-ID: <20250918125710.WAELlo5o@steffen%sdaoden.eu> In-Reply-To: References: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> <3fe25ff1-2c46-4d2f-997f-3e9dc9c6ca69@cs.ucla.edu> <20250913145605.8pwzZFk4@steffen%sdaoden.eu> <34c2ddd8-e258-496f-ac97-797c8982d8c3@cs.ucla.edu> <20250913173640.swZGt4kl@steffen%sdaoden.eu> <4d962618-fee0-4cbb-b769-6ca61a96aef4@cs.ucla.edu> <20250916004007.NC_8Vftj@steffen%sdaoden.eu> <20250916122011.vqDfAgh0@steffen%sdaoden.eu> <20250916143658.Sac81LV7@steffen%sdaoden.eu> <20250916185103.eUaqIy9H@steffen%sdaoden.eu> <20250917164611.JO87MYf4@steffen%sdaoden.eu> User-Agent: s-nail v14.9.25-712-gc20034e134-dirty OpenPGP: id=EE19E1C1F2F7054F8D3954D8308964B51883A0DD; url=https://ftp.sdaoden.eu/steffen.asc; preference=signencrypt BlahBlahBlah: Any stupid boy can crush a beetle. But all the professors in the world can make no bugs. X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79433 Cc: 79433@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Paul Eggert wrote in : |On 2025-09-17 09:46, Steffen Nurpmeso wrote: |> (Just wondering, the final cp(1) should work for all |> configurable cases if config succeeds; | |That sounds pretty ambitious! The main goal here is merely for coreutils |to work on practical platforms. I think there are / have been filesystems with a time resolution smaller than one second. ... |> #?0|kent:tmp$ /bin/cp -a xb xc |> cp: failed to preserve ownership for xc: Operation not supported | |That's not preserving permissions; it's preserving ownership. It's a |different system call, with quite different semantics. The GNU autoconf result of coreutils / cp results in a code path that does not work the way it should. That much is plain, and that i reported. I am not looking into GNU autoconf aka the conclusions of GNU coreutils and the resulting coreutils / gnulib / GNU libc module / overlay / patchwork fusion which results. Also since i went several times for you in the past and have been dismissed drastically, just like again this time. I also disagree with "practical platforms" given that the effective log difference seems to be (from a diff(1) glance) +#define CHOWN_CHANGE_TIME_BUG 1 +#define MKNOD_FIFO_BUG 1 The latter seems to come from configure:65539: checking whether mknod can create fifo without root privileges ... configure:65580: $? = 99 ... | /* Indeterminate for super-user, assume no. Why are you running | configure as root, anyway? */ | if (geteuid () == ROOT_UID) return 99; | if (mknod ("conftest.fifo", S_IFIFO | 0600, 0)) return 2; | ; | return 0; | } configure:65601: result: no Not a bug. All in all the two above, plus some getgroups() difference should not result in a disfunctional cp(1) i would think. --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt) From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 18 10:37:05 2025 Received: (at 79433) by debbugs.gnu.org; 18 Sep 2025 14:37:05 +0000 Received: from localhost ([127.0.0.1]:33425 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uzFkv-0000mc-1z for submit@debbugs.gnu.org; Thu, 18 Sep 2025 10:37:05 -0400 Received: from sdaoden.eu ([217.144.132.164]:28792) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uzFkr-0000m8-4a for 79433@debbugs.gnu.org; Thu, 18 Sep 2025 10:37:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sdaoden.eu; s=citron; t=1758206219; x=1758872885; h=date:author:from:to:cc:subject: message-id:in-reply-to:references:openpgp:blahblahblah:author:from: subject:date:to:cc:resent-author:resent-date:resent-from:resent-sender: resent-to:resent-cc:resent-reply-to:resent-message-id:in-reply-to: references:mime-version:content-type:content-transfer-encoding: content-disposition:content-id:content-description:message-id: mail-followup-to:openpgp:blahblahblah; bh=D/1ZcxV1uP7B+7mIBWziFcTn6b745qqmIrvwEeFu8q4=; b=NqWehE72EZhdLmrY2yfI0aTOMLa+vKQ1rzt+7x+EtxcHXcJ6miUAQBVVvyNdraBOD5dFOXK/ q8lqYBZU49WbLeCu1QPa5vXUa9RWs9gjdP8gfI0npGbAldsD/CZ/agWtoOVNdrdDzdSKOtib8g gcQeQd1pMeT8JoGIOnf2Z/j9TzMVT05UeptGEaBnc4v7BHSIdaA9H5iO4m3BJkmtlH10wfFQjk wSzvy9NObN3vpGCIBbH7k1wmmE5ty2dZ9UVHRywGbMvlyPJMKhcfAK5MCsRFg7v99RBMedSlQ5 K7OCWR3iVUtN84xRBwx6eiSmehZMWKbw8cMOT2sqqtofPnzA== Date: Thu, 18 Sep 2025 16:36:57 +0200 Author: Steffen Nurpmeso From: Steffen Nurpmeso To: Steffen Nurpmeso Subject: Re: bug#79433: 9.7: cp(1): lchownat(2/3) fallback bogus? Message-ID: <20250918143657.tDJn8Z9r@steffen%sdaoden.eu> In-Reply-To: <20250918125710.WAELlo5o@steffen%sdaoden.eu> References: <20250911114933.vMgV9cK3@steffen%sdaoden.eu> <3fe25ff1-2c46-4d2f-997f-3e9dc9c6ca69@cs.ucla.edu> <20250913145605.8pwzZFk4@steffen%sdaoden.eu> <34c2ddd8-e258-496f-ac97-797c8982d8c3@cs.ucla.edu> <20250913173640.swZGt4kl@steffen%sdaoden.eu> <4d962618-fee0-4cbb-b769-6ca61a96aef4@cs.ucla.edu> <20250916004007.NC_8Vftj@steffen%sdaoden.eu> <20250916122011.vqDfAgh0@steffen%sdaoden.eu> <20250916143658.Sac81LV7@steffen%sdaoden.eu> <20250916185103.eUaqIy9H@steffen%sdaoden.eu> <20250917164611.JO87MYf4@steffen%sdaoden.eu> <20250918125710.WAELlo5o@steffen%sdaoden.eu> User-Agent: s-nail v14.9.25-712-gc20034e134-dirty OpenPGP: id=EE19E1C1F2F7054F8D3954D8308964B51883A0DD; url=https://ftp.sdaoden.eu/steffen.asc; preference=signencrypt BlahBlahBlah: Any stupid boy can crush a beetle. But all the professors in the world can make no bugs. X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79433 Cc: Paul Eggert , 79433@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Steffen Nurpmeso wrote in <20250918125710.WAELlo5o@steffen%sdaoden.eu>: Sigh. That build system is bogus anyhow, the manual pages are all rebuild when i change a C source file? ... ||> #?0|kent:tmp$ /bin/cp -a xb xc ||> cp: failed to preserve ownership for xc: Operation not supported ... |I also disagree with "practical platforms" given that the |effective log difference seems to be (from a diff(1) glance) | | +#define CHOWN_CHANGE_TIME_BUG 1 | +#define MKNOD_FIFO_BUG 1 ... |All in all the [.] above [.] difference should not \ |result in |a disfunctional cp(1) i would think. I think i would possibly simply discard the return value of the l?chmod() that is used in the fallback path. The statement so we are required to update ctime. Since lchown succeeded, we assume that lchmod will do likewise. But if the system lacks lchmod and lutimes, we are out of luck. Oh well. */ seems a bit wacky given that there is NFS and fuse and maybe more, and then this is inherently racy at first, and then updating the ctime is not as "system-critical" as is the operation itself, changing the owner, and that has already succeeded. Thus i'd say --- coreutils-9.7.old/lib/chown.c 2025-01-01 10:32:29.000000000 +0100 +++ coreutils-9.7/lib/chown.c 2025-09-18 16:32:00.535172071 +0200 @@ -130,7 +130,7 @@ rpl_chown (const char *file, uid_t uid, we assume that chmod will do likewise. Fortunately, on all known systems where a 'no-op' chown skips the ctime update, a 'no-op' chmod still does the trick. */ - result = chmod (file, st.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO + /*result =*/ chmod (file, st.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX)); } # endif --- coreutils-9.7.old/lib/lchown.c 2025-01-01 10:32:29.000000000 +0100 +++ coreutils-9.7/lib/lchown.c 2025-09-18 16:32:03.335172023 +0200 @@ -105,7 +105,7 @@ rpl_lchown (const char *file, uid_t uid, so we are required to update ctime. Since lchown succeeded, we assume that lchmod will do likewise. But if the system lacks lchmod and lutimes, we are out of luck. Oh well. */ - result = lchmod (file, st.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO + /*result =*/ lchmod (file, st.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX)); } # endif Greetings, --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt)