Sticky EOF breaks stream concatenation via dup2 [BZ #23636]

Florian Weimer fweimer@redhat.com
Thu Sep 20 12:28:00 GMT 2018


* Florian Weimer:

> Do we have to revert the fix fpr bug 1190 (which introduces sticky EOF
> for stdio streams)?
>
> We received a bug report that cups-filters is quite broken due to this

The upstream bug: <https://github.com/OpenPrinting/cups-filters/issues/58>

> change, and while reviewing the libio sources, I found evidence that
> what cups-filters does (dup2-ing another descriptor after EOF) was
> once considered supported (in _IO_new_file_underflow):
>
>   fp->_IO_read_end += count;
>   if (count == 0)
>     {
>       /* If a stream is read to EOF, the calling application may
> switch active
> 	 handles.  As a result, our offset cache would no longer be valid, so
> 	 unset it.  */
>       fp->_offset = _IO_pos_BAD;
>       return EOF;
>     }
>
> Usually, when our own testing finds bugs, that's that's just a small
> subset of what the larger user community (many of whom cannot
> recompile their applications) will experience once they upgrade, so
> I'm quite worried about the implications of the fix for bug 1190.

Folks,

do I read the emerging consensus correctly as the following?

glibc should not change (e.g., revert the fix for bug 1190) to paper
over application bugs such as the bug in cups-filters.  Applications
need to be fixed instead.  End users whose applications cannot be fixed
should keep with previous glibc versions.

Thanks,
Florian



More information about the Libc-alpha mailing list