Subject: Re: bug#77800: grep-3.12: write-error-msg test failure on fedora rawhide (f43)

From: Jim Meyering <[email-masked]>
Date: Thu, 17 Apr 2025 22:51:12 -0700

On Thu, Apr 17, 2025 at 10:35 PM Grisha Levit <[email-masked]> wrote:
> On Fri, Apr 18, 2025, 01:18 Jim Meyering <[email-masked]> wrote:
> >
> > On Tue, Apr 15, 2025 at 9:17 PM Jim Meyering <[email-masked]> wrote:
> > ...
> > > We're going to have to revise that code.
> > > The difference I see is that before rawhide, that fclose would fail.
> > > It's perfectly fine for fclose to succeed in this case, as now happens
> > > on rawhide (because with 4k BUFSIZ, the fclose wrote nothing -- the
> > > preceding 4096-byte write is what failed).
> > >
> > > Here's a better patch: (technically, we could factor it somewhat, but
> > > readability would suffer disproportionately)
> >
> > I didn't take the time to find a precise commit, but this bug predates
> > the move from closeout.c to gnulib's close-stdout.c in 2006. As I
> > write this, I'm installing Fedora 42.
> > I'll probably push the attached to gnulib tomorrow:
>
> > Exposed via Fedora 42's new glibc vs grep's --help being precisely
> > 4096 bytes.
>
> AFAICT this is not related to F42 or new glibc, it's just longer help
> text in grep-3.12 + Fedora patch making it even longer.  But you should
> see the same behavior on existing systems with e.g.:
>
>     $ { env printf %4095s; env printf %4096s; } > /dev/full
>     printf: write error: Broken pipe
>     printf: write error

Nice. Thanks. Will adjust the commit log and ChangeLog.
I confirmed that coreutils-9.7's printf with this fix is no longer
susceptible to that failure.

Surprised to find that coreutils-9.5 (fedora 41 stock) works fine:

  $ { /bin/printf %4095s; /bin/printf %4096s; } > /dev/full
  /bin/printf: write error: No space left on device
  /bin/printf: write error: No space left on device